无法使用 Android 查看 Charles 代理中的 HTTPS 请求

Unable to view HTTPS requests in Charles Proxy with Android

我正在尝试调试 Google Playstore 上的应用程序,以便我可以看到它发出的请求。我已经在我的计算机上设置了 Charles Proxy 来帮助我这样做,但是我在查看通过 https 发送的请求时遇到了问题。下面列出了我的步骤。

我的电脑:
曼扎罗 Linux

我的Phone:
Google 像素 4a
Android11
未 root

我的设置:
使用 Charles v4.6.1
Proxy Settings
SSL Proxying Settings
我的访问控制设置包含我的 phone 的 IP。

我的Phone设置:
Proxy Settings
Certificate

以下是我允许应用程序通过 charles 使用 SSL 的步骤:

  1. 从 Google Playstore 下载应用程序。
  2. 找到 apk 并将其传输到我的电脑,然后通过 Google Playstore 卸载该应用程序。
  3. 使用 XDA 论坛的 Apktool 反编译 apk。
  4. 根据 and this,我需要在网络安全xml.
  5. 中的<network-security-config>下面添加以下几行
<debug-overrides>
    <trust-anchors>
        <certificates src="user"/>
    </trust-anchors>
</debug-overrides>
  1. AndroidManifest.xml 已经进行了必要的更改,所以我不做任何更改。
  2. 我把反编译后的内容编译成apk
  3. 我使用 Uber Apk Signer 对构建的 apk 进行签名。
  4. 我将构建并签名的 apk 传输到我的 phone,并安装它。

通过此列表,我在任何步骤中都没有收到任何错误。

Here is a screenshot of my view in Charles.

在此先感谢您,如果您需要更多详细信息,请告诉我。

您的网络配置在 <debug-overrides> 内,仅适用于调试版本。您是在调试模式下还是在生产环境下构建应用程序?如果您不在调试模式下构建,则该配置将不适用。

您可能想改用 <base-config>,它适用于所有构建,而不仅仅是调试构建。这里有一个完整的例子:https://httptoolkit.tech/docs/guides/android/#if-you-dont-have-a-custom-network-security-config.

如果这不起作用,则可能是应用程序代码本身存在一些证书固定,与网络安全设置无关。要解决此问题,您需要手动编辑代码本身。您也可以尝试使用 https://github.com/shroudedcode/apk-mitm,它有一系列自动补丁可以为您禁用许多常见的手动固定实现。