mitmproxy 是一款开源的交互式 HTTP 代理工具,支持实时拦截、修改和调试 HTTP/HTTPS 流量。其命令行界面(mitmproxy)和图形化界面(mitmweb)可满足不同场景需求,广泛应用于开发调试、API 测试及安全分析。
核心功能与优势****
1. 流量拦截与修改
支持动态拦截请求/响应,修改头部、参数或返回内容,无需重启服务即可验证功能逻辑。
2. HTTPS 透明代理
通过安装 CA 证书实现 HTTPS 解密,兼容现代加密流量(如移动端、小程序)。
3. 脚本化扩展
通过 Python 编写插件(Addon)自动化处理流量,例如批量修改请求、统计接口耗时。
基础使用流程****
1. 启动代理服务****
bash
| mitmproxy -p 8080 |
|---|
· -p 8080:指定代理端口为 8080(默认 8080)。
· 启动后,终端将显示交互式界面,按 q 退出。
2. 配置客户端代理****
· 浏览器/终端:设置 HTTP/HTTPS 代理为 localhost:8080。
· 移动设备:与电脑连接同一网络,设置代理 IP 和端口(需安装 mitmproxy CA 证书)。
3. 拦截与调试****
· 交互式操作:
· 流量到达时按 i 键查看详情。
· 修改请求/响应后按 a 键放行。
· 输入 :set intercept 开启全局拦截模式。
· 图形化界面:
启动 mitmweb 替代 mitmproxy,通过浏览器访问 http://localhost:8081 直观操作。
高级调试技巧****
1.
脚本化流量处理
编写 Python 插件实现自动化操作。例如,拦截所有 /api/user 请求并添加认证头:
2.
3.
python
4.
5.
| from mitmproxy import http | |
|---|---|
| def request(flow: http.HTTPFlow): | |
| if "/api/user" in flow.request.pretty_url: | |
| flow.request.headers["Authorization"] = "Bearer token123" |
6.
保存为 modify_auth.py,启动时通过 -s modify_auth.py 加载。
7.
8.
重放请求
在交互界面选中请求后按 r 键,可重复发送该请求,便于调试接口稳定性。
9.
10.
导出流量数据
使用 :save 命令将流量保存为 HAR 或 JSON 文件,便于后续分析或分享。
11.
注意事项****
· HTTPS 证书安装:首次使用时需在客户端安装 mitmproxy 生成的 CA 证书(浏览器访问 mitm.it 获取)。
· 生产环境禁用:代理模式可能泄露敏感数据,仅限测试环境使用。
· 性能影响:高并发场景下,代理可能成为瓶颈,建议仅在调试阶段启用。
通过 mitmproxy 的灵活拦截与调试能力,开发者可高效定位 HTTP 通信问题,加速接口开发和集成测试流程。