在接口测试中,相信很多人都遇到过 Android 高版本(Android7.0 以上)系统无法抓取HTTPS包的问题。
由于在测试过程中对分析定位问题很不方便,所以咱们自己要想办法解决这个问题
一、Android6.0 及以下系统可以抓包,而 Android7.0 及以上系统不能抓包;
原因:Android7.0+ 的版本新增了证书验证,所以 App 内不再像原来一样默认信任用户的证书;
二、解决方案
1.让安卓开发解决,重新打包,对于安卓开发同学来说无非是多加几行代码的事,但是如果要想抓取别人产品的HTTPS包,那这种方式就行不通了。
2.换一部Android6.0以下的手机/用系统6.0一下的模拟器安装app,可以解决这个问题
3.Charles + VirtualXposed + JustTrustMe【主要讲解第三种方案】
三、首先进入 Github 下载如下两个 Page
- VirtualXposed:https://github.com/android-hacker/VirtualXposed
- JustTrustMe:https://github.com/Fuzion24/JustTrustMe
1.使用如下 adb 命令分别安装两个 pages
adb -s C7YVB20413007239 install D:chomeDowVirtualXposed_0.18.2.apk
adb -s C7YVB20413007239 install D:chomeDowJustTrustMe.apk
2.安装完成进入 VirtualXposed apk 应用,点击 6 个小点进入设置页面
3.进入设置页面,点击模块管理,勾选 JustTrustMe(我这里没有找到它,可能是我这个版本不需要在手动选择了,安装之后自动识别到了)重启之后我们重新进去设置页面,添加我们需要抓包的应用即可,我这里选择的钉钉做案例。
4.点击添加应用,选择需要抓包的软件安装:
5.配置 Charles 抓包
6.回到 VirtualXposed 上滑解锁,打开我们之前安装的企业微信,则发现 charles 已经成功抓取到钉钉的 HTTPS 的数据包