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

  #626  
Старый 12.02.2009, 23:45
eLWAux
Постоянный
Регистрация: 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(FILELOCK_EX);#lock file
    
print FILE $_[1];
    
flock(FILELOCK_UN);#unlock file
    
close(FILE);
}

# read file
sub r2f #filename
    
open(DESC$_[0]);
    
read(DESC,my $result,-s $_[0]);
    
close(DESC);
    return 
$result;

 
Ответить с цитированием