目录
一.简介
顾名思义,mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
不同于 fiddler 或 wireshark 等抓包工具,mitmproxy 不仅可以截获请求帮助开发者查看、分析,更可以通过自定义脚本进行二次开发。举例来说,利用 fiddler 可以过滤出浏览器对某个特定 url 的请求,并查看、分析其数据,但实现不了高度定制化的需求,类似于:“截获对浏览器对该 url 的请求,将返回内容置空,并将真实的返回内容存到某个数据库,出现异常时发出邮件通知”。而对于 mitmproxy,这样的需求可以通过载入自定义 python 脚本轻松实现。
但 mitmproxy 并不会真的对无辜的人发起中间人攻击,由于 mitmproxy 工作在 HTTP 层,而当前 HTTPS 的普及让客户端拥有了检测并规避中间人攻击的能力,所以要让 mitmproxy 能够正常工作,必须要让客户端(APP 或浏览器)主动信任 mitmproxy 的 SSL 证书,或忽略证书异常,这也就意味着 APP 或浏览器是属于开发者本人的——显而易见,这不是在做黑产,而是在做开发或测试。
二.安装
1.安装mitmproxy库
pip install mitmproxy -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
2.测试mitmproxy库
mitmweb --version
要启动 mitmproxy 用 mitmproxy、mitmdump、mitmweb 这三个命令中的任意一个即可,这三个命令功能一致,且都可以加载自定义脚本,唯一的区别是交互界面的不同。
mitmproxy 命令启动后,会提供一个命令行界面,用户可以实时看到发生的请求,并通过命令过滤请求,查看请求数据。
mitmweb 命令启动后,会提供一个 web 界面,用户可以实时看到发生的请求,并通过 GUI 交互来过滤请求,查看请求数据。
mitmdump 命令启动后——你应该猜到了,没有界面,程序默默运行,所以 mitmdump 无法提供过滤请求、查看数据的功能,只能结合自定义脚本,默默工作。
三.模拟器证书安装
1.修改代理模式
在wifi界面长按,选择高级选项,输入代理服务器主机名,即你的电脑ip,不知道的话可以通过cmd黑窗口输入ipconfig查看
2.安装证书
1启动mitmweb
cmd打开黑窗口输入mitmweb,如果出现以下情况的话,请打开你的python环境所在目录的scripts,在目录位置输入cmd进入。
如下情况则启动成功,8080端口为被监听端口,8081为监听端口
2.模拟器证书安装
经过一些实验,如果不在模拟器中安装证书的话会出现监听失败的现象,保险起见,无脑安装证书即可。
安装成功后为证书命名
打开其他app后会拦截请求,以下是实例
四.Python脚本拦截
1编写python脚本
以下是一个简单的示例
2.执行脚本
cmd输入你编写的脚本文件的路径,建议直接从文件夹中拖入
mitmweb -s E:\qikuedu\7.手机抓包fillder和mitmproxy\mitmproxy抓包\拦截脚本.py
一下是执行成功的一些结果
这样简单的mitmproxy拦截就完成了,拦截的数据我们可以插入数据库或者存入文档保存。