APP 到底传了什么?mitmproxy 让 HTTP 抓包明明白白

调试小程序接口、分析客户端行为、验证 HTTPS 请求参数——需要看清程序与服务器之间真正传了什么时,mitmproxy 是开发者的标准答案。终端界面、命令行、Web 三种形态,把抓包塞进任何工作流。
它解决什么问题
客户端表现异常,只看日志猜不出它实际发了什么请求,排查无从下手。
抓包工具多为闭源收费软件,扩展能力有限,难以与自动化脚本结合。
核心能力
| 能力 | 具体能做到什么 |
|---|---|
| 三种界面 | mitmproxy 终端交互、mitmdump 命令行、mitmweb 网页版随场景选。 |
| HTTPS 解密 | 生成根证书并信任后,可查看与修改 TLS 加密流量内容。 |
| Python 扩展 | 用 Python 脚本拦截、改写、重放任意请求与响应。 |
| 流量重放 | 保存的历史流量可原样重发或修改后重放,复现问题方便。 |
| 过滤语法 | 按域名、状态码、内容类型等条件快速筛出目标请求。 |
| 透明代理 | 支持透明与反向代理模式,适配无法设代理的设备。 |
HTTPS 解密的原理与边界
mitmproxy 解密 HTTPS 靠的是中间人原理:客户端与 mitmproxy 建立一条 TLS 连接,mitmproxy 再与真实服务器建立另一条。要让客户端信任它,必须安装其生成的根证书(访问 mitm.it 按平台下载),浏览器和开发调试的 APP 都可行;但启用了证书锁定(certificate pinning)的客户端会拒绝伪造证书,这是技术边界而非配置问题。
合规提醒必须前置:抓包仅限调试自己开发的应用、自己拥有的设备与获得授权的环境,用于窥探他人流量既违法也违背开源社区的使用伦理。工程上最实用的组合是 mitmdump 加 Python 脚本做自动化——例如批量改写测试环境的响应参数验证前端兼容性,把抓包从「看」升级为「可控可重复」。
同类工具怎么选
| 工具 | 授权 | 差别在哪 |
|---|---|---|
| Charles | 商业试用 | 图形化抓包老牌工具,移动开发常用,需付费授权。 |
| Fiddler | 免费闭源 | Windows 平台经典抓包工具,界面友好,脚本用 C# 编写。 |
| Wireshark | 开源免费 | 网络层抓包分析神器,覆盖 TCP 与 UDP,HTTP 之外的协议也能看。 |
谁适合用
- 调试移动端与 Web 接口的前后端工程师
- 做安全测试、持有书面授权的渗透测试人员
- 需要分析第三方接口行为的集成开发者
- 想以编程方式处理 HTTP 流量的自动化爱好者
怎么开始
- 访问 https://mitmproxy.org/ 下载安装包,或用 pip install mitmproxy 安装。
- 终端运行 mitmproxy 启动,默认监听 8080 端口。
- 把设备或浏览器的代理指向本机 8080 端口,浏览器访问 mitm.it 安装并信任根证书。
- 在 mitmproxy 界面按 z 清空旧流量,操作目标应用观察实时请求列表。
- 进阶使用写 Python 脚本,用 mitmdump -s 脚本.py 实现自动改写或记录流量。
常见问题
和 Charles、Fiddler 有什么区别?
Charles 与 Fiddler 是闭源图形工具,开箱即用;mitmproxy 开源免费、可脚本化编程,适合需要自动化与定制的场景。
为什么 HTTPS 流量显示为乱码或 CONNECT?
说明尚未安装信任根证书,或客户端启用了证书锁定;前者按 mitm.it 指引安装,后者无法绕过。
手机怎么连?
手机与电脑同一局域网,Wi-Fi 设置里配置 HTTP 代理为电脑 IP 加 8080 端口,再安装证书即可。
能抓 WebSocket 吗?
可以,WebSocket 握手与帧内容都会在流量列表中展示,可逐帧查看。
授权与合规
mitmproxy 以 MIT 协议开源,官方免费提供,源码公开可审计。 官网:mitmproxy.org。
↓ 获取资源
点击按钮直接前往资源页面。