
12.02.2009, 23:45
|
|
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами:
9423746
Репутация:
2399
|
|
универсальний граббер ір'шек.
(можно использовать для граббинга прокси/сокси/..)
@proxy_serv - масив с сайтами. можна добавить и свой)
perl:
PHP код:
use IO::Socket;
# eLwaux
# iCQ 7434214
print q[
proxy grabber
..eLwaux(c)2009
]."\n";
#=-=-=-=--==-====--=-======-=-=-=-==-====-=-==-=--==-==-=-=-=-==-=-=-=-=-==-=-
my $print_proxy = 0;
my $result_file = 'proxy.txt';
my @proxy_serv = (
'http://http.proxylife.org/index.php?sort=down_speed&sortby=desc',
'http://www.samair.ru/proxy/index.html',
'http://proxy.asechka.ru/index.php?page=proxylist',
'http://madnet.name/tools/proxy/index.php');
#=-=-=-=--==-====--=-======-=-=-=-==-====-=-==-=--==-==-=-=-=-==-=-=-=-=-==-=-
my $all_pr = 0;
foreach my $proxy_s(@proxy_serv) {
my ($host) = ($proxy_s=~'http://([\w\.]+)/.*');
print ' -- '.$host."\n";
$re = POST($proxy_s);
@ips = split(/\n/,ip_parce($re));
$all_pr+=scalar(@ips);
foreach my $ip(@ips){
print ' '.$ip."\n" if ($print_proxy==1);
s2f($result_file,$ip."\n");
}
print ' get '.scalar(@ips)." proxy\n\n";
}
print ' get: '.$all_pr.' proxy';
<stdin>;
exit;
#=-=-=-=--==-====--=-======-=-=-=-==-====-=-==-=--==-==-=-=-=-==-=-=-=-=-==-=-
sub ip_parce { #list
my $result;
my $ips = $_[0];
while ($ips=~/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):{0,}(\d{1,5}){0,}/) {
my ($ip,$port)=($1,$2);
$port = '8080' if ($port eq '');
$result.="$ip:$port\n";
substr($ips,0,index($ips,$ip)+length($ip))='';
}
return $result;
}
sub POST {#url
my $url = $_[0];
if ($url =~ 'http://([\w\.]+)/.*') {$host=$1};
$header = "POST ".$url." HTTP/1.1\r\n".
"Host: ".$host."\r\n".
"Content-Length: 0\r\n\r\n".
"\r\n\r\n";
my $sock = sock($host);
print $sock $header;
while (my $a = <$sock>) {if($a=~/<.html>/){last;} else {$answ.=$a;}}
#sysread($sock,$answ,100000);
close($sock);
return $answ;
}
# create socket
sub sock {#host
my $sock;
do {
$sock = new IO::Socket::INET
( PeerAddr => $_[0],
PeerPort => 80,
PeerProto => 'tcp',
TimeOut => 10);
} while (!$sock);
return $sock;
}
# save file
sub s2f {# filename, text
open(FILE, '>>'.$_[0]);
flock(FILE, LOCK_EX);#lock file
print FILE $_[1];
flock(FILE, LOCK_UN);#unlock file
close(FILE);
}
# read file
sub r2f { #filename
open(DESC, $_[0]);
read(DESC,my $result,-s $_[0]);
close(DESC);
return $result;
}
|
|
|