文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【mitmproxy】一、简介与快速上手

2023-09-20 14:14

关注
  1. 实时拦截、修改 HTTP/HTTPS 请求和响应
  2. 可保存完整的 http 会话,方便后续分析和重放
  3. 支持反向代理模式将流量转发到指定服务器
  4. 支持 macOS 和 Linux上的透明代理模式
  5. 支持用 Python 脚本对 HTTP 通信进行修改
pip3 install mitmproxy

使用 pip 快速安装 mitmproxy(前提已经安装了 python>=3.6 环境):

pip3 install mitmproxy

image-20220916183242131

macOS 用户也可以用 brew 安装

brew install mitmproxy

windows用户建议安装Windows Terminal以提高终端渲染效率

Docker 镜像地址

mitmproxy 主要包含以下三个工具,你可以从 python 安装目录下的 Scripts 文件夹下找到,并为其创建快捷方式,方便以后使用

image-20220916183557748

这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。

1. mitmproxy

img

mitmproxy 是一个控制台工具,允许交互式检查和修改 HTTP 流量。它与 mitmdump 的不同之处在于所有流都保存在内存中,这意味着它旨在获取和处理小样本。使用 ? 问号键查看上下文相关使用文档。

windows 暂不支持

2. mitmweb

img

mitmweb 是 mitmproxy 的基于 Web 的用户界面,允许交互式检查和修改 HTTP 流量。与 mitmproxy 一样,所有流都保存在内存中.

目前还处于beta测试阶段,许多 mitmproxy 特性还不支持。

个人觉得这个东西不好用,也不是我们着重学习的东西,可视化的抓包、过滤工具有很多,同类型比这个好用的有charles(强推)、fiddler、Burpsuit等,专业点的 Wireshark(不适合http),不管是做开发、运维、测试,总得熟练使用一款抓包工具,但肯定不是 minweb 🤣

3. mitmdump

mitmdump 提供了类似 tcpdump 的功能(做过运维的同学应该都会用😁),让你可以查看、记录和以编程方式转换 HTTP 流量。有关完整文档,请参阅 --help 参数。

示例1 :保存流量包

# 开启代理监听模式(默认8080端口),并将抓到的所有包保存到 outfilemitmdump -w outfile

示例2:过滤并保存流量

mitmdump -nr infile -w outfile "~m post"

启动 mitmdump 在不绑定代理端口(-n)的情况下,从 infile 读取所有流,并按指定的表达式(仅匹配 POST)过滤后,写入 outfile。

示例3:客户端重放

mitmdump -nC outfile

启动 mitmdump 在不绑定到代理端口 (-n)的情况下,然后重放来自 outfile (-C 文件名) 的所有请求。

显然,你也可以重放一个文件(srcfile),并将其写入另一个文件(dstfile):

mitmdump -nC srcfile -w dstfile

客户端重放功能详见连接:client-side replay

示例4:执行脚本

mitmdump -s examples/simple/add_header.py

运行 add_header.py 官方示例脚本,该脚本是为所有 response 添加一个新标头。

示例5:数据转换

mitmdump -ns examples/simple/add_header.py -r srcfile -w dstfile

此命令从 srcfile 加载流,根据指定的脚本对其进行转换,然后将其写回 dstfile。

mitmproxy 作为一个常规的http代理服务器使用时,默认监听 http://localhost:8080,因此要想数据包经过 mitmproxy,需要配置浏览器的代理(本机或其他机器),代理设置步骤请自行搜索(比如插件:SwitchyOmega)。

代理设置好后可打开 http://mitm.it 验证http流量是否经过 mitmproxy。

如果显示以下文字,则代理配置的不对,流量不走 mitmproxy

If you can see this, traffic is not passing through mitmproxy.

如果配置正确,打开 http://mitm.it 会显示如下界面:

img

mitmproxy 中可以看到抓到的数据包:

image-20220920232445665

在上面的浏览器页面中根据你的操作系统,选择下载相应的证书文件,然后点击后面的 Show Instructions 按钮显示证书安装步骤,看不懂英文的小伙伴可以直接翻译过来

使用 mitmproxy 抓包时,发现很多请求会返回 413 错误,找到解决方案是抓包时候,添加 --set http2=false 参数,比如:

mitmweb.exe -s .\gid.py --set http2=false

来源地址:https://blog.csdn.net/wanzheng_96/article/details/126964292

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯