最近,测试小哥哥提出公司的部分7.0以上的测试机无法进行Charles抓包查看https的接口数据。
通过一波的查阅资料过后发现:android7.0+的版本新增了证书验证,https的安全证书手机端和电脑端都必须安装,这个是前提;又由于android手机多厂商系统定制的问题,可能有部分手机确实无法抓包,这里,对于抓包的问题上,我们在给测试打包的时候要对我们的项目进行添加设置: 默认信任所有证书。
这个操作其实是比较敏感的,线上不能带上这个配置;下面来说一下相关配置项:
1.在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>
2.在AndroidManifest里的<application>标签中,添加代码:
android:networkSecurityConfig="@xml/network_security_config"
修改完毕后,重新运行项目,在抓包的手机上配置好代理,就可以进行https的抓包了。
特此记录一下