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

Тема в разделе "PHP", создана пользователем sonya2003, 8 авг 2017.

XEvil 4.0 Релиз Состоялся!
Модераторы: latteo
  1. sonya2003

    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($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_HEADER1);
        
    curl_setopt($chCURLOPT_URL"https://www.mql5.com/ru/auth_login");
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
        
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
        
    curl_setopt($chCURLOPT_POST1);
        
    curl_setopt($chCURLOPT_POSTFIELDShttp_build_query($post));
        
    curl_setopt($chCURLOPT_COOKIESESSIONtrue);
        
    curl_setopt($chCURLOPT_COOKIEJAR$_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
        
    curl_setopt($chCURLOPT_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: https://www.мql5.сом/ru/auth_login
    ТИП: POST
    ПОЛЯ ЗАПРОСА: RedirectAfterLoginUrl, Login, Password, RememberMe.

    В ответе приходит заголовок редиректа:
    Location:https://www.мql5.сом/auth_set?auth=ТОКЕН_АВТОРИЗАЦ...
    который уже открывает страницу.



    Помогите пожалуйста перехватить заголовок редиректа, который открывает авторизованную страницу.
     
  2. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    494
    Симпатии:
    1.167
    1. Убери curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    2. Смотри не заголовки, а ответ. Возможно, что-то не так посылаешь или логин/пароль не верные. Это будет написано на странице
     
    dana77 и Minor нравится это.
  3. sonya2003

    sonya2003 Создатель

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

    Minor

    Регистр.:
    16 авг 2012
    Сообщения:
    245
    Симпатии:
    100
    Посмотреть как токен генерится JS, и сгенерировать его самому при посылке запроса.
     
  5. sonya2003

    sonya2003 Создатель

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

    babahalki

    Регистр.:
    6 май 2016
    Сообщения:
    246
    Симпатии:
    100
    Вероятно сервер али не очень хочет отдавать контент роботу, поэтому надо лучше маскироваться под браузер. Чтобы исключить все факторы хорошо бы попробовать задать заголовки вручную полностью повторив их из браузера.