Bleach с socks не дружит, так что нужен чекер коротый чекает и хттп и сокс Charon у меня чето так медленно тупит Заранее спс
Charon, ставь на дедик. Хочешь, чтобы нормально чекалось и все норм определялось? Чарон - твой выбор)
Не буду новую тему создавать Вот при попытке сканить ProxyHunter'oм пишет такое please specify data first
У Чарона главное подобрать таймаут и количество потоков. Если правильно настроить то будет канал по максимуму использовать и не висеть
Чарон главное правельно настроить , кстати если поискать то на ачате можно найти статью о настройке чарона , в приныипе дела 10 минут.
This is a free version. Free version can save up to 5000 good proxies in one time. Professional version can check proxy lists ANY sizes! If you diagnose error(s) in program please send e-mail us. Homepage: http://www.freeproxy.ru/ e-mail: [email protected] этой штукой чекаю
Давно пользуюсь Hell Labs Proxy Checker. Самая навороченная версия - коммерческая, но соответствующий 0day релиз достать не проблема. Под *nix есть всякие чекающие Perl / Python скрипты.
Лично я пользуюсь перловским скриптом, так как сижу под никсами, + с командной строки запускается. Code: #!/usr/bin/perl -w # proxy_check.pl use Getopt::Std; use IO::Handle; use threads; use LWP; my $MAX_THREADS = 10; my $TIMEOUT = 10; my $USAGE_MESSAGE = "Usage: $0 -j <proxy_judge_list> [-c] [-f <proxy_list>] [-n <threads>] [-t <timeout>] [-d <detail output level>] [-v] --version --help\n"; # Отменяем буферизирование STDOUT->autoflush(1); STDERR->autoflush(1); # --------------------------------------------- # Обрабатываем аргументы # --------------------------------------------- our($opt_j,$opt_c,$opt_f,$opt_n,$opt_t,$opt_d,$opt_v); getopts('j:cf:n:t:d:v'); die "$USAGE_MESSAGE" unless $opt_j; $MAX_THREADS = $opt_n if $opt_n; $TIMEOUT = $opt_t if $opt_t; # --------------------------------------------- # открываем файл со списком proxy-jugde, и подготавливаем массив proxy_judge # --------------------------------------------- open (PROXY_JUDGES, $opt_j); my @proxy_judges; # инициализируем массив proxy_judge my $j=0; # счетчик - количество пригодных proxy-judge while (my $line =<PROXY_JUDGES>) { chomp($line); # Пропуск комметариев и пустых строк next if $line =~ /^#/; next if $line =~ /^\s*$/; #$line =~ s!http://!!; #$line = "http://$line"; # проверка по ключевым словам - недописано # обрезка конца строки - недописано $proxy_judges[$j++]=$line; } close(PROXY_JUDGES); # если массив proxy-jugde пуст - прерываем выполнение программы die "No available proxy-judge in $opt_j" if ($j==0); print STDERR "Loaded $j proxy-judge from \"$opt_j\" \n" if $opt_v; # --------------------------------------------- # Проверяем прокси-джаджи на доступность, в несколько потоков # если не указана опция "не проверять" # --------------------------------------------- if (!$opt_c) { %judge_result = (); sub check_judge; my %thread = (); print STDERR "Start checking of proxy-judge\n" if $opt_v; foreach my $judge (@proxy_judges) { if ($MAX_THREADS - threads->list(threads::running) > 0) { $thread{$judge} = threads->new(\&check_judge, $judge); } else { # Ждем завершения работы какого-нибудь thread sleep(1); redo; # повторить тело цикла без проверки } } # Помещаем в хэш judge_result результаты проверки foreach my $judge (@proxy_judges) { $judge_result{$judge} = $thread{$judge}->join; } # заново формируем массив proxy_judge только с прошедшими проверку джаджами @proxy_judges=(); foreach my $judge (keys %judge_result) { push @proxy_judges, $judge unless $judge_result{$judge} =~ m/FAILED/; } $j=scalar @proxy_judges; die "No good proxy-judge in $opt_j\n" if ($j==0); print STDERR "Check proxy-judges finished. Available $j proxy judges\n" if $opt_v; } # --------------------------------------------- # Загружаем все прокси в массив # меняем стандартный поток ввода, если указана опция взять прокси-лист из файла. # --------------------------------------------- open STDIN, $opt_f if $opt_f; @proxy = <>; chomp @proxy; die "No proxy for checking" if (scalar @proxy == 0); print STDERR "Loaded ", scalar @proxy, " proxy for checking\n" if $opt_v; # --------------------------------------------- # Берем очередную прокси из массива проксей # если есть свободные нити, запускаем проверку (proxy-judge берется в цикле), # иначе ждем 1 секунду освобождения нити # Помещаем в хэш proxy_result результаты проверки # --------------------------------------------- my $i=0; my %proxy_result = (); # хеш результатов проверки прокси my %thread = (); # хеш объектов типа threads sub check_proxy; foreach my $proxy (@proxy) { if ($MAX_THREADS - threads->list(threads::running) > 0) { $thread{$proxy} = threads->new(\&check_proxy, $proxy, $proxy_judges[ $i++ % $j]); } else { # Ждем завершения работы какого-нибудь thread sleep(1); redo; # повторить тело цикла без проверки } # Выводим в консоль сообщения о ходе проверки в случае запуска программы с опцией -v (verbose) # Для каждой десятой итерации цикла if ( $i%10 == 0 && opt_v) { my $count_joinable = threads->list(threads::joinable); my $count_running = threads->list(threads::running); print STDERR "$i check started, $count_joinable finished, $count_running running \n"; } } # Помещаем в хэш proxy_hash результаты проверки foreach my $proxy (@proxy) { $proxy_result{$proxy} = $thread{$proxy}->join; } # --------------------------------------------- # функция проверки прокси, вызваемая в каждой нити # аргументы - прокси ULR, judge URL # возвращает строку с результатом проверки # --------------------------------------------- sub check_proxy() { # обрабатываем входные значения вызова подпрограммы: $proxy_url=$_[0]; $judge_url=$_[1]; my $agent = LWP::UserAgent->new; $agent->proxy(http => "http://$proxy_url"); $agent->timeout($TIMEOUT); my $request = HTTP::Request->new(GET => $judge_url); my $response = $agent->request($request); if ($response->code == 200) { my $wholehtml = $response->content; if ($wholehtml =~ m/(HTTP_VIA)/si) { if ($wholehtml =~ m/(HTTP_X_FORWARDED_FOR)/si) { return "HTTP_VIA, HTTP_X_FORWARDED_FOR"; } else { return "HTTP_VIA"; } } else { return "ANONIMOUS"; } } else { return "FAILED judge: $judge_url"; } } # --------------------------------------------- # функция проверки валидности джаджа # аргументы - judge URL # возвращает строку с результатом проверки # --------------------------------------------- sub check_judge() { # обрабатываем входные значения вызова подпрограммы: my $judge_url=$_[0]; my $agent = LWP::UserAgent->new; $agent->timeout($TIMEOUT); my $request = HTTP::Request->new(GET => $judge_url); my $response = $agent->request($request); if ($response->code == 200) { my $wholehtml = $response->content; if ($wholehtml =~ m/(REMOTE_ADDR)/si) { return "REMOTE_ADDR"; } else { return "FAILED"; } } else { return "FAILED"; } } # --------------------------------------------- # Вывод результатов (хранящихся в хэше proxy_result) # В зависимости от уровня детализации # По умолчанию выводиться список прошедших проверку прокси # Уровень 1 - живые + доп. информация # Уровeнь 2 - неформатируемый вывод # --------------------------------------------- if ($opt_d && $opt_d eq 1) { foreach my $proxy (keys %proxy_result) { print "$proxy : $proxy_result{$proxy}\n" unless $proxy_result{$proxy} =~ m/FAILED/; } } elsif ($opt_d && $opt_d eq 2) { foreach my $proxy (keys %proxy_result) { print "$proxy : $proxy_result{$proxy}\n"; } } else { foreach my $proxy (keys %proxy_result) { print "$proxy\n" unless $proxy_result{$proxy} =~ m/FAILED/; } } # --------------------------------------------- # Справка и версия - для удобства использования # --------------------------------------------- sub VERSION_MESSAGE() { print "proxy_check.pl v0.1 -- Get proxylist from input or file and multithread check it againist proxyjudge from file \n"; } sub HELP_MESSAGE() { #&VERSION_MESSAGE(); print "$USAGE_MESSAGE"; print "\t -j file mandatory file with proxy-judge list\n"; print "\t -c no check availability of proxy-judge from file\n"; print "\t -f file file with proxy (ip:port or url:port)\n"; print "\t by default get proxy from input\n"; print "\t -n number of threads ($MAX_THREADS by default)\n"; print "\t -t timeout in sec ($TIMEOUT by default)\n"; print "\t -d detalisation level in output \n"; print "\t (by default work as filter, output only good proxies):\n"; print "\t -d 1 level 1: print only good proxy with info\n"; print "\t -d 2 level 2: print all proxy with info, sort by good\n"; print "\t -v be verbose\n"; print "\t --version print version\n"; print "\t --help print this message and exit"; die "\n"; } Есть встроенный хелп (команда help). Юзаем так: Code: perl proxy_check.pl -j <proxy_judge_list> [-c] [-f <proxy_list>] [-n <threads>] [-t <timeout>] [-d <detail output level>] [-v] --version --help
[underwater] а какова рода доп. инфу он выводит ? и естьли чтонибуть аналогичкое только на с/c++ ? всмысле чекер + исходники