Когда я ищу в Instagram некоторые теги через браузер, он отправляет запрос на сервер, как этот:
https://www.instagram.com/web/search/topsearch/?context=blended&query=#trump&rank_token=0.11476949782296608&include_reel=true
И в ответ JSON содержит 100 похожих тегов.
Когда я сделал такой запрос из своего веб-приложения, основанного на Flask, я получил только 55 похожих тегов.И я не могу понять, почему.
Я пытался писать заголовки, как это делал браузер, но результат тот же.Я нашел несколько бесплатных сервисов, где я могу тестировать GET-запросы, но результат был тот же.
Вот функция Flask для выполнения запроса:
def query():
headers = {'authority': 'www.instagram.com',
'method': 'GET',
'scheme': 'https',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'cache-control': 'max-age=0',
'cookie': 'rur=FTW; mid=XEXhXgAEAAFQ0Lg-pAfeVCCnUTzw; mcd=3; csrftoken=IeAstJqVSC7I3TYuKDoCxuGOI5kq4OL3',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'x-compress': 'null',
'x-requested-with': 'XMLHttpRequest'
}
payload = {'query': request.args.get('text')}
baseUrl = 'https://www.instagram.com/web/search/topsearch/'
try:
response = requests.get(baseUrl, params=payload, headers=headers)
response.raise_for_status()
except requests.RequestException:
return None
Работает нормально, но я ожидаю100 результатов, а не 55.
Если у вас есть идеи, пожалуйста, скажите мне.
ps Может ли это быть из-за параметров сеанса?