Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Сеть > Не могу авторизироваться через CURL |
Автор: Kornev 27.6.2012, 01:44 | ||
Помогите, пожалуйста, разобраться. Написал код, который заходит на сайт и потом пробует на нем авторизироваться POST запросом. Но почему то не авторизируется :( Не могу разобраться в чем ошибся...?
|
Автор: Kornev 8.7.2012, 00:39 |
Ув. форумчане, очень жду ответов, так как сам не могу решить эту проблему, хоть и пытаюсь всю неделю... ![]() |
Автор: krypt3r 9.7.2012, 06:01 |
Вы эта, включите хотя бы дебажный режим. А также запустите сниффер |
Автор: MaXL 9.7.2012, 06:50 | ||||
а зачем вы ещё раз это делаете ? вообще, в этот файл что-нибудь записывается после работы скрипта ?
![]() И вообще, повыводите контент, что возвращает сервак. |
Автор: Kornev 11.7.2012, 22:07 | ||||||||||||
Вы уж извините, но совсем не понимаю о чем именно идет речь. Если возможно, поясните более детально, пожалуйста. Добавлено через 13 минут и 45 секунд
закомментировал вторую часть кода и сделал echo $VIEWSTATE на этапе ее формирования. Результат вроде как правильный... По крайней мере похож на тот, который выдает мне браузер, когда захожу на https://e-shop.pcshop.ua/ Я так понял, что эта переменная формируется каждый раз новая. По этому и сделал парсинг в 2-а этапа. Сначала захожу на https://e-shop.pcshop.ua/ для получения этой переменной. Потом передаю на https://e-shop.pcshop.ua/Login.aspx?ReturnUrl=%2fMainPage.aspx Пост запрос с этой переменной включительно. Почитал еще немного форумные обсуждения... Говорят, что вроде бы нужно в переменные пост запроса добавить имя кнопки Submit. В моем случае это вроде как <input type="submit" name="PleaseWaitButton" value="" id="PleaseWaitButton" class="WaitBtnClass" Теперь массив $post выглядит так: $post = array( '__VIEWSTATE' => $VIEWSTATE, 'usr' => $login, 'pwd' => $password, 'PleaseWaitButton' => "" ); Но все равно ничего не работает. Ответ сервера:
Мой файл php изменил так:
Ребята, помогите разобраться, пожалуйста. Если нужно, готов отблагодорить ![]() |
Автор: Kornev 12.7.2012, 09:06 |
Нашел следующую проблему: Функция http_build_query($post) на выходе выдает такие данные: __VIEWSTATE=%2FwEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1%2BCXU18LG2jhs23A8AjWmNL5yzQ%3D%3D&usr=user&pwd=password Хотя в оригинале они должны выглядеть так: __VIEWSTATE=/wEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1+CXU18LG2jhs23A8AjWmNL5yzQ==&usr=user&pwd=password Т.е. переменная __VIEWSTATE должна быть "/wEPaA8FDzhjZjJlMjNlM2FiMmU0NWQ1+CXU18LG2jhs23A8AjWmNL5yzQ==" Смущает то, что она заканчивается на два знака ==, это никак не повлиеет на Post запрос? |
Автор: Kornev 12.7.2012, 09:50 |
значения user и password не настоящие. Если кому то необходимы настоящие значения для тестирования, дайте знать. |
Автор: MaXL 13.7.2012, 08:31 |
Всё правильно она выдаёт. Значения параметров преобразованные с помощью urlencode. |
Автор: Kornev 15.7.2012, 17:48 |
В чем же тогда проблема? Может кто-то может сказать что нибудь умное по поводу ответа сервера. Я его выкладывал ранее... В какую сторону копать? |
Автор: MaXL 16.7.2012, 06:49 |
Kornev, файл с cookies имеет права на запись скриптом ? |
Автор: Kornev 16.7.2012, 11:16 | ||
Проверил. Права доступа 777 Содержимое файла: # Netscape HTTP Cookie File # http://www.netscape.com/newsref/std/cookie_spec.html # This file was generated by libcurl! Edit at your own risk. e-shop.pcshop.ua FALSE / FALSE 0 ASP.NET_SessionId udvnh055ix2jwz23jcjez145 Добавлено через 5 минут и 48 секунд Вы не знаете, сколько может стоит реализовать этот скрипт? Я уже задумываюсь, может стоит кому то денег заплптить... |
Автор: MaXL 17.7.2012, 05:13 | ||||
зашёл. посмотрел. вы не все поля передаёте. при нажатии на кнопку отправляются такие поля:
знаю. в личку ![]() |
Автор: Kornev 16.8.2012, 22:49 | ||||||||
Установил снифер ( HttpAnalyzerStdV6 ), чтоб проанализировать поведение браузера... Пока ничего нового не заметил. Во вкладке PostData вроде теже переменные:
во вкладке Header информации конечно немного больше:
Нашел на форумах, что есть такая настройка для CURL: curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); а массив $headers выглядит примерно так:
Но не могу разобраться, стоит ли вообще в эту сторону копать. Или проблема лежит где то в другом месте... Написанный код по прежнему вызывает ошибку на сервере. Вот принт скрин: http://s2.ipicture.ru/Gallery/Viewfull/12519010.html http://s2.ipicture.ru/uploads/20120816/U5A1yo9W.jpg На текущий момент код приобрел следующий вид: Логин и пароль указанны не настоящие. Если для тестирования нужны настоящие, пишите...
|
Автор: нуп 17.8.2012, 01:32 |
В коде много переменных которые не объявлены: $curl, $page, $xml_data, $credentials Делайте все поэтапно, выводите результат и смотрите что не так. |
Автор: Kornev 17.8.2012, 12:56 | ||
Извиняюсь. Из-за неправильного КОПИ - ПАСТА в коде был неиспользуемый кусок кода. отредактированный вариант по прежнему не работает:
Вопрос в следующем: стоит ли копать в сторону передаваемой переменной $headers и функции curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); Могут ли они вызывать такую ошибку? В прошлых версиях кода эта переменная и функция вообще не использовались. Ошибка была такая же... |
Автор: Fortop 17.8.2012, 22:52 |
Что-то он на таких сайтах лежит, что я даже опасаюсь его качать... Fiddler2 вам в помощь. Добавлено через 43 секунды В нем вы можете и просмотреть отправленные запросы и сэмулировать свои. Когда получите результат, пишите в код. |