我们主要针对开发者对自己app的抓包的解决方案
工具:
- Charles4.6
- Android10.0手机
简介:
Android 7.0 (api 24 ) 和 targetSdkVersion 对抓包的影响
原来在Android 7.0(API 24 ) ,有一个名为“Network Security Configuration”的新安全功能。这个新功能的目标是允许开发人员在不修改应用程序代码的情况下自定义他们的网络安全设置。如果应用程序运行的系统版本高于或等于24,并且targetSdkVersion>=24,则只有系统(system)证书才会被信任。所以用户(user)导入的Charles根证书是不被信任的
解决方案步骤:
第一步:
错误原因:
SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations
![](https://img.haomeiwen.com/i1218708/89eea40bdc16fcf2.png)
第二步:
- 给手机上安装CA证书
- 手机浏览器上登录http://chls.pro/ssl安装
- 点击手机设置-安全-手动安装证书,具体可以百度方法
第三步:
给代码添加一下配置信息
<!--添加如下文件 res/xml/network_security_config.xml 到你的代码里面,然后就能实现debug模式下,信任用户自己安装的根证书,比如Charles的证书:
-->
<network-security-config>
<!-- Trust user added CAs while debuggable only -->
<!-- <debug-overrides>-->
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<!--信任用户安装的证书-->
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
<!-- </debug-overrides>-->
</network-security-config>
然后在你 app的 manifest 文件中引入上面的文件, 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
网友评论