macOS CLI 工具 HTTPS 抓包指南(以 OpenCode 为例)
为什么需要 CLI 抓包?
在开发调试 AI 编程助手、API 客户端等命令行工具时,经常需要查看其 HTTPS 请求内容。浏览器有开发者工具,但 CLI 工具的流量对开发者是"不可见"的。本文介绍如何使用 mitmproxy 在 macOS 上实现 CLI 工具的 HTTPS 抓包。
工具选择
在 macOS 上对命令行工具进行 HTTPS 抓包,免费方案首选 mitmproxy。它提供三种使用形态:
- mitmproxy:终端交互式 UI,适合实时过滤和查看
- mitmweb:浏览器 Web UI,JSON 自动格式化,适合内容分析
- mitmdump:纯命令行,适合录制流量到文件或脚本处理
三者共享同一套证书和配置,按需选用即可。
安装
1 | |
第一步:生成 CA 证书
首次运行会自动生成证书文件:
1 | |
证书默认生成在 ~/.mitmproxy/:
1 | |
第二步:信任 CA 证书
1 | |
验证是否成功:打开「钥匙串访问」搜索 mitmproxy,应看到证书标记为受信任。
第三步:启动 mitmproxy
1 | |
默认监听 127.0.0.1:8080。
第四步:配置代理并启动目标程序
新开一个终端:
1 | |
第五步:验证是否有流量
在 mitmproxy/mitmweb 界面观察是否有请求进来。如果没有流量,说明目标程序没有读取代理环境变量(这在 Bun、Node.js 原生运行时中很常见)。
此时改用 proxychains 强制代理,不依赖程序自身支持:
1 | |
编辑配置文件 ~/.proxychains/proxychains.conf(没有则新建):
1 | |
然后通过 proxychains 启动目标程序:
1 | |
常见问题
TLS 握手失败 / SSL Error
如果目标程序基于 Node.js 或 Bun,SSL_CERT_FILE 可能不被识别,改用:
1 | |
只想把流量录制到文件
1 | |
只想看特定域名的请求
在 mitmproxy 界面按 f 输入过滤表达式:
1 | |
总结
| 场景 | 方案 |
|---|---|
| 程序正常读取代理变量 | export HTTPS_PROXY + mitmproxy |
| 程序忽略代理变量 | proxychains4 + mitmproxy |
| 只看内容不修改 | mitmweb(Web UI 更直观) |
| 脚本化修改请求 | mitmproxy + Python 插件 |
| 录制留存分析 | mitmdump -w |
通过 mitmproxy,CLI 工具的 HTTPS 流量不再是"黑盒",调试效率大幅提升。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.