mitmproxy 是什么?
mitmproxy 是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
为什么要用mitmproxy?相比Fiddler 和 Charles它有什么优势?
不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。
举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。
而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。
特征
-
拦截HTTP和HTTPS请求和响应并即时修改它们
-
保存完整的HTTP对话以供以后重播和分析
-
重播HTTP对话的客户端
-
重播先前记录的服务器的HTTP响应
-
反向代理模式将流量转发到指定的服务器
-
macOS和Linux上的透明代理模式
-
使用Python对HTTP流量进行脚本化更改
-
实时生成用于拦截的SSL / TLS证书
安装
在 windows 中,以管理员身份运行 cmd 或 power shell:pip install mitmproxy
检查安装是否成功:mitmdump --version
运行
要启动 mitmproxy 用 mitmproxy
、mitmdump
、mitmweb
这三个命令中的任意一个即可,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。
命令行输入:mitmdump
默认就会监听8080端口;相当于加了一个代理层8080;如果此时请求是抓取不到包的,因为不经过代理层。
windows 配置代理
1、电脑配置代理:8080 端口
2、浏览器设置代理:
浏览器再次访问会提示报错:
安装证书
解决办法:从Windows
用户界面的 .mitmproxy
中,点击进去,可以看到有多个证书,
Windows
端需安装:mitmproxy-ca-cert.p12
1、找到当前用户.mitmproxy 文件夹中的这个文件,点击直接安装
2、存储到对应的目录
3、浏览器导入证书
4、再次访问百度,可以看到抓取到请求了