Charles Proxy 不适用于 7.0 以上的 Android 版本?

Charles Proxy not working for Android version above 7.0?

我很长时间以来一直在使用 Charles 来拦截请求和响应,但是当我尝试 google 像素定位 Android 奥利奥时,它一直给我握手异常。我知道他们在 Naught 中对网络安全进行了某些更改。任何形式的帮助将不胜感激。

如果您在设备 tar 上使用 Charles 时遇到问题 - 在 Android 中达到 7.0 以上,请按照以下步骤操作,as detailed in the Charles Proxy documentation

  1. 添加以下行

    android:networkSecurityConfig="@xml/network_security_config"> 
    

    到应用程序标签中的清单文件。

  2. 创建一个 xml 文件夹,其中包含一个名为 network_security_config 的文件,并在其中粘贴以下代码。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

注意:如果您只有单一构建风格,请不要将以上内容提交给您的分支。

For People having different build flavours (debug/release/other) can use this for debug version and commit as well.

另一个答案也是正确的,但是根据 the documentation 根本不需要 base-config xml 标签。虽然没有明确提及,但他们的示例不包含该标记。

这是“为调试配置 CA”文档站点上的代码:

res/xml/network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/debug_cas"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

我们可以只允许 user-installed 证书,而不是指定特定的证书,就像在其他答案中一样:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>