Нужно сделать имитацию авторизации путем анализа заголовков. При отсылке нижеследующего заголовка через стороннюю программу все пашет и авторизируется: 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 юзать. Он как-то странно пашет (из четырех хостов, где он установлен, работает только на одном) и не везде есть, к тому же. Пасиб
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; } ?>