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

不使用browsermobproxy获取站点HAR文件的实现方案咨询

无需browsermobproxy获取HAR文件的可行方案

你遇到的报错是因为browsermobproxy已经多年未更新,仅支持Java 8版本,你本地的Java版本过高导致反射权限被限制。以下是无需使用browsermobproxy的替代实现方式:

方案1:Selenium原生DevTools实现(无额外依赖)

Selenium 4.0及以上版本支持直接调用浏览器DevTools协议捕获网络请求,无需第三方代理:

import json
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 开启性能日志捕获
chrome_options.set_capability("goog:loggingPrefs", {"performance": "ALL"})
driver = webdriver.Chrome(options=chrome_options)

# 启用网络监控
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Page.enable", {})

driver.get("http://www.google.co.in")

# 读取性能日志并组装HAR
logs = driver.get_log("performance")
entries = []
for log in logs:
    msg = json.loads(log["message"])["message"]
    if msg["method"] == "Network.responseReceived":
        entries.append(msg["params"])

har = {
    "log": {
        "version": "1.2",
        "creator": {"name": "Selenium CDP", "version": "1.0"},
        "entries": entries
    }
}

# 保存HAR文件
with open("google.har", "w", encoding="utf-8") as f:
    json.dump(har, f, indent=2, ensure_ascii=False)

driver.quit()

Firefox浏览器仅需替换对应驱动配置即可使用相同逻辑

方案2:Playwright原生HAR导出(配置最简单)

Playwright内置HAR导出能力,仅需几行代码即可完成:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.firefox.launch()
    # 初始化上下文时指定HAR输出路径
    context = browser.new_context(record_har_path="google.har")
    page = context.new_page()

    page.goto("http://www.google.co.in")

    context.close()
    browser.close()

导出的HAR为标准格式,无需手动处理数据结构

方案3:mitmproxy替代代理方案

如果必须使用代理模式捕获流量,可以用仍在活跃维护的mitmproxy替代browsermobproxy:

  • 安装mitmproxy:pip install mitmproxy
  • 启动代理并指定HAR输出:mitmdump -w output.har
  • 配置Selenium代理指向mitmproxy默认监听的127.0.0.1:8080即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:45:00