Здравствуйте, надо написать скрипт для логина на 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` выводит мне главную страницу, но я там не авторизирован. Может кто уже стыкался с этим? |