首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 9 (Pie) -无法通过Charles proxy和Fiddler等网络监控工具捕获任何api (本地/ web)

在 Android 9 (Pie) 及更高版本中,Google 引入了更严格的网络安全配置,默认情况下不允许应用程序信任用户或设备安装的证书。这意味着像 Charles Proxy 和 Fiddler 这样的网络监控工具可能无法捕获应用程序的网络流量,因为它们依赖于中间人攻击(MITM)技术来解密 HTTPS 流量。

要解决这个问题,您需要在应用程序的网络安全配置中明确允许信任用户或设备安装的证书。以下是详细的步骤:

1. 创建网络安全配置文件

首先,您需要创建一个 XML 文件来定义网络安全配置。这个文件通常放在 res/xml 目录下。

示例 network_security_config.xml

代码语言:javascript
复制
<?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> 部分允许在调试模式下信任用户安装的证书。

2. 在 AndroidManifest.xml 中引用网络安全配置文件

接下来,您需要在应用程序的 AndroidManifest.xml 文件中引用这个网络安全配置文件。

示例 AndroidManifest.xml

代码语言:javascript
复制
<application
    android:networkSecurityConfig="@xml/network_security_config"
    ... >
    ...
</application>

3. 安装 Charles Proxy 或 Fiddler 的证书

确保您已经在 Android 设备上安装了 Charles Proxy 或 Fiddler 的根证书。通常,您可以通过以下步骤来安装证书:

  1. 打开 Charles Proxy 或 Fiddler,找到导出根证书的选项。
  2. 将证书导出为 .crt 文件。
  3. 将证书文件传输到 Android 设备。
  4. 在 Android 设备上,打开“设置” -> “安全” -> “从存储设备安装证书”。
  5. 选择导入的证书文件并安装。

4. 配置代理

确保您的 Android 设备已正确配置为使用 Charles Proxy 或 Fiddler 作为代理服务器。通常,您可以通过以下步骤来配置代理:

  1. 打开 Android 设备的“设置”。
  2. 选择“Wi-Fi”。
  3. 长按当前连接的 Wi-Fi 网络,然后选择“修改网络”。
  4. 展开“高级选项”。
  5. 在“代理”部分,选择“手动”。
  6. 输入 Charles Proxy 或 Fiddler 的 IP 地址和端口号。

5. 重新启动应用程序并捕获流量

完成上述步骤后,重新启动您的应用程序。此时,Charles Proxy 或 Fiddler 应该能够捕获应用程序的网络流量。

注意事项

  • 仅在调试模式下使用:上述配置仅应在调试模式下使用,不应在生产环境中使用,因为它会降低应用程序的安全性。
  • 清除缓存:如果您在更改网络安全配置后仍然无法捕获流量,请尝试清除应用程序的缓存或重新安装应用程序。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券