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

如何使用Playwright监控浏览器带宽使用量?

追踪Playwright浏览器带宽使用量

要监控Playwright浏览器的带宽消耗,你当前的思路方向是对的,但现有实现存在几个可以优化的点:

  1. 重复统计风险:requestfinished事件里的request.sizes()已经包含了响应体大小(responseBodySize),同时监听response事件读取response.body()会导致响应体被重复计算,而且调用response.body()会额外占用内存(Playwright默认不会缓存响应体)。

  2. 失败请求流量缺失:requestfailed事件只做了日志记录,但失败请求可能已经发送了请求体,这部分流量也应该被统计。

  3. 单位转换可读性差:用1024*1024转换为MB比直接写0.000001更直观易懂。

下面是优化后的实现代码:

# 初始化字典,按浏览器实例区分带宽统计数据
browser_bandwidth = {}

def init_bandwidth_tracking(browser):
    # 为每个浏览器创建独立的上下行流量统计容器
    browser_bandwidth[browser] = {"upload": 0, "download": 0}

def track_bandwidth(browser):
    def handle_request_finished(request):
        sizes = request.sizes()
        if not sizes:
            return
        # 累加上传流量:请求体大小
        browser_bandwidth[browser]["upload"] += sizes.get("requestBodySize", 0)
        # 累加下载流量:响应体大小
        browser_bandwidth[browser]["download"] += sizes.get("responseBodySize", 0)

    def handle_request_failed(request):
        sizes = request.sizes()
        if not sizes:
            return
        # 失败请求的上传流量也要统计
        browser_bandwidth[browser]["upload"] += sizes.get("requestBodySize", 0)
        proxy_logger.warning(f"{proxyInfo} 请求失败 {request}")

    # 给浏览器绑定全局请求事件(也可绑定到context层面)
    browser.on("requestfinished", handle_request_finished)
    browser.on("requestfailed", handle_request_failed)

# 使用示例
browser = playwright.chromium.launch(proxy={"server": "你的代理服务器地址"})
init_bandwidth_tracking(browser)
track_bandwidth(browser)

# 查看指定浏览器的总流量(转换为MB)
total_upload_mb = browser_bandwidth[browser]["upload"] / (1024 * 1024)
total_download_mb = browser_bandwidth[browser]["download"] / (1024 * 1024)
print(f"总上传流量:{total_upload_mb:.2f} MB,总下载流量:{total_download_mb:.2f} MB")

关键说明:

  • 多浏览器隔离统计:用字典关联每个浏览器实例的流量数据,支持同时监控多个浏览器。
  • 避免冗余计算:仅通过request.sizes()获取流量数据,无需额外读取响应体。
  • 覆盖全场景流量:包含成功请求的上下行流量,以及失败请求的上传流量。
  • 按需扩展监控:如果需要按页面、请求类型细分统计,可以在事件处理函数中通过request.url()、request.method()等属性做过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:45:24