Charles 适用于浏览器,但不适用于应用程序 - Android

Lea*_*way 3 ssl networking android charles-proxy

我已经安装并一直在使用查尔斯代理(4.5.6)。

我正在使用 Android 9。

Charles 在 Chrome 页面上工作(特别是 Instagram):

查尔斯和 Instagram 上的 chrome

但它不适用于 Instagram 应用程序:

查尔斯和 Insta 应用程序

当我使用该应用程序时,我总是收到该错误。

我应该“保存 Charles 根证书”然后将其安装在我的手机上吗?另外,为什么 Charles 可以在 Chrome 上工作,而不能在 Instagram 应用程序上工作?

Rya*_*ley 8

Instagram 的应用程序使用了一种称为SSL 证书锁定的技术。基本上,这意味着他们将有关服务器预期 SSL 证书的信息捆绑到应用程序中,并拒绝任何不提供该证书的连接。由于 Charles 提供的证书不是 Instagram 的证书,因此连接被 Instagram 应用程序拒绝。在 Chrome 中,它必须依赖浏览器对证书信任的评估,这将遵循设备上安装的证书 - 我假设您已经将设备设置为信任 Charles Proxy SSL 证书,因此因为 Chrome 信任它(因为您告诉它),网站就可以工作了。曾经有一种方法可以在浏览器中进行密钥固定.

您可以在 Facebook 帐户设置中禁用此证书固定:https : //www.facebook.com/whitehat/researcher-settings/

至于他们的实施细节,网上很多关于如何在Instagram的应用程序中禁用固定的文章。我不能特别保证其中的任何一个,因为我没有尝试过它们,我不确定它们将如何与服务条款进行交互,但您可以查看它们以获取更多信息。


Mau*_*ani 5

我一直在与 Charles 合作来监视和调试我的应用程序的网络请求,我想提几点对您有帮助的点:

  1. 如果您查看Android 版Charles SSL 证书的文档,

从 Android N 开始,您需要向应用程序添加配置,以便让它信任 Charles SSL 代理生成的 SSL 证书。这意味着您只能对您控制的应用程序使用 SSL 代理。

Android 框架本身添加了此限制,以避免漏洞和黑客攻击,从而提高安全性。因此,如果您使用的是 Android 7 (Nougat) 或更高版本,则无法使用 Charles 来监控或调试第三方应用程序(在您的情况下为 Instagram)的网络请求。

如果您确实想这样做,可以尝试连接 Android 6 (Marshmallow) 或更低版本的 Android 手机,看看它是否适合您。

  1. 如果您想调试自己的应用程序,您的手机和运行 Charles 的系统应位于同一网络,并且您需要在手机的 Wi-Fi 设置中设置代理配置。

首先转到Charles -> 帮助 -> SSL 代理 -> 在移动设备或远程浏览器上安装 Charles 根证书

您将看到这样的信息窗口:

查尔斯与 Android 的连接

记下此窗口中提到的 IP 地址,然后转到手机的设置-> Wi-Fi -> 选择你的 Wi-Fi 网络 -> 编辑

您会发现名为Proxy的选项,默认情况下为None ,将其更新为Manual。您将看到两个输入字段,用于输入Hostname 和 Port,通过查看 Charles 中提到的 IP 来填写这些详细信息并保存。

安卓 Wi-Fi 设置

  1. 另一个重要的一点是,您需要在手机上安装 Charles 根证书。您可以通过手机浏览器访问https://chls.pro/ssl来完成此操作。它会自动下载证书并提示您安装它。确保您按照第二步连接到 Charles,否则它不会自动下载证书。

完成后,您就可以出发了!


小智 1

这可能有两个原因

1) Instagram 应用程序正在使用禁用代理服务器的网络安全配置文件,有关更多信息,请阅读此网站https://developer.android.com/training/articles/security-config

2)为了检查您自己的应用程序的有效负载,您需要将代理服务器设置为https://community.tealumiq.com/t5/Tealium-for-Android/Setting-up-Charles-to-Proxy-your-Android-Device/ ta-p/5121