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