手里没点硬核工具,搞移动端开发和接口调试简直是在裸奔,而 mitmproxy 就是那个能让你瞬间看透流量黑箱的瑞士军刀。它本质上是个免费开源的透明代理,能在本地把客户端和服务端之间的 HTTPS 流量给“截胡”了,不仅让你看到明文数据,还能像玩上帝模式一样实时篡改 Header、Cookie 甚至 Body 内容。最绝的是它内置的三种交互模式:命令行适合极客敲代码,mitmweb 提供网页界面让小白也能看图操作,还有 mitmdump 专门跑自动化脚本。对于开发者来说,这玩意儿简直是救命稻草。比如你在调试 APP 时,想看看后端到底传了什么参数?直接装个证书就能解密 HTTPS;想测试前端在弱网下的崩溃表现?用 Python 写个插件模拟丢包或延迟,瞬间搞定。甚至你可以手动把余额从 0 改成 999999,观察 UI 会不会崩,这种“实时篡改”的能力在传统工具里根本找不到。逆向工程更是它的强项,不用破解源码,直接抓包分析签名逻辑和加密算法,配合 mitmdump 还能边用 APP 边爬数据。虽然配置 CA 证书和设置代理端口有点繁琐,尤其是 iOS 和安卓高版本系统折腾证书时容易踩坑,但一旦搭建好,那种掌控全局的感觉真的爽翻天。最近 v12.2.3 版本还修复了证书有效期和 XSRF cookie 的问题,看来维护团队也没闲着。总之,如果你不想被黑盒代码牵着鼻子走,这款轻量级工具绝对值得装进你的工具箱里,毕竟在网络安全和调试领域,能看见真相的人永远比盲目执行的人走得更远。

功能特色
【全方位的流量拦截与分析】
能够实时捕获 HTTP、HTTPS、HTTP/2 以及 WebSocket 流量。通过其强大的解密能力,用户可以深入观察请求与响应的所有细节,包括 Header、Cookie、查询参数以及 Payload。
【深度的交互式篡改与重放】
用户可以在请求发送给服务器之前,或响应返回给客户端之前手动拦截并修改数据。同时支持“重放”功能,无需重新操作客户端即可多次触发同一网络请求,极大地方便了接口调试。
【强大的脚本自动化扩展】
这是其区别于同类工具的最大亮点。它提供了一套完整的 Python API,允许开发者编写自定义脚本来处理流量。无论是自动篡改特定字段、记录统计数据,还是模拟复杂的服务器行为,都可以通过 Python 插件轻松实现。
【灵活的多模式交互方案】
提供了三种不同的使用体验。终端界面适合键盘流高效操作;基于浏览器的 UI 界面适合习惯图形化操作的用户;则专门用于命令行流水线和后台自动化任务。
【多协议与透明代理支持】
除了基础的正向代理,它还支持透明代理、反向代理以及上游代理模式。这使得它能够轻松接入各种复杂的网络环境,甚至在无法手动配置代理的设备上进行流量抓取。
【开源与跨平台兼容性】
作为一款成熟的开源工具,它在 Windows、macOS 和 Linux 上均能完美运行,且安装配置流程简洁,配合自签名的 CA 证书即可快速搭建起安全的调试环境。
mitmproxy使用简介
1、启动软件
推荐使用 mitmweb 模式,它会启动一个网页界面,操作最直观:
启动: 打开CMD或PowerShell,输入mitmweb并回车。
访问: 程序会自动打开浏览器跳转至http://127.0.0.1:8081(这是管理界面)。
代理端口: 软件默认监听 8081 端口进行 Web 展示,监听 8080 端口接收流量。
2、配置代理(关键步骤)
要让流量经过 mitmproxy,必须设置客户端的代理服务器:
本机浏览器: 将系统代理或浏览器代理插件设置为 127.0.0.1:8080。
移动端 (Android/iOS): 确保手机与电脑在同一 Wi-Fi 下,在手机 Wi-Fi 设置中手动配置代理,IP 为电脑的局域网 IP,端口为 8080。
3、安装 CA 证书(解密 HTTPS)
如果不安装证书,所有的 HTTPS 流量都会显示为“加密连接错误”:
在配置好代理的设备上,访问网页:mitm.it。
根据你的操作系统(Windows, Android, iOS)下载对应的证书。
安装并信任: Windows需放入“受信任的根证书颁发机构”。
Android 需在安全设置中安装(部分高版本系统需 Root 权限移动证书至系统区)。
iOS 需在“设置 -> 通用 -> 关于本机 -> 证书信任设置”中手动开启。
4、核心操作
在mitmweb的网页界面中,你可以执行以下操作:
查看流量: 左侧列表显示所有请求,点击可查看具体的 Request(请求)和 Response(响应)详情。
过滤: 在顶部的 Filter 框输入关键词(如 google),只看特定域名的请求。
断点调试: * 在 Intercept 框输入过滤规则。
当符合条件的请求发出时会“暂停”,你可以手动修改数据包的内容,然后点击 Resume 继续发送。
重放: 选中一个请求,点击 Replay 按钮(通常是一个循环箭头图标),可以不通过操作手机直接重新发起该请求。
使用场景
1、移动端 APP 开发与调试
这是它最常用的场景。当你开发手机 APP 时,需要观察 APP 与后端服务器的通信:
查看 API 调用: 检查请求参数(Headers, JSON Body)是否正确,验证服务器返回的数据格式是否符合预期。
模拟弱网/异常环境: 通过脚本模拟网络延迟、丢包,或者强制服务器返回 404、500 等错误码,测试 APP 在极端情况下的稳定性。
排查加密数据: 即使 APP 使用了 HTTPS,通过安装证书也能轻松查看明文数据。
2、接口逆向工程与数据爬取
如果你想了解某个第三方 APP(如外卖、社交软件)的数据是如何传输的:
协议分析: 分析加密算法、签名逻辑(Sign)或隐藏的 API 接口。
自动化采集: 配合 mitmdump 和 Python 脚本,可以在流量经过时自动过滤并保存你感兴趣的数据(如商品价格、用户信息)到数据库,实现“边用 APP 边爬虫”。
3、前端与后端数据的“实时篡改”
这正是其“交互式”特色的体现:
Mock 数据: 无需修改后端代码,直接拦截服务器返回的 JSON,修改其中的数值(如将账户余额从 0 改为 999999),查看前端 UI 的显示效果。
参数绕过测试: 在发送请求前,拦截并修改前端发出的参数(例如修改订单金额、修改用户等级),测试后端是否存在安全校验漏洞。
4、自动化测试与集成
脚本化工作流: 利用 Python 插件,可以实现完全自动化的测试。例如:自动拦截所有包含特定 Token 的请求并替换为过期的 Token,测试系统的鉴权逻辑。
流量回放: 记录一段真实的操作流量,然后在测试环境下反复重放,确保新版本的代码没有破坏原有的接口逻辑。
更新日志
v12.2.3版本
将生成的证书有效期从199天缩短至197天,以确保2天的notBefore回溯期始终低于Chromium的200天限制。
修复了mitmweb无法获取其XSRF cookie的问题。
修复mitmproxy在配置使用自定义CA时,因SubjectKeyIdentifier未通过公钥SHA-1生成而导致的认证机构与主题密钥标识符不匹配错误。
修复了在导出流量为 HAR 格式时,若载荷在 100 字节截断处包含 UTF-8 续字节,is_mostly_bin 函数中出现的 IndexError 错误。














共有 0条评论