|

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
|