在 Android 9 (Pie) 及更高版本中,Google 引入了更严格的网络安全配置,默认情况下不允许应用程序信任用户或设备安装的证书。这意味着像 Charles Proxy 和 Fiddler 这样的网络监控工具可能无法捕获应用程序的网络流量,因为它们依赖于中间人攻击(MITM)技术来解密 HTTPS 流量。
要解决这个问题,您需要在应用程序的网络安全配置中明确允许信任用户或设备安装的证书。以下是详细的步骤:
首先,您需要创建一个 XML 文件来定义网络安全配置。这个文件通常放在 res/xml
目录下。
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">yourdomain.com</domain>
<trust-anchors>
<certificates src="user"/>
</trust-anchors>
</domain-config>
<debug-overrides>
<trust-anchors>
<certificates src="user"/>
</trust-anchors>
</debug-overrides>
</network-security-config>
在这个配置文件中,<debug-overrides>
部分允许在调试模式下信任用户安装的证书。
AndroidManifest.xml
中引用网络安全配置文件接下来,您需要在应用程序的 AndroidManifest.xml
文件中引用这个网络安全配置文件。
AndroidManifest.xml
<application
android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
确保您已经在 Android 设备上安装了 Charles Proxy 或 Fiddler 的根证书。通常,您可以通过以下步骤来安装证书:
.crt
文件。确保您的 Android 设备已正确配置为使用 Charles Proxy 或 Fiddler 作为代理服务器。通常,您可以通过以下步骤来配置代理:
完成上述步骤后,重新启动您的应用程序。此时,Charles Proxy 或 Fiddler 应该能够捕获应用程序的网络流量。
领取专属 10元无门槛券
手把手带您无忧上云