LEE_ROY
24.01.2008, 18:16
Ищется хороший прокси граббер и чеккер серверный ( пхп/перл ). Кто имеет, поделитесь плз :)
Вот нарыл один, берет урлы из txt и граббит с них прокси, чекает на GET и рабочие слаживает в отедльный txt. Так вот может есть подобный или кто-то сможеш подправить чтобы проверял на POST, вместо GET. Заранее спасибо :)
скачать - http://dump.ru/files/o/o521684942/
use FileHandle;
autoflush STDOUT 1;
checkProxies();
exit;
################################
#This function checks proxylist
################################
sub checkProxies
{
use threads;
use threads::shared;
$threadsNumber=64;
print "Checking proxies... ";
share(@flags);
open(ALLP,"<./allproxies.txt");
#creating threads
for($i=0;$i<$threadsNumber;$i++)
{
threads->create("myThread",$i);
$flags[$i]="nothing";
}
foreach $thr(threads->list)
{
$thr->detach;
}
#main loop
#searches for unoccupied thread
#and gives it a work
$num=0;
while($proxy=<ALLP>)
{
$num++;
print "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b";
print "Checking proxies... ".$num;
$current=0;
while()
{
if($flags[$current] eq "nothing")
{
$flags[$current]=$proxy;
last;
}
if($flags[$current] eq "good")
{
$flags[$current]=$proxy;
$goodNumber++;
last;
}
$current++;
if($current==$threadsNumber-1) {$current=0;}
}
}
#checking finished
#now we may kill all threads
$i=0;
while($i<$threadsNumber)
{
if($flags[$i] eq "nothing")
{
$flags[$i]="finish";
}
if($flags[$i] eq "good")
{
$flags[$i]="finish";
$goodNumber++;
}
if($flags[$i] eq "finished")
{
$i++;
}
}
close ALLP;
print "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b";
print "Checking proxies... finished\n";
print $goodNumber." eleet proxies found\n";
sleep(1);
}
########
#Thread
########
sub myThread
{
while()
{
sleep(1);
if($flags[$_[0]] eq "finish") {last;}
if($flags[$_[0]] eq "nothing") {next;} #wait for task
if($flags[$_[0]] eq "good") {next;} #wait for task
$proxy=$flags[$_[0]];
$result=testProxy($proxy);
if($result==1)
{
open(ELEET,">>./eleet.txt");
print ELEET $proxy;
close ELEET;
$flags[$_[0]]="good";
} else {
$flags[$_[0]]="nothing";
}
}
$flags[$_[0]]="finished";
}
###########################
#This function tests proxy
###########################
sub testProxy
{
$env="http://www.ocnar.com/cgi-bin/textenv.pl";
#$env="http://www.anonymitytest.com/cgi-bin/textenv.pl";
#$env="http://64.62.217.127/cgi-bin/textenv.pl";
#$env="http://nntime.com/textenv.pl";
#$env="http://samair.ru/cgi/textenv.pl"
($adr,$port)=split(/:/,$_[0]);
open(ITP,">./logs/".$adr.".txt");
$s=getPage($env,"http://".$_[0]);
if($s eq "")
{
print ITP "dead proxy";
close(ITP);
return 0;
}
else
{
print ITP $s;
close(ITP);
}
if($s!~/REMOTE_ADDR/) {return 0}; #bad proxy
if($s=~/89.179.243.148/) {return 0}; #transparent proxy
#if($s=~/HTTP_VIA/) {return 0;} #anonymous or transparent proxy
#if($s=~/HTTP_X_FORWARDED_FOR/) {return 0;} #anonymous or transparent proxy
return 1; #eleet proxy
}
#################################
#This functon makes HTTP request
#################################
sub getPage
{
use LWP::UserAgent;
$ua=LWP::UserAgent->new;
$ua->proxy(http=>$_[1]);
$ua->timeout(5);
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
$req=HTTP::Request->new(GET=>$_[0]);
$res=$ua->request($req);
if($res->is_success)
{
#print($res->content);
return $res->content;
}
else
{
#print "Error!\n";
return "";
}
}
Вот нарыл один, берет урлы из txt и граббит с них прокси, чекает на GET и рабочие слаживает в отедльный txt. Так вот может есть подобный или кто-то сможеш подправить чтобы проверял на POST, вместо GET. Заранее спасибо :)
скачать - http://dump.ru/files/o/o521684942/
use FileHandle;
autoflush STDOUT 1;
checkProxies();
exit;
################################
#This function checks proxylist
################################
sub checkProxies
{
use threads;
use threads::shared;
$threadsNumber=64;
print "Checking proxies... ";
share(@flags);
open(ALLP,"<./allproxies.txt");
#creating threads
for($i=0;$i<$threadsNumber;$i++)
{
threads->create("myThread",$i);
$flags[$i]="nothing";
}
foreach $thr(threads->list)
{
$thr->detach;
}
#main loop
#searches for unoccupied thread
#and gives it a work
$num=0;
while($proxy=<ALLP>)
{
$num++;
print "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b";
print "Checking proxies... ".$num;
$current=0;
while()
{
if($flags[$current] eq "nothing")
{
$flags[$current]=$proxy;
last;
}
if($flags[$current] eq "good")
{
$flags[$current]=$proxy;
$goodNumber++;
last;
}
$current++;
if($current==$threadsNumber-1) {$current=0;}
}
}
#checking finished
#now we may kill all threads
$i=0;
while($i<$threadsNumber)
{
if($flags[$i] eq "nothing")
{
$flags[$i]="finish";
}
if($flags[$i] eq "good")
{
$flags[$i]="finish";
$goodNumber++;
}
if($flags[$i] eq "finished")
{
$i++;
}
}
close ALLP;
print "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b";
print "Checking proxies... finished\n";
print $goodNumber." eleet proxies found\n";
sleep(1);
}
########
#Thread
########
sub myThread
{
while()
{
sleep(1);
if($flags[$_[0]] eq "finish") {last;}
if($flags[$_[0]] eq "nothing") {next;} #wait for task
if($flags[$_[0]] eq "good") {next;} #wait for task
$proxy=$flags[$_[0]];
$result=testProxy($proxy);
if($result==1)
{
open(ELEET,">>./eleet.txt");
print ELEET $proxy;
close ELEET;
$flags[$_[0]]="good";
} else {
$flags[$_[0]]="nothing";
}
}
$flags[$_[0]]="finished";
}
###########################
#This function tests proxy
###########################
sub testProxy
{
$env="http://www.ocnar.com/cgi-bin/textenv.pl";
#$env="http://www.anonymitytest.com/cgi-bin/textenv.pl";
#$env="http://64.62.217.127/cgi-bin/textenv.pl";
#$env="http://nntime.com/textenv.pl";
#$env="http://samair.ru/cgi/textenv.pl"
($adr,$port)=split(/:/,$_[0]);
open(ITP,">./logs/".$adr.".txt");
$s=getPage($env,"http://".$_[0]);
if($s eq "")
{
print ITP "dead proxy";
close(ITP);
return 0;
}
else
{
print ITP $s;
close(ITP);
}
if($s!~/REMOTE_ADDR/) {return 0}; #bad proxy
if($s=~/89.179.243.148/) {return 0}; #transparent proxy
#if($s=~/HTTP_VIA/) {return 0;} #anonymous or transparent proxy
#if($s=~/HTTP_X_FORWARDED_FOR/) {return 0;} #anonymous or transparent proxy
return 1; #eleet proxy
}
#################################
#This functon makes HTTP request
#################################
sub getPage
{
use LWP::UserAgent;
$ua=LWP::UserAgent->new;
$ua->proxy(http=>$_[1]);
$ua->timeout(5);
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
$req=HTTP::Request->new(GET=>$_[0]);
$res=$ua->request($req);
if($res->is_success)
{
#print($res->content);
return $res->content;
}
else
{
#print "Error!\n";
return "";
}
}