Как получить авторизационный токен с помощью curl или другого инструмента unix - PullRequest
1 голос
/ 23 февраля 2020

У меня проблема с получением значения токена носителя авторизации с помощью инструмента unix вроде curl с сайта. Проблема в том, что я не знаю, как получить только это значение 7FA733D2E75A962D1FED6D26989550BD . Значение отличается каждый раз, когда я делаю запрос (я имею в виду, что это не постоянное значение). У меня есть необходимая информация для этого запроса, и когда я пытаюсь использовать браузер с менеджером cook ie и ставить вручную значение cook ie, это работа и я получаю действительный токен. Значение Cook ie:

mac=00%3A1A%3A79%3A40%3A07%3AFF
stb_lang=en
timezone=Europe%2FParis

URL запроса:

http://livegopanel.club:8080/portal.php?type=stb&action=handshake&token=&JsHttpRequest=1-xml

Если я пытаюсь автоматизировать это задание с консоли linux, я не могу получить этот токен. Когда я собираю поток tcp с помощью wireshark, получаю следующую информацию от процесса получения действительного токена.

Это запрос к сайту:

GET /portal.php?type=stb&action=handshake&token=&JsHttpRequest=1-xml HTTP/1.1
Accept: */*
User-Agent: Mozilla/5.0 (QtEmbedded; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) MAG200 stbapp ver: 4 rev: 2721 Mobile Safari/533.3
Referer: http://livegopanel.club:8080/c/
Accept-Language: en-US,*
Accept-Charset: UTF-8,*;q=0.8
X-User-Agent: Model: MAG254; Link: Ethernet
Host: livegopanel.club:8080
Cookie: mac=00%3A1A%3A79%3A40%3A07%3AFF; stb_lang=en; timezone=Europe%2FParis
Connection: Keep-Alive

И это ответ от сайта:

HTTP/1.1 200 OK
Date: Sat, 22 Feb 2020 09:22:53 GMT
Content-Type: text/javascript;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d538fd5b5e457f16e217ec8cf092ea2de1582363373; expires=Mon, 23-Mar-20 09:22:53 GMT; path=/; domain=.livegopanel.club; HttpOnly; SameSite=Lax
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 568fe5eebe337ea4-BUD

{"js":{"token":"7FA733D2E75A962D1FED6D26989550BD"}}

Я пробую много вариантов с помощью curl, но не могу получить значение. Как построить запрос curl или иметь другой способ (скрипт, написанный на bash, perl, et c.), Чтобы сделать это?

1 Ответ

0 голосов
/ 23 февраля 2020

Если у вас установлено jq:

curl -s http://livegopanel.club:8080/portal.php\?type\=stb\&action\=handshake\&token\=\&JsHttpRequest\=1-xml | jq -r '.js.token'

jq - это швейцарский армейский нож для JSON, если вы собираетесь работать с JSON в командной строке, Рекомендую познакомиться с jq. Вы можете использовать https://jqplay.org для проверки ваших jq фильтров в реальном времени.

В противном случае используйте sed:

curl -s http://livegopanel.club:8080/portal.php\?type\=stb\&action\=handshake\&token\=\&JsHttpRequest\=1-xml | sed 's/.*token":"\(.*\)".*/\1/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...