Я пытался завить с помощью команды
curl 'https://analytics.oag.com/analyser-client/home' -H 'Accept-Language:
en-US,en;q=0.9' -H 'Connection: keep-alive' -H 'Accept-Language: en-
US,en;q=0.9' -H 'Host: analytics.oag.com' -H 'User-Agent: Mozilla/5.0
(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/66.0.3359.181 Safari/537.36' -H 'Content-Type: text/html;charset=UTF-
8' --data '{"username":"test","password":"test"}'
Но, похоже, это не работает ... Не уверен, какие части мне не хватает ... Есть идеи, как войти на этот сайт?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Not sure what parts am I missing - вам не хватает идентификатора сеанса cookie, заголовка referer и заголовка X-Requested-With: XMLHttpRequest, и ваш заголовок Content-Type неверен (предполагается, что это Content-Type: application/json), также страница входа загружается дважды, если вы посещаете ее без cookie-сеанс (сначала он получает сеанс cookie, затем обновляется), вам, вероятно, следует выполнить вход в систему. вы специально упомянули python, я не знаю, как это сделать на python, но вот как я бы сделал это на PHP с hhb_curl:
<?php
declare(strict_types = 1);
require_once ('hhb_.inc.php');
$hc = new hhb_curl ( '', true );
// getting cookie session and refresh (dunno why we need to refresh, but the login page javascript is doing it, so follow suite)
$hc->exec ( 'https://analytics.oag.com/analyser-client/home' )->exec ( 'https://analytics.oag.com/analyser-client/home' );
$response = $hc->setopt_array ( array (
CURLOPT_POST => 1,
CURLOPT_URL => 'https://analytics.oag.com/analyser-client/broker-services/login/validate',
CURLOPT_HTTPHEADER => array (
'Content-Type: application/json',
'Origin: https://analytics.oag.com', // i don't think curl set this header this automatically
'X-Requested-With: XMLHttpRequest'
),
CURLOPT_POSTFIELDS => json_encode ( array (
'username' => 'username?',
'password' => 'password?'
) )
) )->exec ()->getResponseBody ();
var_dump ( $response );
$parsed = @json_decode ( $response, true );
if (empty ( $parsed ) || $parsed ['status'] === 'ERROR') {
throw new \RuntimeException ( 'failed to login! ' . $response );
}
@TiantianTian просто продолжит использовать тот же дескриптор curl (или, в данном случае, дескриптор hhb_curl), он будет продолжать использовать ваш файл cookie с идентификатором сеанса, который будет держать вас в системе. Например, чтобы получить первую страницу после входа в систему, выполните $html=$hc->exec('https://analytics.oag.com/analyser-client/home')->getStdOut(); var_dump($html);. и извините, я не знаю ни одного учебника по этому поводу. Я научился этому методом проб и ошибок, в значительной степени пытаясь войти на другие веб-сайты.
Спасибо большое за вашу помощь!! Еще одна вещь: как узнать URL-адрес CURLOPT_URL? Если мы хотим войти на другие веб-сайты, как мы узнаем, что включить в 'CURLOPT_HTTPHEADER =>'? Вы только что выяснили это через раздел сети в инструменте разработчика Chrome? Еще раз спасибо за помощь!! Действительно ценю это!!!
@TiantianTian Did you just figure that out through the network section in chrome developer tool? - да, я сделал! :) для большинства веб-сайтов достаточно инструментов chrome dev. но для некоторых избранных может потребоваться (не строго) Fiddler Proxy. (не обязательно, но может упростить понимание)
Еще раз спасибо за помощь! И последний вопрос, как я могу отправить запрос на публикацию на другой странице после входа в систему? Это похоже на вход на другую страницу после входа в систему. Я попытался выполнить те же действия, используя $ response = $ hc-> setopt_array (...), но мне кажется, что мне нужно снова войти в систему таким образом ... Как я мог бы с этим поработать? Я снова очень признателен за вашу помощь !!!!
Также файлы cookie устанавливаются javascript, есть ли способ, которым hhb_curl может обнаружить эти файлы cookie? Заранее спасибо !!
@TiantianTian он не может напрямую принимать файлы cookie из javascript, но вы можете вручную извлечь файлы cookie из javascript и передать их hhb_curl через CURLOPT_COOKIELIST. хотя я сомневаюсь, что смогу помочь без доступа к действительной действующей комбинации учетной записи и пароля.
Большое спасибо! Это действительно работает! Но мне просто интересно, как я могу переходить на другие веб-сайты, оставаясь авторизованным? Я действительно не знаком с php, есть ли полезный учебник по этому поводу?