Mitmproxy是一个免费的开源交互式的HTTPS代理。MITM即中间人攻击
- 代理的作用,转发请求,保障服务端与客户端的通信
- 查看,记录,修改数据,引发服务端或客户端的特定行为
原理
安装
- pip install mitmproxy
- pip install -i https://pypi.douban.com/simple mitmproxy
如果直接安装的速度太慢了,可以在命令行中添加国内的镜像源加快速度,就是第二条命令。注意:python 版本不低于3.6
安装成功后在Python安装路径Script路径下可以找到 mitmdump.exe mitmproxy.exe mitmweb.exe 这三个可执行文件
工具介绍
- mitmproxy:命令行界面,允许交互式检查和修改http数据流.不支持windows
- mitmweb: Web界面,用户可以实时看到发生的请求,过滤请求,查看请求数据
- mitmdump: 一个命令行工具,没有界面,不能交互,但是可以通过启动参数并结合自定义脚本进行定制化功能的实现,是我们运行的环境
这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同;mitmproxy,mitmweb主要用来做调试,部署项目时,使用mitmdump。
设置代理
PC端设置代理
开启代理时需要把其他的代理都关掉
PC端安装证书
在代理状态下,访问mitm.it
,PC端与移动端操作相同。
后面点击下载的证书按步骤导入就可以了
mitmdump
插件使用
- 插件的本质就是一个脚本文件,在Python中就是一个类的实例对象。
- 此处插件是
Counter
实例对象,request
方法是一个事件 - 对于
request
事件,它的参数是一个mitmproxy.http.HTTPFlow
的对象。
上面是一个简单的插件,用于跟踪我们已经看到的流(或更具体的HTTP请求)数量。每次看到新的流量时,它都会使用mitmproxy的内部日志记录机制来宣布其提示。可以在交互式工具的事件日志中或mitmdump的控制台中找到输出。
可以使用mitmdump -s ./anatomy.py
运行插件。
官网: https://docs.mitmproxy.org/stable/addons-events/
常用事件
def request(self, flow: mitmproxy.http.HTTPFlow):
“”"
The full HTTP request has been read.
“”"
def response(self, flow: mitmproxy.http.HTTPFlow):
“”"
The full HTTP response has been read.