POST-запрос, который, кажется, не имеет параметров авторизации, продолжает сбой - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу получить результаты поиска по этому URL https://aiwa.ae/keyword/trading
Сайт имеет бесконечную прокрутку, каждая прокрутка загружает страницу с запросом POST, который отображается под именем «GetSearchResults» в инспекторе сетей.

Оформление запроса должно выглядеть так:

import requests
import json
import pprint

url = 'https://aiwa.ae/api/services/app/search/GetSearchResults'
payload = {"query":"trading","searchField":"","sortByField":"relevance","filters":"","pageIndex":3,"pageSize":20,"params":"origin_region=undefined"}
r = requests.post(url, data=payload)

pprint.pprint(json.loads(r.content))


Но результат таков:

{'error': {'code': 0,
           'details': None,
           'message': 'An internal error occurred during your request!',
           'validationErrors': None},
 'result': None,
 'success': False,
 'unAuthorizedRequest': False}


Из того, что я вижу, авторизация не требуется (даже в отчете об ошибке это указывается). Но все же, похоже, ничего не работает, я тоже пытался передавать заголовки, но не повезло.

1 Ответ

1 голос
/ 02 апреля 2019

Проблема связана с тем, как вы отправляете запрос.Вы должны изменить data= на json= следующим образом:

import requests
import pprint

url = 'https://aiwa.ae/api/services/app/search/GetSearchResults'
payload = {"query":"trading","searchField":"","sortByField":"relevance","filters":"","pageIndex":3,"pageSize":20,"params":"origin_region=undefined"}
r = requests.post(url, json=payload)

pprint.pprint(r.json())

(PS: для просмотра запроса в формате JSON я рекомендую использовать r.json() вместо импортабиблиотека json и использование json.loads(r.content))

надеюсь, это поможет!

...