Mitmproxy 抓包工具安装&入门使用
简介
mitmproxy
是一个使用python编写的中间人代理工具,跟Fiddle、Charles
等等的抓包工具是差不多的,同样可以用于拦截、修改、保存http/https
请求。比起Fiddle、Charles,mitmproxy
有一个最大的特点是支持python
自定义脚本。
安装
Win
官网下载windows安装包:https://mitmproxy.org/#mitmproxy
Mac
使用homebrew安装即可
1 | brew install mitmproxy |
python安装
1 | pip install mitmproxy |
证书安装
同Charles
一样,在使用mitmproxy
之前,我们需要先安装证书
在连接mitmproxy代理之后,通过访问连接:http://mitm.it/ 来安装证书
注意:点击Show Instructions
查看要求的系统版本号。
验证安装
完成后,系统将拥有 mitmproxy、mitmdump、mitmweb
三个命令,由于 mitmproxy 命令不支持在 windows 系统中运行,我们可以拿 mitmdump
测试一下安装是否成功,输入如下命令验证是否安装成功。
1 | ^Catx:~ atx$ mitmdump --version |
启动运行
mitmprxoy
使用如下命令来启动mitmproxy
,-p
表示端口号,默认是8080
。为了避免端口冲突,这里改为8081
1 | mitmproxy -p 8081 |
启动mitmproxy
后,连接设备代理,在客户端操作后就会看到请求,如下图所示:
可以通过上下移动鼠标滚轮的切换请求,选中某一请求后单击可查看请求详情。
然后通过q
命令可以返回到主界面,然后通过f
命令加上要过滤的参数可以过滤请求。如下图所示就是过滤只包含info
关键词的请求。
mitmweb
mitmweb
启动同mitmproxy
启动方式一样,与mitmproxy
不同的是,mitmweb
是有web
页面的。例:启动mitmweb
并指定监听8999
端口
1 | atx:~ atx$ sudo mitmweb -p 8999 |
启动后连接代理,可以在Web页面看到请求信息,如下图所示:
mitmdump
mitmdump
是 mitmproxy
的命令行版本,近似于 charles
的命令行版本,功能和 charles、fiddler
相似,强大之处在于它的工具 mitmdump
可以直接对接 python
对请求做处理。
mitmdump
是 mitmproxy
的命令行窗口,同时还可对接 python
对请求进行处理,因此就不用手动截获和分析 http
请求和响应,只需要写好请求和响应的处理逻辑即可。
录制与回放
1 | #录制 |
参数
-s
执行脚本-n
不启动代理-r
读取文件内容-w
写入文件~s
过滤响应数据~q
过滤请求数据
mitmproxy
命令不支持在 windows
系统中运行,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。
例如启动命令:
1 | windows:mitmdump.exe -s example_script.py -p 8999 |
修改请求
假设我们想修改请求header,例如将User-Agent
被修改成mitmproxy
代码实现如下
1 | from mitmproxy import ctx |
上面调用了ctx
模块,它有一个log
功能,调用不同的输出方法就可以输出不同颜色的结果,以方便我们做调试。
info()
方法输出的内容是白色的warn()
方法输出的内容是黄色的error()
方法输出的内容是红色的
执行脚本
1 | sudo mitmdump -p 8999 -s script.py |
运行之后我们在客户端操作可以看到如下结果:
查看请求信息
除了可以修改请求内容,还可以查看请求的信息
1 | from mitmproxy import ctx |
查看响应
mitmdump
提供了对应的处理响应的接口,就是response()
方法。
1 | from mitmproxy import ctx |
这里打印输出了Response
的status_code、headers、cookies、text
这几个属性,其中最主要的text
属性就是网页的源代码。
参考资料
- https://juejin.cn/post/6844903588645322760
- https://blog.wolfogre.com/posts/usage-of-mitmproxy/
- https://www.cnblogs.com/feng0815/p/14379953.html
- https://docs.mitmproxy.org/stable/addons-overview/
- https://docs.mitmproxy.org/stable/api/events.html
- https://www.cnblogs.com/childheart/p/14288682.html
- https://www.cnblogs.com/jiyu-hlzy/p/12231499.html