mitmproxy是什么?
mitmproxy(Man-In-The-Middle Proxy) 是一个功能强大的 开源 HTTP/HTTPS 抓包工具,可以拦截、修改、重放和分析网络流量。
适用于:
- 抓取网页、APP 的 API 请求(包括 HTTPS)。
- 修改 HTTP/HTTPS 请求(比如篡改 APP 数据)。
- 绕过 HTTPS 加密,查看加密流量内容。
- 自动化抓包(支持 Python 脚本)。
安装&运行
通过官网的链接下载安装:https://mitmproxy.org/
或微信搜一搜 sddsxck
关注公众号在公众号内发送 100005
下载
安装完成后,在 bin 下,可以看到三个可执行文件,分别对应 mitmproxy 的三种模式
mitmproxy.exe
(终端模式)
- 交互式命令行界面,可以实时查看、修改、重放 HTTP/HTTPS 请求。
- 适合调试 API,适合喜欢 CLI 的用户。
- 启动方式
mitmproxy -p 8080
mitmweb.exe
(图形化界面)
- 提供 Web UI,在浏览器里查看流量,更直观。
- 适合不喜欢命令行的用户,推荐新手使用。
- 启动方式
mitmweb -p 8080
- 运行后,打开
http://127.0.0.1:8081/
查看界面。
mitmdump.exe
(脚本模式)
- 命令行模式,支持 Python 自动化脚本处理 HTTP/HTTPS 流量。
- 适合编写爬虫、自动化抓包和数据分析。
- 启动方式(运行自定义脚本):
mitmdump -p 8080 -s myscript.py
直接双击运行默认代理端口 8080,我打开的是 mitmweb.exe
配置手机代理
手机和mitmproxy同一网络
确保手机和当前 mitmproxy
所在运行的电脑处于同一网络下,如果电脑有无线网卡,可以开热点,手机连接。
查看电脑ip地址,可以直接打开命令行,输入 ipconfig
查看
然后在手机WIFI设置里,设置当前网络代理,主机名为电脑ip地址,端口填mitmproxy的端口(没设置就是8080)
确认后手机的请求就会经过电脑的8080端口了,我打开的mitmweb.exe,所以可以直接在浏览器中查看
安装证书
现在基本上很少有纯http的应用了,基本上都使用 https,所以要安装证书让代理可以解密数据。
Windows系统,在用户目录中的 .mitmproxy
文件夹找到 mitmproxy-ca.p12
并双击安装证书,一直下一步就可以了(密码可以不需要),在证书存储部分,选择将所有的证书都放入下列存储 - 受信任的根证书颁发机构
手机安装证书
使用的 mitmweb,在配置完手机代理后,在手机浏览器输入 http://mitm.it
进入到下方界面
点击手机系统对应的 Get mitmproxy-ca-cert… 下载证书
小米自带浏览器下载一直是连接中,下载一个其他的浏览器下载就好了
下载完后,安装证书,不同手机方式不一样
例如红米note:设置 - 安全 - 更多安全设置 - 更多安全设置 - 加密与凭证 - 安装证书 - CA证书 中选择安装
需要注意的是,Android版本大于7,那么安装的证书是用户证书,并且在Android7.0开始,用户证书不被信任,所以需要安装系统证书(需要手机Root),如果APP可以在模拟器中运行那么就使用模拟器,不行的话只能另寻他法。
逍遥模拟器 & Root安装证书
模拟器可以直接Root,我这里使用逍遥模拟器,按照上面的步骤,在模拟器内设置代理,下载证书。
如果因为设置代理,模拟器无法下载,可以在 mitmproxy 网页中,点击 options,勾选Don’t verify server certificates…或者关闭代理下载完后开启
模拟器内下载完证书后,点击右边共享
点击下载共享路径的窗口图标,打开windows的文件夹,可以看到,下载的证书就在这个文件夹中
打开命令行,进入逍遥模拟器安装目录,输入以下命令
# adb连接逍遥模拟器
adb connect 127.0.0.1:21503
# 开启写入模式(需要模拟器设置中使用的是独立系统盘,否则开启失败)
adb remount
看到 remount succeeded
就成功了
然后需要下载openssl,获取证书的hash值
下载链接:https://slproweb.com/products/Win32OpenSSL.html
或微信搜一搜
sddsxck
关注公众号在公众号内发送100005
下载
下载安装后,默认在 C:\Program Files\OpenSSL-Win64\bin
,将此路径加入path
然后打开命令行,进入证书文件夹,输入以下命令获取
openssl x509 -subject_hash_old -in 证书文件
复制第一行的 c8750f0d
,这个就是证书要更改的名称,将证书复制一份,重命名为 c8750f0d.0
后缀是 .0
然后将其放到模拟器下载目录,在模拟器中打开下载目录(共享 - 安卓那个按钮),勾选这个文件
然后点击左上角的菜单按钮,系统文件夹,etc/security/cacerts,点击右上角文件夹,粘贴选择项。
然后需要输入以下命令,给证书文件设置权限,使用上面打开的命令行
输入 adb shell
进入模拟器命令行,输入 su
获取权限,然后输入以下命令设置文件权限
chmod 644 /system/etc/security/cacerts/c8750f0d.0
然后可以在模拟器的设置 - 安全性和位置信息 - 加密与凭证 - 信任的凭据中看到系统证书中已经加入完成了。
这样,就可以监听到APP应用的数据了。
END