Ну, досталь новый ник, блатую как могу!... кароче, скрипт написана на перле, требует модуль Parallel::Forkmanger которого можно достать тут: Parallel::Forkmanager софт проверает сразу 40 прокси и можно прибавить/убавить это число сменив 40 на нужную цифру во глове скрипта. пишите тут если что нидь работает ни так как надо... Code: #!/usr/bin/perl -w #####################################ё######### use IO::Socket; # the main module for connection use Parallel::ForkManager; # Call to Fork manger ############################################### &usage if(@ARGV < 2); # if arguments less then 2 die my @proxys = do {open my $pfh, "<",shift || die $!;<$pfh> }; # proxies my $output = shift; # output file where would go working proxies my $forker = Parallel::ForkManager->new(40); # Define Fork Manager my $url = "http://google.com"; # url to query proxy ############################################### sub usage { print STDERR "USAGE: $0 [PROXIES FILE] [OUTPUT FILE]\n"; print STDERR "NOTE: proxy file should contain colon separated list of IP or DOMAIN and PORT\n"; print STDERR "Examples\n: www.spider-net.de:80\n89.206.8.242:8080\n"; exit 1; } ############################################### sub getPage { my($host,$url,$port) = @_; # proxy, url - what to query and port my $sock = IO::Socket::INET->new( PeerAddr => $host, PeerPort => $port, Proto => "tcp", Timeout => 3) || return 0; print $sock "GET $url HTTP/1.0\r\n". "HOST: $url\r\n". "ACCEPT: */*\r\n". "REFERER: GNUcious\r\n". "USER-AGENT: 1337zilla - Proxy Checker by GNUcious v1.0 ". "(Macintosh; U; PPC Mac OS X; en-us)\r\n\r\n"; close($sock); return 1; } ############################################## foreach $proxies (@proxys) { chomp($proxies); # remove new line from proxy $forker->start and next; # fork process and increase speed my ($proxy,$port) = split(/:/,$proxies); # split proxy into IP and PORT printf("Checking -> %-20s",$proxies); # nice look at the terminal if(getPage($proxy,$url,$port)) { open my $wpfh,">>",$output || die $!; # save proxy if it works print $wpfh $proxies."\n"; close($wpfh); print "\t[ OK ]"; } else { print "\t[ FAIL ]"; } print "\n"; $forker->finish; # finish process forking } $forker->wait_all_children; # wait all remain process and exit 0; # end program, return 0 result (success) ###############################################
1. Реферер не по rfc 2. Юзерагент совершенно левый...некоторые прокси режут...проверено 3. Почему бы в usage() не заюзать один print? Остальное при детальном рассмотрении скажу, позже
зачем этот костыль Parallel::Forkmanger если можно сделать async io с помощью select, poll, это было бы хотя бы интересно. то что приходит в ответ вообще не анализируется, может прокси не анонимный, может там ошибка 4** или 5** или вообще какая левая хрень. ху*ня короче.
3. там print реализован... 1. мне насрать на рфс... 2. прога свободна распространяетсья, может любой менять... прога проверяет жовой или нет прокси, на кой чорт мне 4* и 5* проверять?..
>2. прога свободна распространяетсья, может любой менять... ты видимо решил поиграть в GPL >1. мне насрать на рфс... очень плохо что тебе насрать на rfc, проект gnu (судя по нику и аве ты должен знать что это такое) как раз таки очень чтит стандарты >прога проверяет жовой или нет прокси, на кой чорт мне 4* и 5* проверять?.. она проверяет открыт ли порт и больше ничего, тоже самое можно делать nmap'ом
2. прога свободна распространяетсья, может любой менять... ты видимо решил поиграть в GPL неа, GPL тема сложная, потому и не встовлял лицензию в скрипт... очень плохо что тебе насрать на rfc, проект gnu (судя по нику и аве ты должен знать что это такое) как раз таки очень чтит стандарты в етом ты прав, но я хотел сказать в етом проге насрать... имея в виду что прога савсем неоткуда... :-D словно с небес сволился... она проверяет открыт ли порт и больше ничего, тоже самое можно делать nmap'ом прога проверяет открит ли тото порт каторый указан в файле... судя по логике если тот порт аткрыт, то прокси у нас живой...
Одним принтом, а не 3-4 раза принт...если у Вас будет хелп в 50 строчек, то Вы 50 раз напишете print 'blablabla' ??? А вот это плохо очень, поверьте....я уже выше писал, что некоторые прокси отбрасывают запросы, которые не подходят под рфц(я сталкивался один раз с таким....очень редко, но все же бывает) Да и не даром-же РФЦ придумали Чем менять - легче свое сделать\юзать готовое имхо... А на тот, что у Вас получается обычный порт-чекер...анализировать ответ нужно для того, чтобы скажем проверить доступность через прокси именно нужного сайта, а не абы-какого-то ответа дождаться. Плюс, если Вам попадется Codeen прокся, то Ваш чекер скажет, что она живая хорошая прокся, на деле окажется иначе