配置Charles抓取HTTPS的方法就不说了,网上一搜一大堆,无非是配置下证书,打开下SSL代理连接。最近业务开发需要抓取HTTPS请求,按照网上的教程在自己的华为P9(Android O)上一顿配置diao用没有,然而同组小哥的乐视就可以,一顿查之后发现是Android N之后证书信任的问题。
从Android Nougat(7.0)开始,谷歌改变了网络安全策略。
自签的CA证书将默认不被TLS/SSL连接信任,这意味着HttpCanary可能无法抓取HTTPS的明文数据。
解决方法:
在项目的AndroidManifest.xml中添加networkSecurityConfig:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
network_security_config文件放在 res/xml/ 目录下面:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-con