如何在 Pyppeteer 中拦截 AJAX JSON 响应

此示例向你展示如何使用 Pyppeteer 拦截并打印通过网页上任何 AJAX 请求请求的 JSON 响应内容:

pyppeteer_intercept_ajax.py
import asyncio
import json
from pyppeteer import launch

async def intercept_network_response(response):
    # 在此示例中,我们只关心返回 JSON 的响应
    if "application/json" in response.headers.get("content-type", ""):
        # 打印有关响应的一些信息
        print("URL:", response.url)
        print("Method:", response.request.method)
        print("Response headers:", response.headers)
        print("Request Headers:", response.request.headers)
        print("Response status:", response.status)
        # 打印响应内容
        try:
            # await response.json() 将响应作为 Python 对象返回
            print("Content: ", await response.json())
        except json.decoder.JSONDecodeError:
            # 注意:如果你想获取原始响应文本,使用 await response.text()
            print("Failed to decode JSON from", await response.text())

async def main():
    browser = await launch()
    page = await browser.newPage()

    page.on('response', intercept_network_response)

    await page.goto('https://instagram.com')
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

Check out similar posts by category: Puppeteer, Pyppeteer, Python