Hacker's PHP

Xakep, номер #043, стр. 043-046-4


if(!isset($i)) //Если НЕ выставлена переменная счетчика, выставляем

{ $i=0; }

$ff=$i; //Доп. переменная

$ff+=9; //увеличиваем ее значение на 9

$host_url=explode("\\", $url); //Разрезаем введенный пользователем URL на хост и Адрес док-та

$host=$host_url[0];

$url=$host_url[1];

$num_prox--; //Снимаем единичку с числа элементов в массиве $num_prox (нумерация элементов в массиве начинается с 0)

while($i<=$ff && $i<=$num_prox)

{

$pro=explode(":", $prox_arr[$i]); //режем адрес проксика на хост и порт

$proxy_host=$pro[0];//Определяем переменные в классе

$proxy_port=$pro[1];

$prox->proxy_host="$proxy_host";

$prox->proxy_port="$proxy_port";

$sockett=$prox->px("$host", "$url"); //пуск функции из класса proxy

if(!$sockett)

{

$problems.="\n<br>Проблема с этим проксиком: $prox_arr[$i]"; //Если произошла ошибка...

} $i++;

if($i==$b)

{

echo "<script>location='script.php'</script>";

}

}

Echo "Накрутка голосования успешно завершена.<br> В процессе накрутки произошли следующие ошибки: <br><b>$problems</b>";

}else { echo "Здесь HTML-форма..."; }

?>

От пользователя скрипту передаются 2 параметра: УРЛ до скрипта (без http://) со всеми передаваемыми ему переменными, включая идентификатор ответа и количество требуемых "голосов" в поддержку какого-то варианта ответа.

Также необходим большой список proxy-серверов, достав который, следует сразу отбросить все левые адреса, для чего удобно поюзать специальные утилитки (либо же ничего не проверять: скрипт, в принципе, сам все проверяет, правда, это несколько замедляет его выполнение :().

Аналогично, как и в случае рассылки спама, выполнение скрипта будет повторяться, покуда не иссякнет список проксиков.

Сага о протоколах

Ммм... А ты знаешь, как работает броузер? :). Если ты подумал, что я говорю про вершину протоколов - про уровень взаимодействия с пользователем ("ввел адрес, нажал на пимпу, все пучком" - вот и весь протокол =)), то ты ошибся. Я говорю про более низкоуровневые вещи - про уровень сокетов.

HTTP-клиент, т.н. "броузер", соединяется с указанным сервером и начинает с ним общаться, отдавая серверу HTTP-команды, называемые также "методами". За ними идет адрес документа на сервере и версия протокола HTTP. Формат строки запроса примерно такой: GET /index.html HTTP/1.0, здесь используется метод GET для документа index.html, очевидно, главной страницы сайта. Затем в заголовке клиент посылает на сервер необязательную информацию о своей конфигурации и форматах принимаемых документов. Информация эта посылается построчно, строки отделяются друг от друга последовательностью символов возврата каретки и новой строки (\r\n), завершается запрос пустой строкой. т.е. \r\n\r\n. Вот пример заголовка:

Accept: */*

Connection: Keep-Alive

User-Agent: Megascript

Host: www.xakep.ru

Потом сервер, переварив запрос, отвечает на него, например, так:

HTTP/1.0 200 OK

Date: Thu, 14 May 2002 23:54:21 GMT

Server: Apache/1.3.6 (Win32)

Last-Modified: Mon, 13 May 2002 20:04:12 GMT

Назад на стр. 043-046-3  Содержание  Вперед на стр. 043-046-5