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

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

Модераторы: 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
    Сообщения:
    477
    Симпатии:
    1.183
    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
    Сообщения:
    219
    Симпатии:
    85
    Посмотреть как токен генерится 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
    Симпатии:
    98
    Вероятно сервер али не очень хочет отдавать контент роботу, поэтому надо лучше маскироваться под браузер. Чтобы исключить все факторы хорошо бы попробовать задать заголовки вручную полностью повторив их из браузера.