Proxy tester
Simple perl threaded proxy tester.
#!/usr/bin/perl -w
# ------------------------------------------------------------
use strict;
use warnings;
use threads;
use threads::shared;
use LWP::UserAgent;
# seznam stranek odkud stahnout proxyny, vytahne z nich vsechny, ktere jsou ve tvaru ip.ip.ip.ip:port
use constant SOURCES => (
'http://www.samair.ru/proxy/',
'http://www.samair.ru/proxy/proxy-01.htm',
'http://www.samair.ru/proxy/proxy-02.htm',
'http://www.samair.ru/proxy/proxy-03.htm',
'http://www.samair.ru/proxy/proxy-04.htm',
'http://www.samair.ru/proxy/proxy-05.htm',
'http://www.samair.ru/proxy/proxy-06.htm',
'http://www.samair.ru/proxy/proxy-07.htm',
'http://www.samair.ru/proxy/proxy-08.htm',
'http://www.samair.ru/proxy/proxy-09.htm',
'http://www.samair.ru/proxy/proxy-10.htm',
'http://www.samair.ru/proxy/proxy-11.htm',
'http://www.samair.ru/proxy/proxy-12.htm',
'http://www.samair.ru/proxy/proxy-13.htm',
'http://www.samair.ru/proxy/proxy-14.htm',
'http://www.samair.ru/proxy/proxy-15.htm',
'http://www.samair.ru/proxy/proxy-16.htm',
'http://www.samair.ru/proxy/proxy-17.htm',
'http://www.samair.ru/proxy/proxy-18.htm',
'http://www.samair.ru/proxy/proxy-19.htm',
'http://www.samair.ru/proxy/proxy-20.htm',
'http://www.samair.ru/proxy/proxy-21.htm',
'http://www.samair.ru/proxy/proxy-22.htm',
'http://www.samair.ru/proxy/proxy-23.htm',
'http://www.samair.ru/proxy/proxy-24.htm',
'http://www.samair.ru/proxy/proxy-25.htm',
'http://www.samair.ru/proxy/proxy-26.htm',
'http://www.samair.ru/proxy/proxy-27.htm',
'http://www.samair.ru/proxy/proxy-28.htm',
'http://www.samair.ru/proxy/proxy-29.htm',
'http://www.samair.ru/proxy/proxy-30.htm',
'http://proxylist.sakura.ne.jp/index.htm?pages=0',
'http://proxylist.sakura.ne.jp/index.htm?pages=1',
'http://proxylist.sakura.ne.jp/index.htm?pages=2',
'http://proxylist.sakura.ne.jp/index.htm?pages=3',
'http://proxylist.sakura.ne.jp/index.htm?pages=4',
'http://proxylist.sakura.ne.jp/index.htm?pages=5',
'http://proxylist.sakura.ne.jp/index.htm?pages=6',
'http://www.freeproxy.ru/download/lists/goodproxy.txt',
'http://www.proxy-list.net/anonymous-proxy-lists.shtml');
use constant INFO => 'http://php5.banan.cz/'; # nejaky phpinfo() skript
use constant HOST => qr/13\.37\.13\.37/; # vase ipna
use constant POSITIVE => qr/phpinfo\(\)/; # co by se melo pri spravny odpovedi najit
use constant THREADS => 99; # u me sezere 0.5G pameti
use constant TIMEOUT => 10; # 10s timeout
our @proxies :shared;
# ------------------------------------------------------------
foreach my $proxylist (SOURCES) {
print "[+] Getting proxies ($proxylist) ... ";
my $content = LWP::UserAgent->new->get($proxylist)->content;
print "OK\n";
push(@proxies, $1) while ($content =~ /(\d+\.\d+\.\d+\.\d+:\d+)/mg);
}
# uniq
my @uniq = keys %{{ map { $_ => 1 } @proxies }};
@proxies = @uniq;
print "[+] You have bees flying around your rectum\n";
threads->create(\&check) for(1..THREADS);
$_->join foreach threads->list();
print "[+] Done!\n";
# ------------------------------------------------------------
sub check {
my $proxy = pop(@proxies);
return if !$proxy;
my $id = '['.threads->tid()."]";
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0');
$ua->proxy('http', "http://$proxy/");
$ua->timeout(TIMEOUT);
my $response = $ua->get(INFO);
if (!$response->is_success) {
print "$id $proxy \t\t".$response->status_line."\n";
} else {
if($response->content =~ HOST && $response->content =~ POSITIVE) {
print "$id nonanonymous proxy found: $proxy\n";
system("echo $proxy >> proxies-ip");
} elsif($response->content =~ POSITIVE) {
print "$id elite proxy found: $proxy\n";
system("echo $proxy >> proxies-elite");
} else {
print "$id $proxy \t\tbad response\n";
}
}
check() if(@proxies);
}
Tagy:
perl 113 řádků | 2009-01-01 12:44:25 | air.kadlec@seznam.cz