sarmatik2006
Создатель
- Регистрация
- 26 Авг 2006
- Сообщения
- 38
- Реакции
- 24
- Автор темы
- #1
Для его использования, Вы должны иметь доступ к веб серверу, с которым не должно быть проблем)). Создать простой HTML файл proxytest.html с уникальной строкой в нем. Эта строка должна быть валидна перловому скрипту. Для примера ,эта команда должна сделать это:
$ echo 'oSCZB8g6bo87N72GF' > ~/public_html/proxytest.html
Затем загрузите этот source code на Ваш сервер, и в той же директории создайте raw текстовый файл со списком всех серверов в формате XXX.XXX.XXX:YYYY (ip address colon port), с одним сервером на строку. Затем создайте другой файл для вывода отфильтрованной инфы, good list. Сделать чтобы этот файл был chmod 777.
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
unless($#ARGV == 1){
print "Usage: proxyfilter.pl INPUT_LIST OUTPUT_LIST\n";
exit(1);
}
my $infile = shift;
my $outfile = shift;
my $url = "http://your-web-server/proxytest.html"; # url to check against val str
my $valstr = "oSCZB8g6bo87N72GF\n"; # validation string (usually ends in \n)
my $timeout = 5; # seconds to wait for response before moving on
my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0' );
$ua->timeout($timeout);
# Loop through input list
open(RAW, $infile);
open(GOODLIST, ">" . $outfile);
while(<RAW>){
chomp;
next if(!$_);
$ua->proxy(['http'], "http://$_");
print "Testing proxy $_...\n";
my $response = $ua->get($url);
next if(!$response->is_success);
next if($response->content ne $valstr);
print " -- Adding good proxy: $_\n";
print GOODLIST "$_\n";
}
close(GOODLIST);
close(RAW);
print "Done!";
Добавлено через 24 минуты
Да чуть не забыл)))
Много-поточный чекер проксей на перле
#!/usr/bin/perl
# [SA]proxycheck, многопоточный чекер проксей
#
# Использование:
# ./sa-proxycheck.pl --input=in.txt --output=out.txt [--url=http://your/proxytest.php] [--threads=100]
#
# Пример: ./sa-proxycheck.pl -i rawlist.txt -o goodlist.txt
#
#
# берет входящий списокпроксей и:
# - запросы к скрипту в текущий момент
# - проверяет результат (время ввода кодировано base64)
# - сохраняет выходные данные(результаты)
#
# uses Thread:ool for fast results
# по умолчанию URL используемый для запросов (можно установить такой)
our $testurl = "http://www.your-web-server-here.com/proxytest.php";
# модули которые мы используем
use strict;
use Getopt::Long;
use Date::Format;
use Thread:ool;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use MIME::Base64;
# опции коммандной строки
my $input = "";
my $output = "";
my $threads = 100;
GetOptions (
'input|i=s' => \$input
,'output|o=s' => \$output
,'threads|t=i' => \$threads
,'url|u=s' => \$testurl
);
die ("Использование: ./sa-proxycheck.pl --input=in.txt --output=out.txt [--url=http://your/proxytest.php] [--threads=100]\n") if $input eq "" || $output eq "";
# Проверка файла входящих данных
die ("Input file \"$input\" not found!\n") unless -e $input;
# Очистка output файла, установка header
open(OUT, ">$output") or die ("Невозможно открыть \"$output\" для входного файла");
my $gentime = time2str("%c", time);
print OUT "# Generated at $gentime by [SA]proxycheck \n";
close OUT;
print "Using $testurl for proxy checking...\n";
print "Starting $input -> $output job with $threads workers:\n";
my %resolved : shared;
my $pool = Thread:ool->new(
{
workers => $threads,
do => \&do,
monitor => \&monitor,
}
);
open(IN, $input);
while(my $line = <IN>)
{
chomp $line;
$pool->job($line);
}
# проверка прокси
# IN: 1 proxy to check (iport)
sub do {
my $testproxy = shift;
# build the LAWP request
my $ua = new LWP::UserAgent;
$ua->timeout(10);
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4");
$ua->proxy(['http'] => 'http://' . $testproxy);
my $verify = time;
my $req = POST $testurl, [ check => "$verify"];
my $res = $ua->request($req);
if ($res->is_success)
{
my $content = $res->content;
(my $security, my $type) = split("\t", decode_base64($content));
$security = decode_base64($security);
$type = decode_base64($type);
if($verify == $security && $type eq "strong")
{
print "$testproxy\tFOUND PROXY\n";
return $testproxy;
}
else {
print "$testproxy\tsecurity failed: $verify != $security or bad type $type\n";
return 0;
}
}
else
{
print "$testproxy\tquery failed\n";
return 0;
}
} #do
#--------------------------------------------------------------------
# IN: 1 working proxy (iport)
sub monitor {
if($_[0])
{
open(OUT, ">>$output");
print OUT $_[0] . "\n";
close OUT;
}
} #monitor
$ echo 'oSCZB8g6bo87N72GF' > ~/public_html/proxytest.html
Затем загрузите этот source code на Ваш сервер, и в той же директории создайте raw текстовый файл со списком всех серверов в формате XXX.XXX.XXX:YYYY (ip address colon port), с одним сервером на строку. Затем создайте другой файл для вывода отфильтрованной инфы, good list. Сделать чтобы этот файл был chmod 777.
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
unless($#ARGV == 1){
print "Usage: proxyfilter.pl INPUT_LIST OUTPUT_LIST\n";
exit(1);
}
my $infile = shift;
my $outfile = shift;
my $url = "http://your-web-server/proxytest.html"; # url to check against val str
my $valstr = "oSCZB8g6bo87N72GF\n"; # validation string (usually ends in \n)
my $timeout = 5; # seconds to wait for response before moving on
my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0' );
$ua->timeout($timeout);
# Loop through input list
open(RAW, $infile);
open(GOODLIST, ">" . $outfile);
while(<RAW>){
chomp;
next if(!$_);
$ua->proxy(['http'], "http://$_");
print "Testing proxy $_...\n";
my $response = $ua->get($url);
next if(!$response->is_success);
next if($response->content ne $valstr);
print " -- Adding good proxy: $_\n";
print GOODLIST "$_\n";
}
close(GOODLIST);
close(RAW);
print "Done!";
Добавлено через 24 минуты
Да чуть не забыл)))
Много-поточный чекер проксей на перле
#!/usr/bin/perl
# [SA]proxycheck, многопоточный чекер проксей
#
# Использование:
# ./sa-proxycheck.pl --input=in.txt --output=out.txt [--url=http://your/proxytest.php] [--threads=100]
#
# Пример: ./sa-proxycheck.pl -i rawlist.txt -o goodlist.txt
#
#
# берет входящий списокпроксей и:
# - запросы к скрипту в текущий момент
# - проверяет результат (время ввода кодировано base64)
# - сохраняет выходные данные(результаты)
#
# uses Thread:ool for fast results
# по умолчанию URL используемый для запросов (можно установить такой)
our $testurl = "http://www.your-web-server-here.com/proxytest.php";
# модули которые мы используем
use strict;
use Getopt::Long;
use Date::Format;
use Thread:ool;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use MIME::Base64;
# опции коммандной строки
my $input = "";
my $output = "";
my $threads = 100;
GetOptions (
'input|i=s' => \$input
,'output|o=s' => \$output
,'threads|t=i' => \$threads
,'url|u=s' => \$testurl
);
die ("Использование: ./sa-proxycheck.pl --input=in.txt --output=out.txt [--url=http://your/proxytest.php] [--threads=100]\n") if $input eq "" || $output eq "";
# Проверка файла входящих данных
die ("Input file \"$input\" not found!\n") unless -e $input;
# Очистка output файла, установка header
open(OUT, ">$output") or die ("Невозможно открыть \"$output\" для входного файла");
my $gentime = time2str("%c", time);
print OUT "# Generated at $gentime by [SA]proxycheck \n";
close OUT;
print "Using $testurl for proxy checking...\n";
print "Starting $input -> $output job with $threads workers:\n";
my %resolved : shared;
my $pool = Thread:ool->new(
{
workers => $threads,
do => \&do,
monitor => \&monitor,
}
);
open(IN, $input);
while(my $line = <IN>)
{
chomp $line;
$pool->job($line);
}
# проверка прокси
# IN: 1 proxy to check (iport)
sub do {
my $testproxy = shift;
# build the LAWP request
my $ua = new LWP::UserAgent;
$ua->timeout(10);
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4");
$ua->proxy(['http'] => 'http://' . $testproxy);
my $verify = time;
my $req = POST $testurl, [ check => "$verify"];
my $res = $ua->request($req);
if ($res->is_success)
{
my $content = $res->content;
(my $security, my $type) = split("\t", decode_base64($content));
$security = decode_base64($security);
$type = decode_base64($type);
if($verify == $security && $type eq "strong")
{
print "$testproxy\tFOUND PROXY\n";
return $testproxy;
}
else {
print "$testproxy\tsecurity failed: $verify != $security or bad type $type\n";
return 0;
}
}
else
{
print "$testproxy\tquery failed\n";
return 0;
}
} #do
#--------------------------------------------------------------------
# IN: 1 working proxy (iport)
sub monitor {
if($_[0])
{
open(OUT, ">>$output");
print OUT $_[0] . "\n";
close OUT;
}
} #monitor