You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Playwright与SeleniumBase获取XHR端点响应的问题

Pyppeteer 获取目标XHR响应的解决方案

针对你用Pyppeteer无法捕获目标XHR响应的问题,以下是具体实现步骤,核心是通过网络响应监听+反检测配置来拿到目标API的JSON数据,同时保留页面生成的Cookie和请求参数:

  • 初始化浏览器时配置反检测参数
    启动浏览器时添加禁用自动化识别的参数,避免被目标网站屏蔽,确保环境接近真实浏览器:

    import asyncio
    from pyppeteer import launch
    
    async def main():
        browser = await launch(
            headless=False, # 调试阶段可设为False,上线后改为True
            ignoreHTTPSErrors=True,
            args=[
                '--disable-blink-features=AutomationControlled',
                '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
                '--no-sandbox'
            ]
        )
        page = await browser.newPage()
    
  • 监听响应事件,精准捕获目标XHR数据
    通过page.on('response')事件筛选目标API,直接提取响应JSON、请求Cookie和参数:

    target_api = "https://www.ubereats.com/_p/api/getFeedV1"
        response_result = None
    
        async def capture_response(response):
            nonlocal response_result
            # 匹配目标API的URL
            if target_api in response.url:
                # 获取响应JSON
                response_result = await response.json()
                # 获取页面当前的Cookie(自动携带到XHR请求的Cookie)
                current_cookies = await page.cookies()
                # 解析GET请求参数
                from urllib.parse import urlparse, parse_qs
                parsed_url = urlparse(response.url)
                request_params = parse_qs(parsed_url.query)
                print("请求参数:", request_params)
                print("关联Cookie:", current_cookies)
    
        page.on('response', capture_response)
    
        # 访问原始URL,触发目标XHR请求
        await page.goto("你的UberEats指定URL", waitUntil='networkidle2')
    
        # 等待响应捕获完成
        while response_result is None:
            await asyncio.sleep(0.5)
    
        print("目标API响应数据:", response_result)
        await browser.close()
    
    asyncio.run(main())
    
  • 关键注意事项

    • 页面加载策略用networkidle2,确保所有XHR请求完成后再继续执行
    • 如果目标API是滚动/点击后触发的,需要模拟对应操作(比如await page.evaluate('window.scrollTo(0, document.body.scrollHeight)'))
    • 若遇到Cookie未正确携带的情况,可在访问原始URL后手动提取Cookie,再通过page.setCookie()强制注入
    • 部分网站会检测浏览器特征,可额外添加--start-maximized参数,或通过page.evaluate()修改navigator.webdriver等属性

内容的提问来源于stack exchange,提问作者Gagandeep Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:22:43