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

Python Playwright异步模式下捕获存储请求响应头问题

异步Playwright捕获请求/响应头并存字典的解决方法

为啥异步模式会输出绑定方法?

同步模式里,Playwright的request.headers和response.headers是可直接访问的属性;但异步版本中这俩是异步方法,直接调用只会返回方法对象,必须通过await执行才能拿到实际的头内容。

完整实现代码

import asyncio
from playwright.async_api import async_playwright

# 存储所有请求响应头的字典,key为请求URL,value包含请求头和响应头
headers_store = {}

async def capture_all_headers():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.new_page()

        # 监听请求,捕获请求头
        async def handle_request(request):
            # 核心:必须用await调用headers()方法
            req_headers = await request.headers()
            # 初始化当前URL的存储结构
            if request.url not in headers_store:
                headers_store[request.url] = {"request": {}, "response": {}}
            headers_store[request.url]["request"] = req_headers
            print(f"请求头 [{request.url}]: {req_headers}")

        # 监听响应,捕获响应头
        async def handle_response(response):
            # 同样需要await调用headers()
            res_headers = await response.headers()
            if response.url in headers_store:
                headers_store[response.url]["response"] = res_headers
                print(f"响应头 [{response.url}]: {res_headers}")

        # 绑定监听事件到页面
        page.on("request", handle_request)
        page.on("response", handle_response)

        # 访问目标页面
        await page.goto("https://example.com")
        await browser.close()

if __name__ == "__main__":
    asyncio.run(capture_all_headers())
    # 打印最终存储的所有头信息
    print("\n=== 存储的所有头信息 ===")
    for url, headers in headers_store.items():
        print(f"URL: {url}")
        print(f"请求头: {headers['request']}")
        print(f"响应头: {headers['response']}\n")

关键注意点

  • 监听请求/响应的回调函数必须定义为async def,因为内部要执行await操作
  • 绝对不能直接写request.headers,必须加await调用await request.headers()
  • 如果只需要捕获特定类型的请求(比如接口),可以在回调里加判断,比如if "/api/" in request.url:再处理
  • 存储字典的结构可按需调整,比如想按请求顺序存储,改用列表套字典的形式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:45:55