Показать сообщение отдельно

  #14  
Старый 01.12.2009, 22:28
MVadim
Постоянный
Регистрация: 06.10.2007
Сообщений: 681
Провел на форуме:
3899205

Репутация: 429


Отправить сообщение для MVadim с помощью ICQ
По умолчанию

Цитата:
Сообщение от CrazyStudentS_Mi}{  
есть у кого нибудь чекер хттп проксей на перл\питон?
не знаю работает ли он сейчас или нет
посмотрел прост у себя на компе

Код:
#!/usr/bin/perl

#################################################
#          HTTP Proxy Checker
#            -------------
#
#   copyright : (C) Cyber Lords, 2002-2007
#         http://www.cyberlords.net 
#
#           Coded by VeX [614883] 
#################################################

use HTTP::Request::Common;
require LWP::UserAgent;
use Getopt::Std;

getopt("pst");

$proxy_file = $opt_p    || 'proxy.txt';
$proxy_timeout = $opt_s || 20;
$threads = $opt_t       || 50;

print "Proxy checker by VeX\n\n";
open(proxy, $proxy_file);
print "Sorting proxy ... ";

while(<proxy>){ 
   chomp;
   $h{$_."\n"}++;
}
for $a ( keys %h ) { push @a, $a; }
#foreach $s (@a){ print $s; }
print "OK\n";
print "Checking ".scalar @a." proxys ... \n\n";

$n = 0;

while(1) {
for ( $i = 0; $i<=$threads; $i++ ) {

if (@a[$n] == '') {
killpidz();
print "\nDone !!!\n";
exit;
}

if ($pid=fork()) {
push(@forked,$pid);
} else {
check(@a[$n]);
exit;
}
$n++;
}
killpidz();
}

print "\nFinish";

sub killpidz {
 foreach (@forked) {
   chomp;
   waitpid($_,0);
   kill("TERM" => $_)
 }
 undef @forked;
}

sub check {

   $proxy = $_[0];
   chomp($proxy);

   $link = "http://ya.ru/";

   $ua = new LWP::UserAgent;
   $ua->agent("Opera/9.02 (Windows NT 5.1; U; ru)");
   $ua->timeout($proxy_timeout);
   $ua->proxy('http',"http://".$proxy);

   $h1 = new HTTP::Headers
Accept => 'application/vnd.ms-excel, application/msword, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-comet, */*',
User_Agent => 'Opera/9.02 (Windows NT 5.1; U; ru)',
Referer => $link;
   $req1 = new HTTP::Request ('GET', "$link", $h1);
   $response=$ua->request($req1);
   $suc=$response->is_success;

   if ($suc) {
      print "[+] $proxy ok\n";
      open(FH,">>good_proxy.txt");
      print FH $proxy."\n";
      close FH;
   }
   else {
      print "[-] $proxy error [".$response->code."]\n";
      open(FH, ">>bad_proxy.txt");
      print FH $proxy."\n";
      close FH;
   }
}