Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   1337zilla - Proxy Checker by GNUcious! (https://forum.antichat.xyz/showthread.php?t=106328)

GNUcious 15.02.2009 16:03

1337zilla - Proxy Checker by GNUcious!
 
Ну, досталь новый ник, блатую как могу!... :-)
кароче, скрипт написана на перле, требует модуль Parallel::Forkmanger которого можно достать тут:
Parallel::Forkmanager

софт проверает сразу 40 прокси и можно прибавить/убавить это число сменив 40 на нужную цифру во глове скрипта.

пишите тут если что нидь работает ни так как надо... :-)
Код:

#!/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)
###############################################


biophreak 16.02.2009 17:07

1. Реферер не по rfc
2. Юзерагент совершенно левый...некоторые прокси режут...проверено
3. Почему бы в usage() не заюзать один print?

Остальное при детальном рассмотрении скажу, позже :)

syava 16.02.2009 17:25

зачем этот костыль Parallel::Forkmanger если можно сделать async io с помощью select, poll, это было бы хотя бы интересно.
то что приходит в ответ вообще не анализируется, может прокси не анонимный, может там ошибка 4** или 5** или вообще какая левая хрень.
ху*ня короче.

GNUcious 16.02.2009 18:03

Цитата:

Сообщение от biophreak
1. Реферер не по rfc
2. Юзерагент совершенно левый...некоторые прокси режут...проверено
3. Почему бы в usage() не заюзать один print?

Остальное при детальном рассмотрении скажу, позже :)

3. там print реализован...
1. мне насрать на рфс...
2. прога свободна распространяетсья, может любой менять...

Цитата:

зачем этот костыль Parallel::Forkmanger если можно сделать async io с помощью select, poll, это было бы хотя бы интересно.
то что приходит в ответ вообще не анализируется, может прокси не анонимный, может там ошибка 4** или 5** или вообще какая левая хрень.
ху*ня короче.
прога проверяет жовой или нет прокси, на кой чорт мне 4* и 5* проверять?..

syava 16.02.2009 18:11

>2. прога свободна распространяетсья, может любой менять...
ты видимо решил поиграть в GPL
>1. мне насрать на рфс...
очень плохо что тебе насрать на rfc, проект gnu (судя по нику и аве ты должен знать что это такое) как раз таки очень чтит стандарты
>прога проверяет жовой или нет прокси, на кой чорт мне 4* и 5* проверять?..
она проверяет открыт ли порт и больше ничего, тоже самое можно делать nmap'ом

GNUcious 16.02.2009 18:30

2. прога свободна распространяетсья, может любой менять...
ты видимо решил поиграть в GPL

неа, GPL тема сложная, потому и не встовлял лицензию в скрипт...

очень плохо что тебе насрать на rfc, проект gnu (судя по нику и аве ты должен знать что это такое) как раз таки очень чтит стандарты

в етом ты прав, но я хотел сказать в етом проге насрать... :-)
имея в виду что прога савсем неоткуда... :-D словно с небес сволился... :-)

она проверяет открыт ли порт и больше ничего, тоже самое можно делать nmap'ом

прога проверяет открит ли тото порт каторый указан в файле... судя по логике если
тот порт аткрыт, то прокси у нас живой...

biophreak 17.02.2009 11:25

Прошу прощения конечно, но прежде чем писать на перле, русский выучи нормально...

biophreak 17.02.2009 20:04

Цитата:

Сообщение от GNUcious
3. там print реализован...

Одним принтом, а не 3-4 раза принт...если у Вас будет хелп в 50 строчек, то Вы 50 раз напишете print 'blablabla' ???
Цитата:

Сообщение от GNUcious
1. мне насрать на рфс...

А вот это плохо очень, поверьте....я уже выше писал, что некоторые прокси отбрасывают запросы, которые не подходят под рфц(я сталкивался один раз с таким....очень редко, но все же бывает)
Да и не даром-же РФЦ придумали
Цитата:

Сообщение от GNUcious
2. прога свободна распространяетсья, может любой менять...

Чем менять - легче свое сделать\юзать готовое имхо...

Цитата:

Сообщение от GNUcious
прога проверяет жовой или нет прокси, на кой чорт мне 4* и 5* проверять?..

А на тот, что у Вас получается обычный порт-чекер...анализировать ответ нужно для того, чтобы скажем проверить доступность через прокси именно нужного сайта, а не абы-какого-то ответа дождаться.
Плюс, если Вам попадется Codeen прокся, то Ваш чекер скажет, что она живая хорошая прокся, на деле окажется иначе :)

GNUcious 18.02.2009 13:12

Цитата:

Сообщение от biophreak
Прошу прощения конечно, но прежде чем писать на перле, русский выучи нормально...

спасибо учусь.... :-)

Цитата:

А на тот, что у Вас получается обычный порт-чекер...анализировать ответ нужно для того, чтобы скажем проверить доступность через прокси именно нужного сайта, а не абы-какого-то ответа дождаться. Плюс, если Вам попадется Codeen прокся, то Ваш чекер скажет, что она живая хорошая прокся, на деле окажется иначе
принято замечание, приму во внимание... :-)


Время: 07:45