美文网首页
安卓7.0及以上系统如何抓取Https的包

安卓7.0及以上系统如何抓取Https的包

作者: 咸鱼飞起来啦 | 来源:发表于2020-10-22 10:49 被阅读0次

最近在测试大精品4.9项目中发现一个有意思的问题:
(1)安卓系统 7.0 以下版本,不管大精品任意版本,都会信任系统提供的证书
(2)安卓系统 7.0 及以上版本,大精品4.8及以下版本,都会信任系统提供的证书
(3)安卓系统 7.0 及以上版本,大精品4.9 版本,大精品只信任它自己配置的证书列表[link]
通过查看资料以及本次大精品的需求是Targetsdk版本升级至26,定位到问题所在:
在Android7.0及以上的系统中,每个应用可以定义自己的可信CA证书。
默认情况下,应用只会信任系统预装的CA证书,而不会信任用户安装的CA证书。
而回想抓https包的过程,无论是fiddler还是Charles,想抓https,都必须手机安装对应的证书,
通过fiddler/Charles安装的证书恰恰正属于用户安装的CA证书,因此会被视作不安全的证书。
下面是我通过查看资料以及实践后,得到的一个解决办法,进行总结:
修改app中的android:networkSecurityConfig属性,具体为:
在AndroidManifest.xml中,添加android:networkSecurityConfig="@xml/network_security_config"
<?xml version="1.0" encoding="utf-8"?>
<manifest.......>
<application android:networkSecurityConfig="@xml/network_security_config" ....>
.....
</application>
</manifest>
添加配置文件res/xml/network_security_config.xml
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
接下来,就是重新打包,再进行抓包就可以抓到HTTPS的包了。
如果有项目源码的话,可以直接进行修改,如果没有的话,可以通过将apk文件用apktool反编译apktool,拿到包内容后,修改配置文件,然后再重新签名打包就可以了。

相关文章

网友评论

      本文标题:安卓7.0及以上系统如何抓取Https的包

      本文链接:https://www.haomeiwen.com/subject/ssznpktx.html