|
|
|
| Здравствуйте.
Я столкнулся с небольшой проблемой. Помогите разобраться, пожалуйста.
Задача: авторизоваться на сайте manheim.com (адрес формы авторизации https://www2.manheim.com/login).
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'https://www2.manheim.com/login/authenticate',
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_TIMEOUT => 10,
CURLOPT_COOKIEFILE => dirname(__FILE__).'/cookie.txt',
CURLOPT_COOKIEJAR => dirname(__FILE__).'/cookie.txt',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_USERAGENT => 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.62 Version/11.01',
CURLOPT_REFERER => 'http://manheim.com',
CURLOPT_POSTFIELDS => 'user[username]=username&user[password]=password&remember=1&submit=Login',
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_SSL_VERIFYHOST => 0
//CURLOPT_HEADER => 1
)
);
$data = curl_exec($ch);
$error = curl_error ( $ch );
curl_close($ch);
echo ($data.' '.$error);
|
Вместо username и password подставляются действительные данные, соответственно.
При авторизации через браузер все проходит отлично. А при попытке через данные скрипт меня перебрасывает форму авторизации, где необходимо ввести тоже самое + код с картинки (captcha). Я не могу понять, в чем проблема, почему не пропускает. Подскажите, что не так.
Заранее благодарю! | |
|
|
|
|
|
|
|
для: G-Style
(20.03.2011 в 14:20)
| | В точности сложно сказать, почему на самом деле так происходит, скорее всего не все cookie передаете, или не ту информацию в cookie передаете. Странно, что вы подставляете текстовые файлы - в таких сервисах очень часто используется сессия - т.е. содержимое cookie разное для каждого нового пользователя и если вы передаете SID сессии, которой уже нет на сервере или еще нет - реакция вполне ожидаемая. | |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 15:03)
| | Да, в cookie,txt действительно записывается SID сервером manheim.com. Тогда получается, что сессии уже нет на сервер... почему так? И что мне нужно сделать, чтобы исправить это? Я сейчас отключил опции CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE но это не помогло... | |
|
|
|
|
|
|
|
для: G-Style
(20.03.2011 в 18:29)
| | Нужно обратиться скриптом к серверу, получить свежий SID и вторым запросом передать его. Тогда будет воспроизведено поведение браузера. | |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 18:47)
| | Попробую, спасибо!
Еще появилась такая идея — авторизоваться через браузер, а затем скопировать/создать значения куки для скрипта... | |
|
|
|
|
|
|
|
для: G-Style
(20.03.2011 в 19:24)
| | А скрипт выполняется с той же машины, откуда прошла авторизация? В противном случае - сервер тоже может тоже заупрямиться. | |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 19:26)
| | Да, с той же. Я хочу попробовать с браузера посмотреть значения куки, а затем передать эти же значения через опцию CURLOPT_COOKIE, ну и SID тоже соответственно. | |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 19:26)
| | Все, задача решена!
Огромное спасибо, cheops, за Вашу помощь!!! | |
|
|
|