MitmProxy使用:mitmproxy、mitmweb、mitmdump
介绍
mitmproxy是Python编写的一款功能完善的代理工具,mitmproxy是一款支持拦截HTTP和HTTPS请求和响应并即时修改它们的交互式中间人代理工具。同时它提供了Python API给开发者编写插件用来自定义对流量进行处理和修改。
为什么选择 mitmproxy
- 相对于我们常用的 fiddle 代理工具,它是可以跨平台;
- 相对于跨平台的 charles 代理工具,它是开源免费的;
- 最重要的一点,也是为什么我们采用 mitmproxy 来进行做 Mock,它支持使用 Python 进行二次开发,这样就可以结合业务进行灵活拓展了。
mitmproxy 构成
- mitmproxy:是一个控制台工具,允许交互式检查和修改 HTTP 流量;
- mitmweb:mitmproxy 是基于 Web 的用户界面,它允许交互式检查和修改 HTTP 流量;
- mitmdump:mitmproxy 的命令行版本。它提供了类似 tcpdump 的功能,可查看、记录和以编程方式转换 HTTP 流量。
安装
pip3 install mitmproxy
启动
mitmproxy #或者指定端口 mitmproxy -p 8888
启动 mitmproxy 之后,默认开启8080端口, mitmproxy 命令不支持Windows平台,需要使用 mitmdump 或者 mitmweb 命令代替。Windows系统也可以在官网下载它的EXE文件进行安装。
快速部署
设置本地代理
export http_proxy="127.0.0.1:8080"
拉取mitmproxy镜像
docker pull mitmproxy/mitmproxy
运行镜像
docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy mitmproxy
mitmproxy 控制台
快速测试
curl http://readtest.cn/
访问结果:
注意:现在访问https无法劫持,需要访问http://mitm.it 来安装证书,选择匹配的平台,下载 HTTPS 证书。并按照对应的步骤进行安装
mitmproxy 快捷键
? 帮助文档 q 返回/退出程序 b 保存response body f 进入编辑模式,可在最下面输入过滤条件,ESC
或Enter
退出编辑
!(~c 200)
#显示所有返回不是200的请求!(~c 200) & ~d safecode
#显示域名包含safecode,返回不是200的请求~m post & ~u safe
#显示请求的链接里面包含safe的post请
k 上
j 下
h 左
l 右
space 翻页
enter 进入接口详情
z 清屏
e 编辑
r 重新请求
mitmweb
$ mitmweb
启动 mitmweb 命令后,会有一个类似Chrome开发者工具的Web页面,功能上类似mitmroxy,一样可以查看每个请求的详情,包括请求、响应,还可以对请求和响应内容进行修改,包括过滤、重新发送请求等常用功能。
mitmdump
$ mitmdump -s script.py
mitmdump 命令最大的特点就是可以自定义脚本,你可以在脚本中对请求或者响应内容通过编程的方式来控制,实现数据的解析、修改、存储等工作
# script.py
from mitmproxy import http def request(flow: http.HTTPFlow) -> None: # 将请求新增了一个查询参数 flow.request.query["mitmproxy"] = "rocks" def response(flow: http.HTTPFlow) -> None: # 将响应头中新增了一个自定义头字段 flow.response.headers["newheader"] = "foo" print(flow.response.text)
官网: https://mitmproxy.org
文档:http://docs.mitmproxy.org/en/v0.18.2/introduction.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2019-11-06 Go 面向对象编程
2018-11-06 Web轻量级扫描工具Skipfish