Вот исходник.
#!/usr/bin/perl
#
# Writed by pixcher
# For xakepy.ru e-zine
use HTTP::Request::Common;
require LWP::UserAgent;
use Getopt::Std;
#Подключаем модули HTTP::Request::Common и Getopt::Std
usage()
if ($ARGV[0] eq "-h");
getopt("sctln"); #Проверяем, были ли переданы скрипту эти параметры.
$pageshow= $opt_s || \'
http://xakepy.ru/index.php\';#Страничка для поля Referrer.
$pageclick= $opt_c || \'
http://top.list.ru/counter?id=953756&t=130&js=13&r=[&j=true&s=<_S W>*<_SH>&d=<_SC>&rand=\'; #Линк, по которому скрипт будет кликать.]
$t= $opt_t || 50; #Количество потоков
$n= $opt_n || 200; #Количество кликов
$proxylist= $opt_l || \'proxy.txt\';#Файл с проксями
$counter= 0;
sub click{ #Основная часть скрипта. Тут устанавлиаются основные #значения, нужные для работы скрипта.
($p)=@_;
$p=substr($p,0,length($p)-1);
$ua = new LWP::UserAgent;
$ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");#Поле заголовка User Agent
$ua->timeout(30);
$ua->proxy(\'http\',"http://".$p);#тип прокси
$h1 = new HTTP::Headers#Мутим заголовки вручную
Accept => \'application/vnd.ms-excel, application/msword, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-comet, */*\',
User_Agent => \'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)\',
Referer => $pageshow;#Вставляем переменную в поле Referer
$req1 = new HTTP::Request (\'GET\', "$pageclick", $h1);
$response=$ua->request($req1);#Делаем запрос
$suc=$response->is_success;
($suc) || print " $p - :".$response->code."\\n";
if ($suc) {
open(FH,">>goodproxy.txt");
print FH $p."\\n";
close FH;
};
($suc) && print "$p +\\n";
sleep(5);
}
print "\\n
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
Page, we\'ll show:\\n $pageshow\\nLink, we\'ll click:\\n $pageclick
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++\\n\\n";
open(PROXY, "$proxylist"); #Работаем с проксями, открываем файлики, читаем, #складываем в массив
@xproxy=;
chomp(@xproxy);
$suc=1;
if ($t>$n) {$t=$n;}
while (1) { #Запускаем скрипт в бесконечном цикле
for ($i=1;$i<=$t;$i++) { #Создаём $t кол-во потоков
if (($xproxy[$counter] == \'\') or ($counter == $n)) { #Если прокси подошли к концу, или достигнут лимит кликов, то завершаем работу
killpidz();
print "\\nDone !!!\\n";
exit;
}
if ($pid=fork()) {
push(@forked,$pid);
} else {
click($xproxy[$counter]);
exit;
}
$counter++;
}
killpidz();
}
sub usage { #Cправка по использованию скрипта
print "+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
Usage: perl $0 [options]...\\n";
print "Options are:
-s: Page to show (page with the banner)
-c: Link to click
-t: Number of treads(def: 50)
-n: Number of clicks(def: 200)
-l: Proxy list (def: pxoxy.txt)
-h: This help
\\nExample:
perl $0 -s \\"site.ru\\" -c \\"site.ru/banner.php?id=777\\" -t 250
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++";
exit;
}
sub killpidz {
foreach (@forked) {
chomp;
waitpid($_,0);
kill("TERM" => $_)
}
undef @forked;
}
exit;