Как спарсить ответ xhr запроса

У меня есть сайт, на котором нужная информация приходит только с использованием браузера, а если переходить или делать request по этому запросу из network, то приходит 403

Пример:

from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver

options = Options()
# options.add_argument('--headless')

driver = webdriver.Chrome(options=options)
driver.get('https://akniga.org/lansdeyl-dzho-r-dzhentlmenskiy-otel')
driver.implicitly_wait(3)

find_url = None
for request in driver.requests:
    if '88224' in request.url:
        print(request)
        break

driver.quit()

На сайте есть запрос xhr 88224, в котором есть ответ preview введите сюда описание изображения

На данный момент я получаю только ссылку запроса https://akniga.org/ajax/b/88224

Могу ли я получить вместо ссылки весь preview?


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

Автор решения: Сергей Ш
# 1
from playwright.sync_api import Playwright, sync_playwright, expect, Request

def handler(request: Request):
    if 'ajax/b/88224' in request.url:
        print(request.response().json())

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    page = browser.new_page()
    page.on("request", handler)
    page.goto("https://akniga.org/lansdeyl-dzho-r-dzhentlmenskiy-otel")
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

#2
import requests

cookies = {
    'PHPSESSID': 'dd5bbfbr4hp9652js2p7834ut4',
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0',
}
data = {
    'bid': '88224',
    'hash': '{"ct":"fCjSQLdC8fpWNn5FiI5S25i/XzXQcMo5k66liumdyIpnLlB9KKj0Vrxc7tVKpQ05",'
            '"iv":"4e7154f5efd99fcec23344e99556e32f","s":"05363795e38ab941"}',
    'security_ls_key': 'cafe16a50730288ec91265354b3df768',
}

response = requests.post('https://akniga.org/ajax/b/88224', cookies=cookies, headers=headers, data=data)
print(response.json())
→ Ссылка