Perl Proxy List Filtering App на перле

Статус
В этой теме нельзя размещать новые ответы.

sarmatik2006

Создатель
Регистрация
26 Авг 2006
Сообщения
38
Реакции
24
Для его использования, Вы должны иметь доступ к веб серверу, с которым не должно быть проблем)). Создать простой 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::pool 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::pool;
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::pool->new(
{
workers => $threads,
do => \&do,
monitor => \&monitor,
}
);

open(IN, $input);
while(my $line = <IN>)
{
chomp $line;
$pool->job($line);
}

# проверка прокси
# IN: 1 proxy to check (ip:port)
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 (ip:port)

sub monitor {
if($_[0])
{
open(OUT, ">>$output");
print OUT $_[0] . "\n";
close OUT;
}
} #monitor
 
прикольно код со смайликами :D
 
:confused:ага только заметил
ну кому нужно сделают замену
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху