1337zilla - Proxy Checker by GNUcious!

Discussion in 'PHP' started by GNUcious, 15 Feb 2009.

  1. GNUcious

    GNUcious New Member

    Joined:
    13 Feb 2009
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    Ну, досталь новый ник, блатую как могу!... :)
    кароче, скрипт написана на перле, требует модуль 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 person likes this.
  2. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    1. Реферер не по rfc
    2. Юзерагент совершенно левый...некоторые прокси режут...проверено
    3. Почему бы в usage() не заюзать один print?

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

    syava Member

    Joined:
    4 Feb 2009
    Messages:
    16
    Likes Received:
    7
    Reputations:
    0
    зачем этот костыль Parallel::Forkmanger если можно сделать async io с помощью select, poll, это было бы хотя бы интересно.
    то что приходит в ответ вообще не анализируется, может прокси не анонимный, может там ошибка 4** или 5** или вообще какая левая хрень.
    ху*ня короче.
     
  4. GNUcious

    GNUcious New Member

    Joined:
    13 Feb 2009
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    3. там print реализован...
    1. мне насрать на рфс...
    2. прога свободна распространяетсья, может любой менять...

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

    syava Member

    Joined:
    4 Feb 2009
    Messages:
    16
    Likes Received:
    7
    Reputations:
    0
    >2. прога свободна распространяетсья, может любой менять...
    ты видимо решил поиграть в GPL
    >1. мне насрать на рфс...
    очень плохо что тебе насрать на rfc, проект gnu (судя по нику и аве ты должен знать что это такое) как раз таки очень чтит стандарты
    >прога проверяет жовой или нет прокси, на кой чорт мне 4* и 5* проверять?..
    она проверяет открыт ли порт и больше ничего, тоже самое можно делать nmap'ом
     
  6. GNUcious

    GNUcious New Member

    Joined:
    13 Feb 2009
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    2. прога свободна распространяетсья, может любой менять...
    ты видимо решил поиграть в GPL

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

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

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

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

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

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Прошу прощения конечно, но прежде чем писать на перле, русский выучи нормально...
     
    #7 biophreak, 17 Feb 2009
    Last edited: 17 Feb 2009
    1 person likes this.
  8. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Одним принтом, а не 3-4 раза принт...если у Вас будет хелп в 50 строчек, то Вы 50 раз напишете print 'blablabla' ???
    А вот это плохо очень, поверьте....я уже выше писал, что некоторые прокси отбрасывают запросы, которые не подходят под рфц(я сталкивался один раз с таким....очень редко, но все же бывает)
    Да и не даром-же РФЦ придумали
    Чем менять - легче свое сделать\юзать готовое имхо...

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

    GNUcious New Member

    Joined:
    13 Feb 2009
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    спасибо учусь.... :)

    принято замечание, приму во внимание... :)