安卓7.0及以上系统如何抓取Https的包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓7.0及以上系统如何抓取Https的包相关的知识,希望对你有一定的参考价值。
参考技术A 最近在测试大精品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,拿到包内容后,修改配置文件,然后再重新签名打包就可以了。
fiddler抓取app的https的包
线上问题的排查有时候需要抓包,但是是https协议的,则需要安装证书
也就是说目前只能使用6.0以下的安卓系统进行抓包了,当然也有其他办法,会比较麻烦一点
目录
1、设置fiddler
2、设置手机
3、抓包
1、设置fiddler
第一步:设置允许远程连接
参考https://www.cnblogs.com/weizhideweilai/p/9170233.html
第二步:打开https连接设置
2、设置手机
第一步:设置代理
参考https://www.cnblogs.com/weizhideweilai/p/9170233.html
第二步:重启fiddler,然后手机访问
3、抓包
完成证书安装就可以开始抓取https的包了
安卓和ios的设置方法一样,具体可以实际操作试试
关注使用高版本手机抓取https的包,可参考博客https://www.52pojie.cn/thread-967606-1-1.html#
以上是关于安卓7.0及以上系统如何抓取Https的包的主要内容,如果未能解决你的问题,请参考以下文章