MitmProxy是一组优秀的网络代理拦截工具,可为 HTTP/1、HTTP/2 和 WebSockets 提供交互式、支持 SSL/TLS
的拦截代理。它提供 拦截 HTTP 和 HTTPS 请求和响应并动态修改它们、保存完整的 HTTP
会话,以供重放攻击和分析、反向代理模式将流量转发到指定服务器、macOS 和 Linux 上的透明代理、对 HTTP
流量进行脚本化更改等功能。
- 官方地址:https://mitmproxy.org/
- 官方文档:https://docs.mitmproxy.org
- 官方博客:https://mitmproxy.org/posts/
- 插件: https://docs.mitmproxy.org/stable/addons-overview/
- Github: https://github.com/mitmproxy/mitmproxy
- Releases:https://github.com/mitmproxy/mitmproxy/releases
DockerHub:https://hub.docker.com/r/mitmproxy/mitmproxy
- 证书安装: http://mitm.it/
安装
Python3安装
直接使用pip即可,使用如下命令进行安装
1 | # 升级pip |
由于windows话默认是没有python3的(如果你没做兼容也就是将python复制一份副本并重命名为python3),使用python即可
Mac
Mac 下推荐使用 homebrew
安装,尤其是m1
的,注意啦!!!
别问我怎么知道的,说多了都是泪
1 | brew install mitmproxy |
mitmproxy组成
mitmproxy 由mitmproxy、mitmdump、mitmweb组成
mitmproxy
mitmproxy是用于调试、测试、隐私测量和渗透测试的瑞士军刀。它可用于拦截、检查、修改和重放 Web 流量,例如
HTTP/1、HTTP/2、WebSockets 或任何其他受 SSL/TLS 保护的协议。您可以美化和解码从 HTML
到 Protobuf 的各种消息类型,即时截取特定消息,在它们到达目的地之前对其进行修改,并稍后将它们重播到客户端或服务器。
mitmdump
强大的插件功能与python
api集成,提供了对mitmproxy的完全控制,可以自动修改消息、重定向流量、可视化消息或实现自定义命令。基于mitmdump可实现拓展,完全自由定制。实现基于此的流量转发代理中间件。
mitmproxy
在图形界面中使用 mitmproxy 的主要功能 mitmweb。mitmweb 为您提供任何其他应用程序或设备的类似体验,以及请求拦截和重放等附加功能。
证书安装与配置
对于任何中间人抓包工具来说,若需要完整的捕获HTTPS请求,必须需要配置HTTPS证书。由于mitmproxy的证书在安装时便已经自带了,所以不必多次安装。只需配置证书即可。
手机上需要下载直接进入 http://mitm.it/ 即可(需要先连接上mitmproxy的代理)
mitmproxy界面
mitmproxy有许多的功能界面主要有以下几个
index
打开代理时的index界面,此界面为中心界面,一进来就是这个,简要的介绍了包
包详情界面
使用j
、k
(或者上下方向键)实现包之间的移动,enter(回车)进入包的详情界面,可以使用tab进行切换。如下图所示
当然是要大写的
P
也可以进入这里
帮助界面
每个CLI基本上都有help,而mitmproxy自然也有, 如下
?
: 进入
还有过滤帮助,可以使用TAB
实现切换。如下所示
当使用f
快速进入过滤命令中 再加上过滤语法即可实现过滤,并在其中输入 ~u baidu
如下所示
实现对url为 baidu
的实现过滤展示
Key Bindings界面
shift + k
也就是大写的K进入此界面
按键绑定界面,这里展示了所有的按键在mitmproxy中的功能,当然也可以修改其绑定,其界面如下所示。
Events界面
此界面可以查看捕获流量的所有事件,使用E
进入,如下所示
Command Reference界面
所有的输入的命令都可以在这里找到,当然需要一些英文的识别能力, 如下所示
shift + c
:进入Command Reference界面
:
进入命令输入状态
Options界面
参数选项界面,可以认为这是mitmproxy设置界面, 如下所示
大写的
o
进入
一些常用的按键
移动
快捷键 | command | 说明 |
---|---|---|
q | console.view.pop | 返回:界面间的返回 |
g | console.nav.start | 跳到第一行 |
G | console.nav.end | 跳到最后一行 |
h | console.nav.left | 跳到左面 |
j | console.nav.down | 跳到下一行 |
k | console.nav.up | 跳到上一行 |
l | console.nav.right | 跳到右面 |
space | console.nav.pagedown | 跳到本页最后一行 |
ctrl b | console.nav.pageup | 跳到本页第一行 |
ctrl f | console.nav.pagedown | 跳到本页最后一行 |
tab | console.nav.next |
可参考 help 界面
e: 快速生成请求
mitmdump具体实现
一个基于mitmdump
实现的流式流量转发处理平台: mitmdumpMan
抓包tips
- 使用类似与SwitchyOmega实现端口塞选效果更佳