Как сделать почтовый запрос на вход в систему https://analytics.oag.com/analyser-client/home (сайт Javascript) - PullRequest
0 голосов
/ 22 мая 2018

Я пытался свернуться, используя команду

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"}'

Но, похоже, это не работает ... Не уверен, какие части я пропускаю ... Есть идеи, как войти на этот сайт?

1 Ответ

0 голосов
/ 22 мая 2018

Not sure what parts am I missing - вам не хватает идентификатора сеанса cookie, заголовка реферера и заголовка X-Requested-With: XMLHttpRequest, а ваш заголовок Content-Type неверен (он должен быть Content-Type: application/json), также страница входазагружая себя дважды, если вы посещаете его без сеанса cookie (сначала он получает сеанс cookie, а затем обновляется), вам, вероятно, следует выполнить команду suite для входа в систему.Вы специально упомянули 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 );
}
...