Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

cURL и куки

28K
08 марта 2011 года
Furius
19 / / 22.11.2007
Всем доброго времени суток.
Постигла меня проблема залогиниться на сайте с помощью cURL да спарсить одну страничку. А чтобы залогиниться, нужно установить правильные куки. Так вот. Есть код, которым я пытаюсь залогиниться:
Код:
<?php
# данные для формирования запроса
$login = 'tratata@tratata.ru';
$pass = 'tratata';
$authurl = 'http://moswar.ru';
$agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5';

# массив данных для аутентификации
$logindata = array();
$logindata['action'] = 'login';
$logindata['email'] = $login;
$logindata['password'] = $pass;

# подрубаемся

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $authurl);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($logindata));
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

$data = curl_exec($ch);
echo $data;

?>

В файл cookie.txt попадает следующая фигня:
 
Код:
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

www.moswar.ru   FALSE   /   FALSE   0   PHPSESSID   e1j0eb3i3h68a486blbot63nf2
www.moswar.ru   FALSE   /   FALSE   1268050467  authkey deleted
www.moswar.ru   FALSE   /   FALSE   1268050467  userid  deleted
.moswar.ru  TRUE    /   FALSE   1268050467  authkey deleted
.moswar.ru  TRUE    /   FALSE   1268050467  userid  deleted


А вот что ловит файрбаг.
http://habreffect.ru/files/9d0/0ee18d491/image22046891.png

Ну и нихрена не логинится с помощью сURL. Прощу помощи, т.к. запутался в конец уже с этими куками :)
278
08 марта 2011 года
Alexander92
1.1K / / 04.08.2008
А какие конкретно куки должны устанавливаться? Вас не смущает, кстати, что CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE ссылаются на один и тот же файл, вы уверены, что это корректно отрабатывает?
28K
08 марта 2011 года
Furius
19 / / 22.11.2007
Цитата:
CURLOPT_COOKIEFILE The name of the file containing the cookie data. The cookie file can be in Netscape format, or just plain HTTP-style headers dumped into a file.

CURLOPT_COOKIEJAR The name of a file to save all internal cookies to when the handle is closed, e.g. after a call to curl_close.


Меня в описании CURLOPT_COOKIEJAR смущает только слово internal. А что должно -- так там в конце ссылка на картинку, на ней есть ответ сервера с нужной кукой. Да вот только не попадает она в файлик :) Сейчас попробую переименовать один.

UPD. Попробовал. Сохраняется только в файле, указанным в CURLOPT_COOKIEJAR. Второй файлик остается пустым. Не логиниться :)

278
08 марта 2011 года
Alexander92
1.1K / / 04.08.2008
Покажите исходный cookies.txt, который вы пытаетесь отправлять, посмотрим аккуратно.
28K
08 марта 2011 года
Furius
19 / / 22.11.2007
Исходный файл пустой. Логика была такая. Отправляем форму, в ответ приходит заголовок с куками нужными. С помощью curl они сохраняются в файл и отправляются обратно. Как-то так.
Отловил я свой косяк. С куками может все и хорошо. Форма неправильно отправляется. Буду думать.
278
08 марта 2011 года
Alexander92
1.1K / / 04.08.2008
Попробуйте теста ради переписать ваш код через голые сокеты, без cUrl'а.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог