如何使用Python导出Chrome DevTools网络面板指定名称请求的响应
可行方案说明
完全可以实现,目前有两种成熟的落地路径,按需选择即可:
方案1:通过CDP协议实时监听抓取(适合自动化批量场景)
Chrome对外暴露了DevTools Protocol(CDP)调试接口,Python可以直接对接接口实时捕获所有网络请求与响应,不需要手动操作DevTools面板。
- 第一步:安装依赖
推荐用Playwright做CDP对接,封装完善不需要手动处理底层协议:pip install playwright playwright install chrome - 第二步:运行抓取脚本
脚本会启动/对接Chrome实例,自动监听所有响应,按你设置的请求名称关键词筛选后导出:from playwright.sync_api import sync_playwright import json # 替换为你要筛选的请求名称/URL关键词 TARGET_FILTER = "your-request-name-keyword" collected_resp = [] with sync_playwright() as p: # headless=False可以看到浏览器操作界面,要连已经打开的调试版Chrome可以用connect_over_cdp方法 browser = p.chromium.launch(headless=False) ctx = browser.new_context() page = ctx.new_page() def on_response_catch(response): if TARGET_FILTER in response.url: try: content_type = response.headers.get("content-type", "") resp_body = response.json() if "application/json" in content_type else response.text() collected_resp.append({ "url": response.url, "status": response.status, "data": resp_body }) except Exception as e: print(f"解析响应 {response.url} 出错:{e}") page.on("response", on_response_catch) # 替换为你要抓取的目标页面地址 page.goto("https://your-target-page.com") # 等待页面请求全部完成,可根据实际页面加载速度调整等待时长 page.wait_for_timeout(8000) browser.close() # 结果导出为本地JSON文件 with open("response_export.json", "w", encoding="utf-8") as f: json.dump(collected_resp, f, ensure_ascii=False, indent=2)
方案2:导出HAR文件离线解析(适合临时单次场景)
如果已经在DevTools Network面板抓到了目标请求,不想重新触发页面加载,可以直接导出HAR包后用Python解析筛选:
- 在Network面板空白处右键,选择
Save all as HAR with content,将所有请求数据保存为本地HAR文件 - 安装解析依赖:
pip install haralyzer - 运行解析脚本筛选目标响应:
import json from haralyzer import HarParser TARGET_FILTER = "your-request-name-keyword" collected_resp = [] with open("your-saved-har-file.har", "r", encoding="utf-8") as f: har_data = json.load(f) parser = HarParser(har_data) for page in parser.pages: for entry in page.entries: req_url = entry["request"]["url"] if TARGET_FILTER in req_url: collected_resp.append({ "url": req_url, "status": entry["response"]["status"], "data": entry["response"]["content"].get("text", "") }) with open("har_export_result.json", "w", encoding="utf-8") as f: json.dump(collected_resp, f, ensure_ascii=False, indent=2)
操作界面参考

内容的提问来源于stack exchange,提问作者Erika
相关产品推荐
相关产品推荐

