Mitmproxy 简介
Mitmproxy 是一个支持HTTP和HTTPS的抓包程序,有类似 Fiddler、Charles 的功能,只不过它是一个控制台的形式操作
顾名思义,mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
Mitmproxy 还有两个关联组件。一个是 Mitmdump,它是 Mitmproxy 的命令行接口,利用它我们可以对接 Python 脚本,用 Python 实现监听后的处理。另一个是 Mitmweb,它是一个 Web 程序,通过它我们可以清楚观察 Mitmproxy 捕获的请求
不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现
安装
“安装 mitmproxy”这句话是有歧义的,既可以指“安装 mitmproxy 工具”
也可以指“安装 python 的 mitmproxy 包”,注意后者是包含前者的
如果是 Python 使用者,直接使用 pip 命令安装即可
pip3 install mitmproxy
完成后,系统将拥有 mitmproxy
、mitmdump
、mitmweb
三个命令,由于 mitmproxy
命令不支持在 windows 系统中运行,我们可以拿 mitmdump
测试一下安装是否成功,执行
> mitmdump --version
Mitmproxy: 5.3.0
Python: 3.7.3rc1
OpenSSL: OpenSSL 1.1.1h 22 Sep 2020
Platform: Windows-10-10.0.19041-SP0
mitmweb
命令启动后,会提供一个 web 界面,用户可以实时看到发生的请求,并通过 GUI 交互来过滤请求,查看请求数据。形如:
mitmdump 打开后会显示抓到的内容
还可以加上脚本
APP 抓包
如果需要抓手机的包的话,就需要在你连接的 wifi 修改代理(跟配置 fiddler 差不多)
请确保已经正确安装好了 Mitmproxy,并且手机和PC处于同一个局域网下,同时配置好了Mitmproxy的 CA 证书。
安装mitmproxy后,首先cmd运行一下 mimtdump 命令,以便在windows系统中产生CA证书
(要先运行 mimtdump 命令)
在手机上访问 http://mitm.it/ 即可,然后安装 证书