Android 7.0 以上的操作系统,大部分机型,如红米note、华为荣耀等按照老的方法设置了代理之后,依然无法抓包,并且部分手机比如小米上安装Charles证书会报错,这是因为Android系统做了安全限制,那么需要怎么解决呢?
先解决Android系统的安全限制
不解决的话Charles会报错:Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)
解决的方法如下:
按照Charles官方文档的要求,https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/,在APP的代码中添加相应代码支持。
也就是说,要在APP代码里进行如下的操作:
1、创建network_security_config.xml
在res文件夹下创建一个“xml”文件夹,并且文件夹中创建network_security_config.xml
2、XML文件配置
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
3、在Manifest文件中进行配置
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
...
</application>
</manifest>
解决部分Android 7.0以上手机下载证书后无法安装的问题
以红米note为例,通过浏览器访问chls.pro/ssl下载的crt文件,提示证书无效,安装失败。
解决方法如下:
1、不使用小米手机自带的浏览器下载证书,可以直接使用Chrome或者其他浏览器下载pcm格式的证书安装。
2、或者使用小米自带的浏览器下载安装证书,但不要直接点击crt文件进行安装,而是通过系统来安装,安装的方法如下:
设置——更多设置——系统安全——从存储设备安装证书——选择证书,安装即可
解决了上面两个问题后,手上的Android手机就可以直接连上代理上网啦~