Как спарсить ответ 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())