Парсинг AJAX через python+requests

Пытаюсь спарсить страницу сайта ЖК. При разборе через инструменты разработчика firefox вот этого сайта: https://bestcon.ru/realty/krylatskiy#shaxmatka я обнаружил такой POST-запрос на AJAX: https://bestcon.ru/ajax/ajax.php, который выдает подгружаемую страницу (во вложении) и имеет вот эти header-ы:

Host: bestcon.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie: _ym_uid=1598125995569276938; _ym_d=1598125995; _ga=GA1.2.1620956004.1598125996; _gid=GA1.2.1246129657.1598125996; _fbp=fb.1.1598125996677.2020556932; PHPSESSID=8e7pug74ce7i6aimdcd26onmm1; _ym_isad=2; _ym_visorc_27386600=w
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0[![введите сюда описание изображения][1]][1]
И такой payload:

ajax_type=get_mode_table&id_object=9

Теперь что касается парсинга: Когда я провожу это все через requests, конкретно так:

headers = {'Host': 'bestcon.ru'
,'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0'
,'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
,'Accept-Language': 'en-US,en;q=0.5'
,'Accept-Encoding': 'gzip, deflate, br'
,'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
,'Content-Length': '36'
,'Connection': 'keep-alive'
,'Pragma':'no-cache'
,'Cookie': '_ym_uid=1598125995569276938; _ym_d=1598125995; _ga=GA1.2.1620956004.1598125996; _gid=GA1.2.1246129657.1598125996; _ym_isad=2; _fbp=fb.1.1598125996677.2020556932; PHPSESSID=8j0k5snf76pe918qgq4i3s7bn7; _ym_visorc_27386600=w'
,'Upgrade-Insecure-Requests': '1'
,'Cache-Control': 'max-age=0'
,'TE': 'Trailers'}
 
payload = {'ajax_type':'get_mode_table', 'id_object':'9'}
 
MAX_RETRIES = 20
url ='https://bestcon.ru/ajax/ajax.php'
 
session = requests.Session()
adapter = requests.adapters.HTTPAdapter(max_retries=MAX_RETRIES)

session.mount('https://', adapter)
session.mount('http://', adapter)
 
session.get('https://bestcon.ru')
session.post(url = url, headers=headers, params = payload).text

В итоге вылезает ошибка: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))(во вложении скрин) Хотя все header-ы правильно расписал. Как обойти эту ошибку и получить в response нужную страницу?


Ответы (0 шт):