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); |