charles+https+安卓7.0+夜神模拟器,解决安卓7.0+版本https无法抓包问题
将用户证书偷渡成系统证书,需要有 root 权限。将 charles 的 CA 证书安装进系统信任的证书目录下,这样在开启 charles 代理的时候,系统就会认为CA证书安全,从而可以获取 https 数据。
1、配置charles+http+夜神模拟器抓包
第一步保证http请求是可以正常抓包
1.配置charles抓包参数
Windows系统证书装一下,后续浏览器可以抓请求,和下载证书
配置抓取请求
配置端口
2.夜神模拟器配置
配置完毕重启夜神模拟器,Windows cmd命令:ping 192.168.2.189 能正常ping通就OK
鼠标长按点击WiFi 设置代理服务器IP,charles配置的端口号
安装一个测试包,测试一下能正常抓取http请求,完成,其他问题请百度解决,这里本次主要解决https抓取问题
2、配置charles+https+安卓7.0+夜神模拟器
谷歌在安卓7.0修改了安全策略,安卓系统 大于 7.0 时, 应用不在信任用户安装的证书文件。用户添加的 CA 证书不能再用于安全连接,对于 https 传输的数据就抓取不到了,会显示<unknown>。
解决方法
- 降级 系统版本
- 将用户证书偷渡成系统证书,需要有 root 权限。将 charles 的 CA 证书安装进系统信任的证书目录下,这样在开启 charles 代理的时候,系统就会认为CA证书安全,从而可以获取 https 数据。
- 市场上各个手机root比较麻烦,这里直接采用夜神模拟器抓包(只是为了获取接口数据,不考虑功能兼容性)
1、Windows安装 OPENSSL【http://slproweb.com/products/Win32OpenSSL.html】。linux 好像默认安装的有,如果使用 linux 系统,可以忽略这一步。
2、配置环境变量:例如工具安装在C:\OpenSSL-Win64,则将C:\OpenSSL-Win64\bin;复制到Path中
3、下载charles证书
下载证书到电脑上
- 电脑端浏览器输入 chls.pro/ssl 即可下载(如果无法打开,检查下是否配置Windows代理),
- 如果未下载也可以在 charles >> help >> SSL Proxying >>Save Charles Root Certificate 保存证书到本地文件夹
4、打开命令窗口执行以下命令,查看证书信息:
证书地址,可以从文件夹文件位置直接鼠标拖拽到cmd命令窗口
openssl x509 -subject_hash_old -in C:\Users\Administator\Downloads\charles-proxy-ssl-proxying-certificate.pem
重命名证书:016a1c82.0 (每个人的证书hash值不一样,每次导入证书都要重新生成这个值)
5、执行 adb 命令连接手机,获取权限,把文件夹挂载为读写模式,把文件复制到证书根目录
adb root
adb remount
adb shell mount -o rw,remount /system
adb push 016a1c82.0 /system/etc/security/cacerts
如果出现 <hash>.0:Read-only file system 这个警告,这是因为 system 文件为只读,需要将其挂载为可读写。一般的解决方法是:mount -o rw,remount /system 修改system读写权限,然后再进行复制操作。如果修改了之后还是提示Read-only file system,还有方法
adb root
adb disable-verity
adb reboot #手机会重启,不用关闭cmd窗口,手机可能需要拔掉数据写重新连接
adb root
adb shell
mount -o rw,remount /system #再次进行修改
然后就可以进行复制操作了。复制完之后输入reboot 重启
6、以上配置就 OK 了,可以在设置-安全-信任的凭据-系统(滑到最底部):查看已导入的证书,证书有可能默认关闭状态,记得手动打开下
测试了下微信小程序、支付宝小程序、https都是可以正常抓取
附赠:IOS 抓取HTTPS请求(IOS不用这么麻烦,证书配置正确-信任一下即可正常抓小程序、https等):
轻松搞定Charles的HTTPS抓包(iOS13可用)_全菜工程师小辉的博客-CSDN博客_ios 抓包https
以上文章参考原文:
更多推荐
所有评论(0)