Недавно мне потребовалось накрутить свой рейтиг на одном из ресурсов необъятного инета =), тогда я написал небольшой спритик без какого либо подобия GUI. Потом ко мне за ним обратилась пара и людей и я понял, что сделал довольно ценную вещь и можно ее развить. Что получилось смотреть вам, я же опишу лишь основные возможности скрипта: - Накрут через прокси (прокси берутся из файла) - В скрипте есть удобный редактор этих самых прокси - Есть авторизация, так что без вас накрутчиком не воспользуются - Есть возможность формирования HTTP запроса как автоматически, так и полностью вручную, далее я буду говорить только о возможностях автоматического формирования - Для работы со скриптом не нужно знать HTTP - Есть возможность подделывать Cookies, User-Agent и др. - Есть возможность поставить "паузу" между отправками HTTP пакетов - Есть возможность выбора метода (GET\POST) Перечень неполный, т.к. все перечислять влом. Пользовательский интерфейс скрипта выполнен полностью на английском языке. Чем это объясняется? Очень просто - прикладной протокол HTTP разрабатывался за бугром и воизбежании путаницы с понятиями и определениями я выполнял все на "родном" ему языке. Автором являюсь я, я никоим образом не использовал чужих наработок. А вот наконец и код: PHP: <?php $afftar = "</br><a href='javascript:history.back(1)'>Back</a></br>(C)oded by A®TeS</br>ICQ: 903521"; IF (isset($_POST["timeout"]) && isset($_POST["typequest"]) && isset($_POST["host"]) && isset($_POST["link"]) && isset($_POST["separator"]) && isset($_POST["proxylist"]) && isset($_POST["portlink"]) && isset($_POST["levelwarning"]) && $_POST["login"] == 'naKRUT' && md5($_POST["pass"]) == '18c042965338ff2850e357cc918e23b5') { $proxylist = file($_POST["proxylist"]); $separator = $_POST["separator"]; $timeout = $_POST["timeout"]; $typequest = $_POST["typequest"]; $questcontent = $_POST["questcontent"]; $host = $_POST["host"]; $link = $_POST["link"]; $portlink = $_POST["portlink"]; SWITCH ($_POST["levelwarning"]) { Case "E_ALL": error_reporting(E_ALL); break; Case "E_NOTICE": error_reporting(E_NOTICE); break; Case "E_WARNING": error_reporting(E_WARNING); break; Case "E_ERROR": error_reporting(E_ERROR); break; } $user_agent = array("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)", "Opera/9.21 (Windows NT 5.1; U; ru)", "Mozilla/5.0 (Windows NT 5.1; U; ru; rv:1.8.0) Gecko/20060728 Firefox/1.5.0"); $size = sizeof($proxylist); for ($i = 0; $i < $size; $i++) { $proxy = $proxylist[$i]; preg_match('/(\d+)/s', substr($proxy, strpos($proxy, $separator) + 1, strlen($proxy) - strpos($proxy, $separator)), $port); $proxy = substr($proxy, 0, strpos($proxy, $separator)); $fp = fsockopen($proxy, $port[1], $errno, $errstr, $timeout); if($fp) { $agent = rand(0, 2); IF ($typequest == "POST") { $headers = "POST http://$host$link HTTP/1.1\r\n"; $headers .= "Host: $host:$portlink\r\n"; IF (isset($_POST["cookie"]) && $_POST["cookie"] != '') { $headers .= "Cookie: "; $headers .= $_POST["cookie"]; $headers .= "\r\n"; } IF (isset($_POST["ref"]) && $_POST["ref"] != '') { $headers .= "Referrer: "; $headers .= $_POST["ref"]; $headers .= "\r\n"; } IF (isset($_POST["useragent"]) && $_POST["useragent"]) { $headers .= "User-Agent: $user_agent[$agent]\r\n"; } $headers .= "Content-type: application/x-www-form-urlencoded\r\n"; $headers .= "Content-Length: ".strlen($questcontent)."\r\n"; IF (isset($_POST["connection"]) && $_POST["connection"] == "close") { $headers .= "Connection: close\r\n\r\n"; } IF (isset($_POST["connection"]) && $_POST["connection"] == "Keep-Alive") { $headers .= "Connection: Keep-Alive\r\n\r\n"; } fwrite($fp, $headers.$questcontent); } IF ($typequest == "GET") { $headers = "GET http://$host$link?$questcontent HTTP/1.1\r\n"; $headers .= "Host: $host:$portlink\r\n"; IF (isset($_POST["cookie"]) && $_POST["cookie"] != '') { $headers .= "Cookie: "; $headers .= $_POST["cookie"]; $headers .= "\r\n"; } IF (isset($_POST["ref"]) && $_POST["ref"] != '') { $headers .= "Referrer: "; $headers .= $_POST["ref"]; $headers .= "\r\n"; } IF (isset($_POST["useragent"]) && $_POST["useragent"]) { $headers .= "User-Agent: $user_agent[$agent]\r\n"; } IF (isset($_POST["connection"]) && $_POST["connection"] == "close") { $headers .= "Connection: close\r\n\r\n"; } IF (isset($_POST["connection"]) && $_POST["connection"] == "Keep-Alive") { $headers .= "Connection: Keep-Alive\r\n\r\n"; } fwrite($fp, $headers); } fclose($fp); sleep($_POST["sleep"]); } } Echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><title>Script naKRUT v 1.1</title></head><div align='center'><font color='red' size=+2>Total statistic:</div></font><table align='center'><tr bgcolor=#FFFFAAAA><td>Proxy servers:</td><td>$size</td></tr><tr bgcolor=#FFFFAAAA><td>Timeout:</td><td>$timeout</td></tr><tr bgcolor=#FFFFAAAA><td>Full URL script:</td><td>http://$host$link</td><tr bgcolor=#FFFFAAAA><td>Method:</td><td>$typequest</td></tr><tr bgcolor=#FFFFAAAA><td>HTTP request:</td>"; IF ($typequest == "POST") { Echo "<td><pre>$headers$questcontent</pre></td>"; } else { Echo "<td><pre>$headers</pre></td>"; } Echo "</tr></table><hr><div align='center'><a href='?main'><font color='grey' size=-2>To main page</a></br><a href='?EditProxyList'>Edit proxy list</a>$afftar</font></div></html>"; } elseif (isset($_GET["EditProxyList"])) { IF (isset($_POST["CONTENT"]) && isset($_POST["filename"]) && md5($_POST["pass_1"]) == '18c042965338ff2850e357cc918e23b5' && $_POST["login_1"] == 'naKRUT') { If (file_exists($_POST["filename"]) == TRUE && is_writable($_POST["filename"]) == TRUE) { SWITCH ($_POST["mode"]) { Case "w": $fp = fopen($_POST["filename"], 'w'); break; Case "rp": $fp = fopen($_POST["filename"], 'r+'); break; Case "a": $fp = fopen($_POST["filename"], 'a'); break; } if (Isset($_POST["CONTENT"]) == true) { FWrite($fp, $_POST["CONTENT"]); } fclose($fp); echo "Content has changed!!!"; } else { echo "ERROR</br>Trables with writable or existing file!"; } clearstatcache(); } Echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>Script naKRUT v 1.1</title></head>'; echo "<div align='center'><font color='RED' size=+3>Script naKRUT v. 1.1</font></br>"; echo "<div align='center'><font color='RED' size=+2>Edit proxy list</font></br>"; ECHO "<form method='POST'><table align='center'>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Filename:</td><td><input type='TEXT' name='filename'></td>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Open mode:</td><td><select name='mode'><option value='rp'>r+</option><option value='w' selected>w</option><option value='a'>a</option></select></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Login:</td><td><input type='TEXT' name='login_1'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Password:</td><td><input type='PASSWORD' name='pass_1'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td>Content:</td><td><TEXTAREA NAME='CONTENT' ROWS=20 COLS=70></TEXTAREA></td></tr></table>"; echo "<div align='center'><Input type='SUBMIT' value=' GO! '></div>"; echo "<hr><a href='?main'><font color='grey' size=-2>To main page</a>$afftar</font>"; echo "</form></html>"; } elseif (!isset($_GET["hand"])) { Echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>Script naKRUT v 1.1</title></head><table align="center">'; echo "<div align='center'><font color='RED' size=+3>Script naKRUT v. 1.1</font></br>"; echo "<div align='center'><font color='RED' size=+2>Main page</font></br>"; echo "<div align='center'><font color='lemon'>HandMade Never! | <a href = '?hand'>HandMade Forever!</a></font></br>"; echo '<tr bgcolor=#FFFFAAAA><td><form method="POST"><font color="red">*</font>Error_reporting:</td><td bgcolor=#FFFFAAAA><select name="levelwarning"><option value="E_ALL">E_ALL</option><option value="E_NOTICE">E_NOTICE</option><option value="E_WARNING" selected>E_WARNING</option><option value="E_ERROR">E_ERROR</option></select></td></tr>'; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Timeout:</td><td><input type='TEXT' name='timeout' value='10'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Host:</td><td><input type='TEXT' name='host'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Link:</td><td><input type='TEXT' name='link'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Separator:</td><td><input type='TEXT' name='separator' value=':'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Path to list with proxy:</td><td><input type='TEXT' name='proxylist' value='prox_list.txt'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Port of host:</td><td><input type='TEXT' name='portlink' value='80'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Sleep:</td><td><input type='TEXT' name='sleep' value='0'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Method_name:</td><td><select name='typequest'><option value='POST' selected>POST</option><option value='GET'>GET</option></select></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td>Cookie:</td><td><input type='TEXT' name='cookie'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td>Referrer:</td><td><input type='TEXT' name='ref'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td>Questcontent:</td><td><input type='TEXT' name='questcontent'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Connection:</td><td><select name='connection'><option value='close' selected>close</option><option value='Keep-Alive'>Keep-Alive</option></select></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>False User-Agent:</td><td><input type='checkbox' name='useragent' checked></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Login:</td><td><input type='TEXT' name='login'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Password:</td><td><input type='PASSWORD' name='pass'></td></tr></table>"; echo "<div align='center'><input type='submit' value=' GO! '></div>"; echo "</form><hr><div align='center'><a href='?EditProxyList'><font color='grey' size=-2>Edit proxy list</a>$afftar</font></html></div>"; } elseif (isset($_POST["hand"]) && $_POST["login"] == 'naKRUT' && md5($_POST["pass"]) == '18c042965338ff2850e357cc918e23b5') { $proxylist = file($_POST["proxylist"]); $separator = $_POST["separator"]; $timeout = $_POST["timeout"]; SWITCH ($_POST["levelwarning"]) { Case "E_ALL": error_reporting(E_ALL); break; Case "E_NOTICE": error_reporting(E_NOTICE); break; Case "E_WARNING": error_reporting(E_WARNING); break; Case "E_ERROR": error_reporting(E_ERROR); break; } $size = sizeof($proxylist); for ($i = 0; $i < $size; $i++) { $proxy = $proxylist[$i]; preg_match('/(\d+)/s', substr($proxy, strpos($proxy, $separator) + 1, strlen($proxy) - strpos($proxy, $separator)), $port); $proxy = substr($proxy, 0, strpos($proxy, $separator)); $fp = fsockopen($proxy, $port[1], $errno, $errstr, $timeout); if($fp) { fwrite($fp, $_POST["httpreq"]); sleep($_POST["sleep"]); } fclose($fp); } echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><title>Script naKRUT v 1.1</title></head><div align='center'><font color='red' size=+2>Total statistic:</div></font><table align='center'><tr bgcolor=#FFFFAAAA><td>Proxy servers:</td><td>$size</td></tr><tr bgcolor=#FFFFAAAA><td>Timeout:</td><td>$timeout</td></tr><tr bgcolor=#FFFFAAAA><td>HTTP request:</td>"; echo "<td><pre>"; echo $_POST["httpreq"]; echo "</pre></td>"; Echo "</tr></table><hr><div align='center'><a href='?main'><font color='grey' size=-2>To main page</a></br><a href='?EditProxyList'>Edit proxy list</a>$afftar</font></div></html>"; } else { echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>Script naKRUT v 1.1</title></head><table align="center">'; echo "<div align='center'><font color='RED' size=+3>Script naKRUT v. 1.1</font></br>"; echo "<div align='center'><font color='RED' size=+2>Main page</font></br>"; echo "<div align='center'><font color='lemon'> <a href = '?main'>HandMade Never!</a> | HandMade Forever!</font></br>"; echo '<tr bgcolor=#FFFFAAAA><td><form method="POST"><font color="red">*</font>Error_reporting:</td><td bgcolor=#FFFFAAAA><select name="levelwarning"><option value="E_ALL">E_ALL</option><option value="E_NOTICE">E_NOTICE</option><option value="E_WARNING" selected>E_WARNING</option><option value="E_ERROR">E_ERROR</option></select></td></tr>'; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Timeout:</td><td><input type='TEXT' name='timeout' value='10'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Separator:</td><td><input type='TEXT' name='separator' value=':'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Path to list with proxy:</td><td><input type='TEXT' name='proxylist' value='prox_list.txt'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Sleep:</td><td><input type='TEXT' name='sleep' value='0'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Content HTTP-request:</td><td><TEXTAREA NAME='httpreq' ROWS=20 COLS=70></TEXTAREA></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Login:</td><td><input type='TEXT' name='login'></td></tr>"; echo "<tr bgcolor=#FFFFAAAA><td><font color='red'>*</font>Password:</td><td><input type='PASSWORD' name='pass'></td></tr></table>"; echo "<input type='hidden' name='hand'>"; echo "<div align='center'><input type='submit' value=' GO! '></div>"; echo "</form><hr><div align='center'><a href='?EditProxyList'><font color='grey' size=-2>Edit proxy list</a>$afftar</font></html></div>"; } ?> З.Ы. Чуть не забыл, по умолчания пароль/логин накрутчика: naKRUT/naKRUT