PDA

Просмотр полной версии : Отправка POST на mail.ru


ozerin
20.06.2009, 12:27
Вот функция. Отправляет на страницу регистрации POST запрос и куки, которые были получены при загрузки страницы.

function sendpost($query,$cookie) {
$hostname = "win.mail.ru";
$path = "/cgi-bin/signup";
// Устанавливаем соединение
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) {echo "$errstr ($errno)<br />\n";} else {
// Данные HTTP-запроса
$data=$query."\r\n\r\n";
// Заголовок HTTP-запроса
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Cookie: $cookie;\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while (!feof($fp)) {$line .= fgets($fp, 1024);}
fclose($fp);
};
echo $line;
}


Отправляю:
$query: x_9685fd73529a3cfd=%CA%E0%F2%FF&x_ce4785fc7ebe7b11=%CF%E5%F2%F0%EE%E2%E0&RegistrationDomain=list.ru&ID=fCmzn9JY&Count=1&back=&x_aecbb5dbdf0ad71d=6&BirthMonth=2&x_8f71cf9be8932562=1984&x_89760966ed8ffbab=4a331530&x_d6ba3f595fc6a53e=30b7467&x_3be959b60b3314cc=30b7467&Password_Question=%CD%EE%EC%E5%F0+%EF%E0%F1%EF%EE% F0%F2a&x_0bc47e987ac89495=&x_029950df7db0582e=380678004&x_f9303e65dfaba308=&RemindPhone=&x_009ef226a1e2d2cc=2&Mrim.Country=24&Mrim.Region=25&geo_countryId=24&geo_regionId=999999&geo_cityId=25&your_town=%CC%EE%F1%EA%E2%E0%2C+%D0%EE%F1%F1%E8%FF&geo_country=24&geo_region=undefined&geo_place=&my_create=1&x_reg_id=PLxOwcIk&security_image_id=&x_a8bd993acd3fd808=MBA7E0&B1=+%C7%E0%F0%E5%E3%E8%F1%F2%F0%E8%F0%EE%E2%E0%F2% FC+%EF%EE%F7%F2%EE%E2%FB%E9+%FF%F9%E8%EA+
$cookie: mrcu=5C7A4A33153648DAF104180B6A5F

в ответ получаю все ту же пустую страницу регистрации. как будто бы запрос мимо пролетел совершенно.. хоть бы ошибки какие выдал..
помогите разобраться пожалуйста в чем проблема.

попугай
20.06.2009, 13:11
После такого запроса в ответ тебе даются куки и заголовок Location, который нужно загрузить с этими куками...

Делал так?

ozerin
20.06.2009, 13:28
точно, сейчас проверил через окно перехвата на мозиле.
блин... там вообще туева хуча страниц выходит после отправки запроса.
как проще реализовать имитацию действий браузера в этом случае?

попугай
20.06.2009, 13:43
Да там всего два запроса для реги - отправить регистрационные данные, а затем перейти по урлу в заголовке location + принятые куки туда отослать...

И все... ящик зареган

mr.The
20.06.2009, 14:01
а затем перейти по урлу в заголовке location + принятые куки туда отослать...
сделай свой регер на курле, он пререходит по location автоматически. либо ковыряйся с регулярками

ozerin
20.06.2009, 14:13
mr.The, и куки он тоже автоматически передает когда переходит по location?
curl неудобен т.к.я тестирую на денвере а там нету его.

wildshaman
20.06.2009, 14:23
mr.The, и куки он тоже автоматически передает когда переходит по location?
curl неудобен т.к.я тестирую на денвере а там нету его.
да, передает, если два параметра указать.
качай с сайта денвера расширанеия для php5, там curl есть.

Deathdreams
20.06.2009, 14:37
curl на денвере есть,надо в php.ini включить.

geforse
20.06.2009, 15:33
mr.The, и куки он тоже автоматически передает когда переходит по location?
curl неудобен т.к.я тестирую на денвере а там нету его.

Инструкция (http://www.denwer.ru/packages/php5.html) :)