我想使用Charles代理工具测试来自Android设备的Https调用。我需要查看调试应用程序的原始请求/响应内容。我通过在“代理设置”下添加主机和端口来配置Charles - > SSL选项卡。当我运行应用程序时,所有SSL调用似乎都会从Charles快速消失。有没有人知道如何解决这个问题。 Charles文档似乎没有Android设备的信息。
答案 0 :(得分:65)
参考: How to get charles proxy work with Android 7 nougat?
从您的计算机上运行Charles :
开放代理设置:代理 - >代理设置,代理选项卡,选中"启用透明HTTP代理",并记住"端口"在心里。
打开访问控制设置:代理 - >访问控制设置。添加本地子网以授权本地网络上的计算机以使用其他计算机/移动设备上的代理。
在Android手机中:
配置您的手机:转到设置 - >无线&网络 - > WiFi - >连接或修改您的网络,填写计算机IP地址和端口(8888):
获取Charles SSL证书。从您的移动浏览器访问此网址: http://charlesproxy.com/getssl
在“为证书命名”中输入您想要的任何内容
接受安全警告并安装证书。如果你成功安装它,那么你可能会看到这样的: 在手机中,设置 - >安全 - >可信凭证:
完成。
答案 1 :(得分:43)
编辑 - 这个答案适用于Charles的早期版本。请参阅下面的@ semicircle21答案,了解v3.10.x的正确步骤 - 比这种方法更容易......: - )
这里有什么值得一步一步的说明。它们也应该在iOS中同样适用:
然后您应该能够在Charles中看到SSL文件。如果你想截取和更改值,你可以使用“Map Local”工具,这真的很棒:
答案 2 :(得分:27)
感谢@ bkurzius的回答,此更新适用于Charles 3.10+。 (原因是here)
Install Charles Root Certificate on a Mobile Device or Remote Browser...
,然后按照说明操作。 (使用Android浏览器下载并安装证书。)答案 3 :(得分:7)
见这里:
您需要将charles.crt证书安装到您的设备上。
答案 4 :(得分:3)
评价最高的答案是完美的(有点旧但仍然有效),但我只是想提一下,因为Android N我们都可以配置你的应用程序,以便拥有差异信任SSL证书(仅用于发布,调试和等等),包括Charles SSL代理证书(如果您下载Charles证书并将.pem文件放在原始文件夹中)。更多信息可以在这里找到:https://developer.android.com/training/articles/security-config.html
此外,官方的Charles文档可用于设置此内容:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
希望这有助于在您的应用项目中设置Charles,而不是在每个Android设备上。
答案 5 :(得分:1)
我想到了这个问题。这是因为Charles 3.7有一些Android设备的漏洞。我更新到Charles 3.8 Beta版本,似乎对我来说很好。
答案 6 :(得分:1)
我浪费了1天时间才发现问题,我的系统没有要求连接“允许”或“拒绝”。我虽然是由于一些认证问题。 尝试了上述所有方法,但没有一个有效。最后,我发现“防火墙是真正的罪魁祸首”。如果防火墙设置为“开”,则它们将不允许查尔斯通过代理IP与笔记本电脑连接。取消它们,一切都会顺利进行。不确定这是否是无关紧要的答案,而只是想分享。
答案 7 :(得分:0)
对我来说,问题是查尔斯告诉我在我的代理设置中路由到的IP地址不正确。为了解决这个问题,我最终转到终端中的ifconfig
,并尝试在端口inet
上为当前活动连接尝试不同的IP地址(列在8888
旁边)