Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Проблемы с отсылкой заголовков через PHP |

15.04.2009, 18:18
|
|
Участник форума
Регистрация: 30.07.2008
Сообщений: 152
Провел на форуме: 659306
Репутация:
34
|
|
Проблемы с отсылкой заголовков через PHP
Нужно сделать имитацию авторизации путем анализа заголовков. При отсылке нижеследующего заголовка через стороннюю программу все пашет и авторизируется:
PHP код:
POST http://win.mail.ru/cgi-bin/auth HTTP/1.1
Content-Type: application/x-www-form-urlencoded
page=&post=&login_from=&Login=user&Domain=mail.ru&Password=1234
Но у меня хоть убей не вышло сделать тоже самое на php. Всегда пишет 400 Bad Request или ещё что-нибудь. Сокеты включены, все включено. Дело в скрипте. Часа два уже вожусь и сдвигов - ноль. Вот код, который я юзал:
PHP код:
<?php
// открываем сокет на хост: локалост и на 80 порт (стандартный веб)
$fp = fsockopen('win.mail.ru', 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$headers = "POST http://win.mail.ru/cgi-bin/auth HTTP/1.1"; // отвечает за тип протокола!
$headers .= "Host: mail.ru\r\n";
$headers .= "Referer: http://www.site.ru/index.html\r\n";
$headers .= "Cookie: income=1\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded";
$headers .= "Content-Length: 35\r\n";
$headers .= ": \r\n";
$headers .= "page=&post=&login_from=&Login=user&Domain=mail.ru&Password=1234";
$headers .= "Connection: Close";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers);
// Получаем ответ
$line='';
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
Спасите меня плз  Как отправить эти сраные заголовки на серв? Объясните хотя бы принцип... что у меня не так? Плз не предлагайте cURL юзать. Он как-то странно пашет (из четырех хостов, где он установлен, работает только на одном) и не везде есть, к тому же. Пасиб
Последний раз редактировалось sNt; 15.04.2009 в 18:20..
|
|
|

15.04.2009, 18:34
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
PHP код:
<?php
$fp = fsockopen('win.mail.ru', 80, $errno, $errstr, 30);
if ($fp)
{
$data = "Login=login&Domain=mail.ru&Password=pass";
$headers = "POST /cgi-bin/auth HTTP/1.1\n"; // отвечает за тип протокола!
$headers .= "Host: win.mail.ru\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\n";
$headers .= "Content-Length: ".strlen($data)."\n\n".$data;
fwrite($fp, $headers);
$line='';
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
echo $line;
}
?>
|
|
|

15.04.2009, 18:37
|
|
Участник форума
Регистрация: 30.07.2008
Сообщений: 152
Провел на форуме: 659306
Репутация:
34
|
|
Спс большое ))
|
|
|

15.04.2009, 18:38
|
|
Постоянный
Регистрация: 16.04.2008
Сообщений: 889
Провел на форуме: 12942062
Репутация:
1550
|
|
Сообщение от sNt
Нужно сделать имитацию авторизации путем анализа заголовков. При отсылке нижеследующего заголовка через стороннюю программу все пашет и авторизируется:
PHP код:
POST http://win.mail.ru/cgi-bin/auth HTTP/1.1
Content-Type: application/x-www-form-urlencoded
page=&post=&login_from=&Login=user&Domain=mail.ru&Password=1234
Но у меня хоть убей не вышло сделать тоже самое на php. Всегда пишет 400 Bad Request или ещё что-нибудь. Сокеты включены, все включено. Дело в скрипте. Часа два уже вожусь и сдвигов - ноль. Вот код, который я юзал:
PHP код:
<?php
// открываем сокет на хост: локалост и на 80 порт (стандартный веб)
$fp = fsockopen('win.mail.ru', 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
$headers = "POST http://win.mail.ru/cgi-bin/auth HTTP/1.1"; // отвечает за тип протокола!
$headers .= "Host: mail.ru\r\n";
$headers .= "Referer: http://www.site.ru/index.html\r\n";
$headers .= "Cookie: income=1\r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded";
$headers .= "Content-Length: 35\r\n";
$headers .= ": \r\n";
$headers .= "page=&post=&login_from=&Login=user&Domain=mail.ru&Password=1234";
$headers .= "Connection: Close";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers);
// Получаем ответ
$line='';
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>
Спасите меня плз  Как отправить эти сраные заголовки на серв? Объясните хотя бы принцип... что у меня не так? Плз не предлагайте cURL юзать. Он как-то странно пашет (из четырех хостов, где он установлен, работает только на одном) и не везде есть, к тому же. Пасиб
Скорее Всего, трабла в Content-Length: 35
Юзай курл, там все проще 
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|