Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Логин на liveinternet.ru


Автор: Ockonal 8.12.2010, 14:22
Здравствуйте, надо написать скрипт для логина на liveinternet.ru (журналы) (по сути, получить верные cookies).
Ситуация такая, есть страница:
http://www.liveinternet.ru/journals.php?s=&action1=login
В ней форма вида:
Код

<form action="member.php?rndm=1291807080" method="post">
...
</form>

rndm значения в action постоянно меняется. Далее идет редирект-страница на liveinternet.ru. Я никак не смог выловить пост-запрос фаербагом, поэтому смотрел на форму вручную. Вот код, что у меня получился:
Код

// Загружаем страницу с формой логина
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/liveinternetCookies");
curl_setopt($ch, CURLOPT_URL, "http://www.liveinternet.ru/journals.php?s=&action1=login");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$loginPage = curl_exec ($ch);
curl_close ($ch);
unset($ch);

// Парсю rndm значение для формы
preg_match('/\"member\.php\?rndm=(\d*)\"/i', $loginPage, $formAction);
$rndmVal = $formAction[1];

// Теперь пытаюсь отправить пост-запрос. В программе существуют переменные $login & $password, где логин и пароль соответственно
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/liveinternetCookies");
curl_setopt($ch, CURLOPT_URL, "http://www.liveinternet.ru/member.php?rndm={$rndmVal}");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "url=http://www.liveinternet.ru/&url1=http://www.liveinternet.ru&username={$login}&password={$password}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
// На всякий случай поставил реферерскую страницу
curl_setopt ($ch, CURLOPT_REFERER, "http://www.liveinternet.ru/member.php?rndm={$rndmVal}");

$afterLogin = curl_exec ($ch); // execute the curl command
curl_close ($ch);
unset($ch);

// И теперь вручную пытаюсь загрузить главную страницу
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://www.liveinternet.ru/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/liveinternetCookies");

$result=curl_exec($ch);
curl_close ($ch);

echo $result;


В итоге, `echo $result` выводит мне главную страницу, но я там не авторизирован. Может кто уже стыкался с этим?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)