|
|
|
| Значит вот такие заголовки
cmd> GET / HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: netwars.ru
cmd>
hdr> HTTP/1.1 200 OK
hdr> Date: Sun, 16 Apr 2006 22:26:14 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
RequestDone Error = 0
StatusCode = 200
|
Я соединяюсь с индексной страницей так
<?
$hostname="netwars.ru";
$fp=fsockopen($hostname, 80, $errno, $errstr, 30);
if(!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем запрос для отправки его серверу
$headers = "GET / HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: netwars.ru\r\n\r\n";
//отправляем запрос
fwrite($fp, $headers);
}
?>
|
всё работает ... дальше мне нужно авторизоваться ... и пройти в защищённую область и путешествовать там ...
вот как это сделать уже не знаю!
Знаю только что если авторизовываться то браузер и сервер обмениваются следующими заголовками
cmd> POST /enter.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> Content-Type: application/x-www-form-urlencoded
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Content-Length: 48
cmd>
hdr> HTTP/1.1 302 Found
hdr> Date: Sun, 16 Apr 2006 22:26:28 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Set-Cookie: PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Location: /welcome.php
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
cmd> GET /welcome.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Cookie: PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402
cmd>
hdr> HTTP/1.1 200 OK
hdr> Date: Sun, 16 Apr 2006 22:26:29 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Set-Cookie: PHPSESSID=9eac06a75d85187cfa97a0de5a3c7402; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
RequestDone Error = 0
StatusCode = 200
|
на всякий случай объясню, что cmd> это браузер а hdr> это сервер ...
ну так вот, загвоздка у меня в том, что я не знаю как отправлять так заголовки (тоесть 2 раза за 1 сеанс) ну или как ещё выразиться понятнее ...
при переходе на страницу ... браузер отсыдает заголовки, получает ответ, отсылает, и ещё раз что то получает ...
Мне бы это всё осознать и понять как можно 2 раза ... с вкраплениями ответов сервера отправить заголовки ... | |
|
|
|
|
|
|
|
для: Oligarx
(17.04.2006 в 02:59)
| | Кто-нибуть поможет ?! ... вроде всё подробно описал | |
|
|
|
|
|
|
|
для: Oligarx
(17.04.2006 в 02:59)
| | А так и отправляйте - формируйте новый $header
<?php
// Формируем запрос для отправки его серверу
$headers = "GET / HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: netwars.ru\r\n\r\n";
//отправляем запрос
fwrite($fp, $headers);
?>
|
и шлите его fwrite(). | |
|
|
|
|
|
|
|
для: cheops
(17.04.2006 в 18:29)
| | Ладно, спрошу подругому ...
cmd> POST /enter.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> Content-Type: application/x-www-form-urlencoded
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Content-Length: 48
cmd>
hdr> HTTP/1.1 302 Found
hdr> Date: Mon, 17 Apr 2006 15:19:03 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Set-Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Location: /welcome.php
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
cmd> GET /welcome.php HTTP/1.0
cmd> Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
cmd> Referer: http://netwars.ru
cmd> User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)
cmd> Host: auth.netwars.ru
cmd> Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26
cmd>
hdr> HTTP/1.1 200 OK
hdr> Date: Mon, 17 Apr 2006 15:19:04 GMT
hdr> Server: Apache/1.3.33 (Unix) PHP/5.0.5
hdr> X-Powered-By: PHP/5.0.5
cookie> PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Set-Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
hdr> Expires: Thu, 19 Nov 1981 08:52:00 GMT
hdr> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
hdr> Pragma: no-cache
hdr> Connection: close
hdr> Content-Type: text/html; charset=WINDOWS-1251
RequestDone Error = 0
StatusCode = 200
|
Вот заголовки общения браузера с сервером ...
значит вначале мы переходим на страницу /enter.php , сервер нам отвечает HTTP/1.1 302 Found (видимо это заголовок авторизации, хотя точно я не знаю) и самое интересное cookie> PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/ я знаю, что можно куки записать куда угодно (например в txt или в базу и использовать. Напомню, что это должен быть скрипт ....)
а потом ещё и Location: /welcome.php .... нас выкидывает на другую страницу и там уже браузер отправляет куки серверу для проверки подленности ... вот это меня и интересует .
вопросы :
1) как всётки куки забрать и записать куданибуть ...
2) как осуществить такой переход ? разбить на 2 скрипта или как ?
Да, совсем забыл спросить, а вот ник и пароль как отправляются ? ... чё то в заголовках я их не увидел ... | |
|
|
|
|
|
|
|
для: Oligarx
(17.04.2006 в 19:27)
| | 302 - это переадресация на /welcome.php - видите следующий GET уже /welcome.php запрашивает - это реакция на 302 HTTP-код. А пароль и логин скорее всего в сессии хранятся - передаются они первым метдом POST в теле HTTP-документа (Content-Length: 48 - 48 байт) - POST /enter.php HTTP/1.0 примерно так, как это описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1879. | |
|
|
|
|
|
|
|
для: cheops
(18.04.2006 в 01:29)
| | Объясните пожалуйста как мне из заголовков выдернуть куки и сессию чтоб записать куда-нибуть для дальнейшего использования ...
Да, я ещё не допонял, пароль то нужно отправлять enter.php а затем меня переадресовывает на welcome.php и там уже нужно отсылать сесию (куки) ... и в последующие страницы тоже отправлять куки ? | |
|
|
|
|
|
|
|
для: Oligarx
(18.04.2006 в 18:06)
| | Неужели кроме cheops'а никто не может ответить ? ... или просто не хочет :((
Вот попробывал тут кой чего ещё написать ...
<?
$hostname="netwars.ru";
$fp=fsockopen($hostname, 80, $errno, $errstr, 30);
if(!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем запрос для отправки его серверу
[b]$data = "Login="MYNIK"&Password="27252725"&add="%C2%F5%EE%E4."\r\n\r\n";[/b]
$headers = "POST /enter.php HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "Referer: http://netwars.ru\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: auth.netwars.ru\r\n";
$headers .= "Content-Length: 48\r\n\r\n";
//отправляем запрос
fwrite($fp, $headers.$data);
}
header('Location: page2.php');
?>
|
в выделеной строчке таится ошибка
Parse error: parse error, unexpected T_STRING in z:\home\localhost\www\netwars\page1.php on line 8
как ни пытался её составить ... всё время ругается. Логин и пароль (логин латинскими буквами а пароль цифрами, поэтому не перекодирую ... ) | |
|
|
|
|
|
|
|
для: Oligarx
(18.04.2006 в 21:32)
| | Поднимаю тему ... | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 11:17)
| | ... | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 15:41)
| | Ну помогите же ктонибуть :(( ... такое ощущение что меня игнорируют ... | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 17:39)
| | $data = "Login=MYNIK&Password=27252725&add=%C2%F5%EE%E4"
и Content-Length поправить. | |
|
|
|
|
|
|
|
для: Trianon
(19.04.2006 в 18:12)
| | что нужно поправить я и сам знаю а вот как поправить ... я уже по всякому пробывал но не получается | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 18:41)
| | Примерно так:
$content_length = strlen($data);
$headers .= "Content-Length: $content_length\r\n\r\n";
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.04.2006 в 18:49)
| |
$data = "Login="MYNIK"&Password="27252725"&add="%C2%F5%EE%E4."\r\n\r\n";
|
на эту строчку всё равно ругается :((
проверьте сразу этот код полностью ... может туе ещё где грабли ?
<?
$hostname="netwars.ru";
$fp=fsockopen($hostname, 80, $errno, $errstr, 30);
if(!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Формируем запрос для отправки его серверу
$data = "Login="xxxxxxxx"&Password="xxxxxx"&add="%C2%F5%EE%E4."\r\n\r\n";
$content_length = strlen($data);
$headers = "POST /enter.php HTTP/1.0\r\n";
$headers .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
$headers .= "Referer: http://netwars.ru\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n";
$headers .= "Host: auth.netwars.ru\r\n";
$headers .= "Content-Length: $content_length\r\n\r\n";
//отправляем запрос
fwrite($fp, $headers);
}
echo($_COOKIE['auth.netwars.ru']);
header('Location: page2.php');
?>
|
И вы ещё не ответили как куки изъять ? так как у меня или как то подругому ? | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 19:01)
| | >$data =
>"Login="MYNIK"&Password="27252725"&add="%C2%F5%EE%E4."
> на эту строчку всё равно ругается :((
Я исправил Вам ошибки в этой строке. Вы вернули всё назад. Не путайте обрамляющие кавычки и кавычки - символы. И не ставьте кавычки там, где они не требуются, а уж тем более - где мешают. В блоке данных POST-запроса они явно мешают. Если конечно у Вас логин и пассворд кавычки не содержат сами собой. Но это а) экзотика явно не Вашего случая, и б) если и вправду появится - потребует специального кодирования кавычек в виде %22 | |
|
|
|
|
|
|
|
для: Oligarx
(18.04.2006 в 18:06)
| | Об этом можно почитать более подробно в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050 | |
|
|
|
|
|
|
|
для: cheops
(19.04.2006 в 18:10)
| | Видимо в моём случае нужно добавить заголовок
$headers .= "Cookie: name=auth.netwars.ru; PHPSESSID=XXXXXXXXXXX;\r\n"; | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 18:57)
| | Тогда уж:
$headers .= "Cookie: PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; | |
|
|
|
|
|
|
|
для: Trianon
(19.04.2006 в 19:04)
| | объясните ещё пожалуйста, как выдрать из ответа сервера cookie> PHPSESSID=f4ff1959ce0b0073c81f76bccf5e2d6d; path=/
из приведённого поста не понял как :(( | |
|
|
|
|
|
|
|
для: Oligarx
(19.04.2006 в 19:23)
| | >объясните ещё пожалуйста, как выдрать из ответа сервера
>cookie> PHPSESSID=f4ff1959ce0b0073c81f76bccf5e2d6d; path=/
>
то, что Вы процитировали, Вы в отклике не найдете. Это пометка mini-browser'a которым Вы пользуетесь, вероятно.
Выдирать кукис нужно будет из этой строки:
Set-Cookie: PHPSESSID=b6fbbd0f40d0b8ba0cfe26b21de21a26; path=/
Для этого, наверное, придется заголовок отклика читать построчно (возможно склеивая перенесенные строки полей, о чем обычно забывают) до первой пустой строки, и каждую строку проверять на Set-Cookie. С помощью функций сравнения строк или регулярными выражениями - это уж дело личного вкуса. Найденные строки разбирать на компоненты согласно синтаксису кукисов, и т.д. | |
|
|
|
|
|
|
|
для: Trianon
(19.04.2006 в 19:37)
| | Да. действительно я пользовался mini-browser'ом ...
можно на примере, как это всё сделать ? просто очень нужно
Да, и самое интересное, покажите пример, как получить заголовки ответа сервера ... а то до сих пор не знаю :(( ... | |
|
|
|