Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #29, АПРЕЛЬ 2003 г.

PHPCount - накручиваем счетчики через скрипт на PHP

Андрей Ковалев ака Drone

Спецвыпуск Xakep, номер #029, стр. 029-064-2


$accept1="Connection: Keep-Alive";

$accept2="Accept-Language: ru";

$accept3="Accept-Encoding: gzip, deflate";

// типа мы - эксплорер и даже круче :)

while(1!=2) // зацикливание

{

//запрашиваем номер последней прокси, которую мы использовали

$a=mysql_query("select * from lastproxy");

$lastproxy=mysql_result($a,0,"proxyid");

$lastproxy++;

//считаем общее количество наших проксей

$proxys=mysql_numrows(mysql_query("select * from proxylist"));

//если номер прокси, которую мы собираемся использовать, превышает общее количество известных прокси-серверов, начинаем с самого начала

if ($lastproxy>$proxys) $lastproxy=1;

//удаляем номер последнего использованного проксика ...

mysql_query("delete from lastproxy");

//... и вставляем туда номер, который собираемся использовать в данный момент

mysql_query("insert into lastproxy values($lastproxy)");

// далее выполняем те же самые операции с таблицей lastproxyagent

$a=mysql_query("select * from lastproxyagent");

$lastagent=mysql_result($a,0,"agentid");

$lastagent++;

$agents=mysql_numrows(mysql_query("select * from proxyagent"));

if ($lastagent>$agents) $lastagent=1;

mysql_query("delete from lastproxyagent");

mysql_query("insert into lastproxyagent values($lastagent)");

//выбираем из списка проксей ту, чей номер хотим использовать сейчас

$a=mysql_query("select * from proxylist where proxyid=$lastproxy");

//считываем адрес проксика

$proxyname=mysql_result($a,0,"proxyname");

//и порт

$proxyport=mysql_result($a,0,"proxyport");

//выбираем из таблицы нужный нам в данный момент agent

$a=mysql_query("select * from proxyagent where agentid=$lastagent");

$agentname=mysql_result($a,0,"agent");

$useragent="$useragent $agentname";

//вызываем основную функцию, которая выполнит всю "грязную работу", используя данные из наших переменных

$stroka=get_http_headers($proxyname,$proxyport,$useragent,$accept0,$accept1,$accept2,$accept3,$ref,$url);

//выводим на экран (для себя) основные переменные

print $proxyname.":".$proxyport." [$agentname] ".$lastproxy."/".$lastagent;

//обычный счетчик. Считываем значение, увеличиваем, перезаписываем.

$a=mysql_query("select * from proxycount");

$pk=mysql_result($a,0,"counter");

$pk++;

mysql_query("delete from proxycount");

mysql_query("insert into proxycount values($pk)");

}

А вот и основная функция, выполняющая основную работу по подключению к указанному прокси-серверу:

function get_http_headers ($proxy,$proxyport,$useragent,$accept0,$accept1,$accept2,$accept3,$ref,$url,$proto="HTTP/1.0")

{

//если url без http://, дописываем оный

if(!eregi( "^http://", $url)) { $url = "http://".$url; }

$uri = parse_url($url);

//порт стандартный - 80

$port = ( $uri[ "port"] ? $uri[ "port"] : 80 );

//открываем сокет

$sock = fsockopen($proxy,$proxyport);

//если ошибка (например, proxy не найден), то выходим из функции

if(!$sock) { return(-1); }

if (!strlen($uri[path])) {$uri[path] = "/";}

//строим запрос к серверу ...

$req=sprintf("GET %s %s\nHost: %s\n%s\n%s\n%s\n%s\n\n\n",$url,$proto,$uri[host],$ref,$accept0,$accept2,$accept3);

Назад на стр. 029-064-1  Содержание  Вперед на стр. 029-064-3