|

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
|