一、什么是 mitmproxy?
mitmproxy 是一个支持 SSL/TLS 的交互式代理工具集,能够拦截、查看、修改 HTTP 与 HTTPS 请求和响应流量。其核心功能包括:
- 拦截并修改 HTTP & HTTPS 请求/响应
- 保存完整的 HTTP 会话以便后续重放与分析
- 重放客户端请求或服务端响应
- 提供反向代理、透明代理等多种模式
- 使用 Python 脚本动态处理流量
- 自动生成 SSL/TLS 证书进行加密通信拦截
二、三大核心工具介绍
mitmproxy 实际上是由三个功能前端组成,它们共享同一个核心处理引擎,适用于不同的使用场景:
1. mitmproxy
:终端交互界面
这是 mitmproxy 的主工具,拥有一个基于终端的交互式 UI,便于查看和修改每一条 HTTP 请求。它会将所有流量保存在内存中,适合对小规模样本进行深入分析。
📌 快捷键提示:在界面中按下 ?
即可查看当前可用的快捷键。
2. mitmweb
:基于浏览器的可视化界面
mitmweb 是 mitmproxy 的 Web UI 版本,适合希望在浏览器中可视化查看和操作流量的用户。虽然目前还在 beta 阶段,但已具备稳定的核心功能。
使用方式非常简单:
mitmweb
然后浏览器访问 http://localhost:8081
进入界面。
3. mitmdump
:命令行版本
mitmdump 是命令行形式的 mitmproxy,类似于 tcpdump,用于程序化地查看、记录和处理 HTTP 流量。非常适合脚本化和自动化场景。
三、实用示例速览
下面是一些典型的 mitmdump 用法,帮助你快速掌握它的实战能力。
3.1.保存流量
mitmdump -w outfile
启动代理并将所有请求保存到 outfile
文件中。
3.2.过滤 POST 请求并保存
mitmdump -nr infile -w outfile "~m post"
从已有的流量文件 infile
中读取,只保留 POST 请求,并输出到 outfile
。
3.3.客户端请求重放
mitmdump -nC outfile
从 outfile
文件中读取请求并进行重放,-n
表示不监听代理端口。
支持组合使用:
mitmdump -nC srcfile -w dstfile
即重放 srcfile
,同时将重放后的新流量保存到 dstfile
。
3.4.运行自定义脚本
mitmdump -s examples/simple/add_header.py
执行一个 Python 脚本,对所有响应添加自定义 Header。非常适合对请求做批量处理或数据清洗。
3.5.使用脚本进行流量转换
mitmdump -ns examples/simple/add_header.py -r srcfile -w dstfile
从 srcfile
加载请求流量,使用脚本进行处理后保存到 dstfile
。
四、为什么选择 mitmproxy?
- 强大的调试能力:适用于前后端联调、API 流量追踪、安全审计。
- 可扩展性高:支持使用 Python 编写脚本扩展功能。
- 支持 HTTPS 拦截:自动生成根证书,方便测试 HTTPS 请求。
- 多界面支持:命令行、终端交互、Web UI 多种方式满足不同需求。
五、 安装方式
可直接访问官网下载安装包:
- 官网地址:https://mitmproxy.org
- GitHub 仓库:https://github.com/mitmproxy/mitmproxy
六、总结
无论你是前端调试、接口测试、安全研究,还是流量采集分析,mitmproxy 都是一款不可多得的强力工具。它不止是“抓包工具”,更是一款可编程的流量分析平台。如果你还没用过 mitmproxy,不妨现在就试试它强大的魔法。