> 技术文档 > 通过 mitmproxy 拦截和调试 HTTP 请求_mitmproxy修改响应

通过 mitmproxy 拦截和调试 HTTP 请求_mitmproxy修改响应

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 直观操作。

高级调试技巧

脚本化流量处理
编写 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 通信问题,加速接口开发和集成测试流程。