浏览器抓包代码
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_7e77ad98/capure。
技能介绍
为什么需要浏览器侧抓包
当你想分析某个网站的接口调用,或者逆向前端页面的请求逻辑时,传统抓包工具如 mitmproxy 或 Charles 需要配置代理和安装 CA 证书。这个过程不仅繁琐,还容易因为证书信任问题导致抓包失败。特别是面对需要登录态的接口,每次都要手动复制 cookie 或 token,效率低下且容易出错。
更常见的情况是:你真正关心的数据并不是写在静态 HTML 里,而是通过 XHR/Fetch 动态加载的。直接抓取网页源码根本拿不到这些数据,浏览器侧抓包成了刚需。
核心工作原理
这个技能基于 Python + Playwright,在浏览器内部直接监听网络请求,完全绕过了代理和证书的配置。
工作流程如下:
- 启动无头浏览器访问目标页面
- 自动捕获所有 XHR/Fetch 请求及其响应
- 将结果输出为结构化 JSON
- 支持导出为 CSV、HAR 或 Markdown 格式
关键能力:
- 登录态持久化:首次登录后保存
storage_state,后续抓包无需重复登录 - URL 过滤:用
--filter-url正则表达式精准定位接口,避免噪声 - 响应体控制:默认 2MB 上限,可用
--max-body调整,或用--no-bodies禁用 - 动态等待:SPA 页面用
--wait-selector确保数据加载完成
典型使用场景:
- 分析前端页面调用了哪些后端接口
- 采集动态加载的数据用于爬虫
- 生成 HAR 文件导入 Chrome DevTools 复现分析
- Mock 或篡改请求用于前端联调
适用边界与注意事项
这个方案擅长浏览器侧的 HTTP/HTTPS 请求抓取,但有几个明确的适用边界:
不适用的场景:
- TCP/UDP 网络层原始包(改用 Wireshark/scapy)
- 移动原生 App 流量(改用 mitmproxy + frida)
- Node.js 服务端流量
常见坑点:
- 响应体只能读一次:
response.body()重复调用会抛错,脚本已做缓存 - 异步回调需要包装:直接传 async 函数给
page.on不会 await,必须用asyncio.create_task - HTTPS 必须忽略错误:不加
--ignore-https-errors会导致白屏,请求事件不触发 - SPA 要等数据:
page.goto返回时 XHR 未必发完,用--wait-selector等待节点出现
如果你需要修改请求头、Mock 响应、并发抓多个页面,或者重放请求,可以参考 references/playwright_capture_guide.md 中的进阶章节。
使用场景
- 逆向分析前端页面调用了哪些后端接口,梳理 API 请求链路
- 采集动态加载的数据(如商品列表、无限滚动内容),而非静态 HTML
- 生成 HAR 文件导入 Chrome DevTools 或 Charles 进行深度网络分析
- 前端联调时 Mock 或篡改浏览器请求,测试接口异常处理逻辑
适合人员
- 后端工程师,需要逆向前端页面的接口调用逻辑,排查线上问题
- 爬虫开发者,需要采集动态加载数据并绕过反爬机制
- 前端工程师,需要 Mock 接口响应来联调异常场景或边界条件
- 测试工程师,需要复现线上网络问题并生成可分析的 HAR 文件