cURL авторизация, как получить правильные заголовки ответа при переадресации

sonya2003

Создатель
Регистрация
6 Окт 2007
Сообщения
25
Реакции
2
1.jpg 2.jpg 3.jpg Нужна авторизация на сайте мql5.сом посредством cURL.
Пробую так:
PHP:
$post = [
    'Login' => 'Etest',
    'Password' => 'yTquR2fA',
    'RememberMe' => 'false'
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_URL, "https://www.mql5.com/ru/auth_login");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
    curl_setopt($ch, CURLOPT_COOKIESESSION, true);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
    $result = curl_exec($ch);
    curl_close($ch);

    print_r($result);

Приходят заголовки ответа:
Код:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Generate-Time: 904
X-XSS-Protection: 1;
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'self'; script-src 'self'
Date: Tue, 08 Aug 2017 08:18:27 GMT
Content-Length: 15841

Между тем в инспекторе браузера показывает, что первый запрос идет на страницу:
URL: Для просмотра ссылки Войди или Зарегистрируйся
ТИП: POST
ПОЛЯ ЗАПРОСА: RedirectAfterLoginUrl, Login, Password, RememberMe.

В ответе приходит заголовок редиректа:
Location:Для просмотра ссылки Войди или Зарегистрируйся
который уже открывает страницу.



Помогите пожалуйста перехватить заголовок редиректа, который открывает авторизованную страницу.
 
1. Убери curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
2. Смотри не заголовки, а ответ. Возможно, что-то не так посылаешь или логин/пароль не верные. Это будет написано на странице
 
1. Убери curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
2. Смотри не заголовки, а ответ. Возможно, что-то не так посылаешь или логин/пароль не верные. Это будет написано на странице

1. Убрал curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); ничего не поменялось
2. В ответе на странице пишет "Неверные логин или пароль". Но они правильные, когда заносишь вручную авторизация проходит. Дело в том, что в свойстве onsubmit формы, занесен javascript, который формирует из логина и пароля токен, и отправляет его в редиректе (смотри сканы инспектора), как перехватить токен?
 
Посмотреть как токен генерится JS, и сгенерировать его самому при посылке запроса.
 
Посмотреть как токен генерится JS, и сгенерировать его самому при посылке запроса.

В onsubmit находиться следующий JS: "var result = Validate(this); if(result) { preventDoubleSubmit(this); } return result;".
Не могу найти содержимое функции Validate и preventDoubleSubmit. И скорее всего валидация проходит через AJAX со сверкой в базе данных...
Но при этом попробовала отключать javascript в браузере, авторизация на сайте все-равно проходит. Странно, значит дело не в JS. В общем, что-то не получается у меня с cURL авторизоваться на этом сайте. Жалко, наверно придется использовать PhantomJS.
Помогите авторизоваться через cURL, пожалуйста!!!
 
У кого-то вышло обойти эту проблему? У меня такое в парсинге али(
Вероятно сервер али не очень хочет отдавать контент роботу, поэтому надо лучше маскироваться под браузер. Чтобы исключить все факторы хорошо бы попробовать задать заголовки вручную полностью повторив их из браузера.
 
Назад
Сверху