Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Необходим скрипт удаленной авторизации и в последствии выпрямления ссылок на http://turbobit.net и http://depositfiles.com через fsockets
Прилагаю код моего скрипта и лог перехвата HTTP заголовков в приложении к данному вопросу.
Проблема в том что из перехваченных HTTP заголовков видно, что тип соединения везде идет
Connection: Keep-Alive, TE то есть держать соединение при установленном подключении к серверу, а у меня почему то выскакивает ошибка
Fatal error: Maximum execution time of 30 seconds exceeded при первом запросе. Когда выставляю на отправку тип соединения
Connection: Close уходит первый заголовок и возвращает страницу, но следующая отправка POST заголовка на авторизацию не возвращает никакого результата. Получается что дело в типе соединения которое я не могу установить в режим Keep-Alive, я пробовал указывать таймаут для
Keep-Alive:300 ничего не происходит результат тот же
Fatal error: Maximum execution time of 30 seconds exceededПрошу помочь мне в данном вопросе так как знаю что, эмуляция браузера а конкретнее - удаленная авторизация на эти файло-обменники существует, вопрос правильном алгоритме и времени, ответ на мой вопрос в виде готового решения есть
тут на turbobit.net и
тут на Depositfiles.com мне необходимо сделать тоже самое.
Приложение:
При авторизации через браузер перехватом http заголовков был выявлен следующий принцип:
1) отправка заголовка на сервер:
GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.00
Host: turbobit.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9,ru-RU;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://turbobit.net/
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
2) в ответе от сервера приходит заголовок содержащий cookie:
HTTP/1.1 200 OK
Date: Thu, 06 Jan 2011 16:34:53 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: Apache/2.2.17 (FreeBSD)
X-Powered-By: PHP/5.2.14
Set-Cookie: kohanasession=d16c772b0926afd04a85670629dae3e6; expires=Thu, 06-Jan-2011 18:34:52 GMT; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: kohanasession=90bbb2d52293a13a913072d4f094b069f62fb7bb%7Ed16c772b0926afd04a85670629dae3e6; expires=Thu, 06-Jan-2011 18:34:52 GMT; path=/
Set-Cookie: compid=bebabc553195346efb17889e123617d3f47dced5%7E0C3027455A6243D06C391D20EB2B7D04; expires=Fri, 06-Jan-2012 16:34:52 GMT; path=/
Content-Encoding: gzip
3) при заполнении формы авторизации и нажатии кнопки "Войти" на сервер отправляется заголовок с
cookie полученными в ответе на первый заголовок:
POST /user/login HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.00
Host: turbobit.net
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru,en;q=0.9,ru-RU;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://turbobit.net/
Cookie: kohanasession=90bbb2d52293a13a913072d4f094b069f62fb7bb%7Ed16c772b0926afd04a85670629dae3e6; compid=bebabc553195346efb17889e123617d3f47dced5%7E0C3027455A6243D06C391D20EB2B7D04; __utmz=1.1294331720.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.557309744.1294331720.1294331720.1294331720.1; __utmc=1; __utmb=1.1.10.1294331720
Cookie2: $Version=1
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Content-Length: 103
Content-Type: application/x-www-form-urlencoded
user%5Blogin%5D=amd12%40mail.ru&user%5Bpass%5D=zyvurara&user%5Bsubmit%5D=%D0%92%D0%BE%D0%B9%D1%82%D0%B8
4) в ответ приходит заголовок с установленным sid=5c350a3d16beab23825fa60dcd61b7b0625f6280%7E025af2fbf26393b493de4c1566b56a4d
Date: Fri, 07 Jan 2011 11:09:20 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Server: Apache/2.2.16 (FreeBSD)
X-Powered-By: PHP/5.2.14
Set-Cookie: kohanasession=8e03f82cff3de9516caf9fb8a7634025; expires=Fri, 07-Jan-2011 13:09:20 GMT; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: kohanasession=966a8dd1d780909c84e6df7c3c69fb38645dda7c%7E8e03f82cff3de9516caf9fb8a7634025; expires=Fri, 07-Jan-2011 13:09:20 GMT; path=/
Set-Cookie: sid=5c350a3d16beab23825fa60dcd61b7b0625f6280%7E025af2fbf26393b493de4c1566b56a4d; expires=Sat, 08-Jan-2011 11:11:00 GMT; path=/
location: http://turbobit.net/
Content-Length: 0
5) далее запрос корневой страницы сайта и ответ страницы с успешной авторизацией:
GET / HTTP/1.1
Host: turbobit.net
Connection: keep-alive
Referer: http://turbobit.net/
Cache-Control: max-age=0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3
Cookie: compid=8387d32d982eac6c4172d3c1bf193d829d708271%7E6BACB6EFF75E009DA02D12C21908ADD8; __utmz=1.1294398300.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.2107817033.1294398300.1294398300.1294398300.1; __utmc=1; __utmb=1.1.10.1294398300; kohanasession=966a8dd1d780909c84e6df7c3c69fb38645dda7c%7E8e03f82cff3de9516caf9fb8a7634025; sid=5c350a3d16beab23825fa60dcd61b7b0625f6280%7E025af2fbf26393b493de4c1566b56a4d
HTTP/1.1 200 OK
Date: Fri, 07 Jan 2011 11:09:20 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: Apache/2.2.16 (FreeBSD)
X-Powered-By: PHP/5.2.14
Set-Cookie: kohanasession=8e03f82cff3de9516caf9fb8a7634025; expires=Fri, 07-Jan-2011 13:09:20 GMT; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: kohanasession=966a8dd1d780909c84e6df7c3c69fb38645dda7c%7E8e03f82cff3de9516caf9fb8a7634025; expires=Fri, 07-Jan-2011 13:09:20 GMT; path=/
Content-Encoding: gzip
<html>
... (тело документа)
</html>
мой код:
<?php
$socket = fsockopen('www.turbobit.net', 80, $errno, $errstr, 30);
if(!$socket)die("$errstr($errno)");
fwrite($socket, "GET / HTTP/1.1\r\n");
fwrite($socket, "Host: turbobit.net\r\n");
fwrite($socket, "Connection: keep-alive\r\n");
fwrite($socket, "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n");
fwrite($socket, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10\r\n");
fwrite($socket, "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n");
fwrite($socket, "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n\r\n");
//теперь читаем и выводим ответ
$answer = '';
while(!feof($socket)){
$answer.= fgets($socket, 4096);
}
$answer = mb_convert_encoding($answer, "windows-1251", "UTF-8");
//fclose($socket);
preg_match_all("|Set-Cookie:(.*?)=(.*?)\;|si",$answer,$cookie);
echo '<pre style="text-align:left;">';
echo 'массив куки документа
';
print_r($cookie);
print_r($_COOKIE);
echo $answer;
echo '</pre>';
fwrite($socket, "POST /user/login HTTP/1.1\r\n");
fwrite($socket, "Host: turbobit.net\r\n");
fwrite($socket, "Connection: Keep-Alive\r\n");
fwrite($socket, "Referer: http://turbobit.net/\r\n");
fwrite($socket, "Content-Length: 103\r\n");
fwrite($socket, "Cache-Control: max-age=0\r\n");
fwrite($socket, "Origin: http://turbobit.net\r\n");
fwrite($socket, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($socket, "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n");
fwrite($socket, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10\r\n");
fwrite($socket, "Accept-Encoding: gzip,deflate,sdch\r\n");
fwrite($socket, "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n");
fwrite($socket, "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n");
fwrite($socket, "Cookie: kohanasession=".$cookie[2][1]."; compid=".$cookie[2][2]."; __utmz=".$_COOKIE['__utmz']."; __utma=".$_COOKIE['__utma']."; __utmc=".$_COOKIE['__utmc']."; __utmb=".$_COOKIE['__utmb']."\r\n");
fwrite($socket, "user%5Blogin%5D=amd12%40mail.ru&user%5Bpass%5D=zyvurara&user%5Bsubmit%5D=%D0%92%D0%BE%D0%B9%D1%82%D0%B8\r\n\r\n");
$answer = '';
while(!feof($socket)){
$answer.= fgets($socket, 4096);
}
//$answer = mb_convert_encoding($answer, "windows-1251", "UTF-8");
echo '---------------------------------------------------
';
echo $answer;
fwrite($socket,"GET / HTTP/1.1\r\n");
fwrite($socket,"Host: turbobit.net\r\n");
fwrite($socket,"Connection: keep-alive\r\n");
fwrite($socket,"Referer: http://turbobit.net/\r\n");
fwrite($socket,"Cache-Control: max-age=0\r\n");
fwrite($socket,"Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n");
fwrite($socket,"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10\r\n");
fwrite($socket,"Accept-Encoding: gzip,deflate,sdch\r\n");
fwrite($socket,"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4\r\n");
fwrite($socket,"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.3\r\n");
fwrite($socket,"Cookie: compid=".$cookie[2][2]."; __utmz=1.1294398300.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.2107817033.1294398300.1294398300.1294398300.1; __utmc=1; __utmb=1.1.10.1294398300; kohanasession=".$cookie[2][1].";\r\n\r\n");
$answer = '';
while(!feof($socket)){
$answer.= fgets($socket, 4096);
}
//$answer = mb_convert_encoding($answer, "windows-1251", "UTF-8");
echo '---------------------------------------------------
';
echo $answer;
fclose($socket);
?>