mitmproxy 是一款开源的网络代理工具,可以用于拦截、查看、修改和重放 HTTP、HTTPS、HTTP2、WebSockets,以及 TCP 数据。它的核心特性包括交互式 UI、CLI 接口,和 Python API。mitmproxy 提供了多种有效的工具,包括 mitmproxy 命令行界面,mitmweb 网络界面,mitmdump 备份工具等。
mitmproxy的github地址如下:https://github.com/mitmproxy/mitmproxy 目前已经拥有34.4k 的star。足以证明这个网络代理神器的欢迎程度
它的官网如下,这里着重说一下mitmproxy的一些主要特性
- 交互式控制台界面:mitmproxy 提供了一个实用且功能强大的控制台接口,使用户能够实时查看并操作 HTTP 流量。
- 网络界面:mitmweb 是 mitmproxy 的 Web-based UI。你可以在任何地方通过浏览器查看和控制 HTTP 流量。
- Python脚本支持:mitmproxy 提供强大的 Python 脚本功能,你可以使用 Python 脚本来修改 HTTP 流量。
- SSL (Secure Sockets Layer)证书生成:mitmproxy 能够在飞行模式下动态的为任何领域创建和签署 SSL 证书,使其能够拦截安全的 HTTP 连接。
-
保存和加载流:你可以使用 mitmdump 工具保存 HTTP (S)流程到磁盘,然后在之后加载它们回传到 mitmproxy。
模块化:mitmproxy 的模块化架构使其易于扩展和定制。mitmproxy的使用也很简单,前提是需要在你要使用的机器上安装Python。
安装mitmproxy:打开命令行终端,并输入以下命令来安装mitmproxy即可:pip install mitmproxy
mitmproxy提供了三种主要的工具:mitmproxy,mitmweb和mitmdump。
- mitmproxy是一个交互式的命令行界面,请在命令行或者终端中输入mitmproxy来启动它。
- mitmweb则是一个基于浏览器的图形界面,你可以通过在命令行或者终端中输入mitmweb来启动它。
-
mitmdump是非交互式的,提供终端输出。你可以通过在命令行或者终端中输入mitmdump来使用这个工具。
在这里我们一般使用交互式的或者 web的mitmproxy
输入mitmproxy,它会默认监听8080端口,(venv) E:\demo\>mitmweb HTTP(S) proxy listening at *:8080. Web server listening at http://127.0.0.1:8081/
如果端口被占用或者自定义端口,那么在启动时候加-p 参数指定端口即可。例如我们通过web形式启动mitmproxy并且指定端口为8888
mitmweb -p 8888
8081则是我们的浏览器页面。
HTTP(S) proxy listening at *:8888.
Web server listening at http://127.0.0.1:8081/
接下来我们要抓包进行分析,大多请求都是HTTPS的。所以需要我们安装对应的证书,这一步其实也很简单,在Android 或者IOS 上我们进行设置网络代理。服务器IP填写启动mitmproxy的机器IP,端口填写指定的端口,比如8888。然后在浏览器中打开http://mitm.it,如果设置正确,它应该会展示一个简易的页面,引导你安装mitmproxy的证书。 根据自己的设备来下载对应的证书,然后进行安装即可。
然后你就会发现所有请求都会在mitmweb 的页面上展示,在这个页面,我们可以看到请求和响应的各种信息,也可以进行请求重发。同时也可以配合mitmproxy对应的API,来通过Python将请求拦截和做处理,实现接口自动化测试方案。非常好用。
创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。
我准备了一个导航网站,上面记录了一些常用的网站集合,也包含一些羊毛,应该可以帮到你,感兴趣可以访问:https://u1s1.one/ ,欢迎收藏使用