SSL代理/查尔斯和Android的麻烦

时间:2013-07-24 00:49:44

标签: android proxy charles-proxy

我想使用Charles代理工具测试来自Android设备的Https调用。我需要查看调试应用程序的原始请求/响应内容。我通过在“代理设置”下添加主机和端口来配置Charles - > SSL选项卡。当我运行应用程序时,所有SSL调用似乎都会从Charles快速消失。有没有人知道如何解决这个问题。 Charles文档似乎没有Android设备的信息。

8 个答案:

答案 0 :(得分:65)

for Android7

参考: How to get charles proxy work with Android 7 nougat?

适用于Android7以下的Android版

从您的计算机上运行Charles

  1. 开放代理设置:代理 - >代理设置,代理选项卡,选中"启用透明HTTP代理",并记住"端口"在心里。 enter image description here

  2. SSL代理设置:代理 - > SSL代理设置,SSL代理选项卡,选中“启用SSL代理”,然后将添加到位置: enter image description here enter image description here

  3. 打开访问控制设置:代理 - >访问控制设置。添加本地子网以授权本地网络上的计算机以使用其他计算机/移动设备上的代理。 enter image description here

  4. 在Android手机中

    1. 配置您的手机:转到设置 - >无线&网络 - > WiFi - >连接或修改您的网络,填写计算机IP地址和端口(8888): enter image description here

    2. 获取Charles SSL证书。从您的移动浏览器访问此网址: http://charlesproxy.com/getssl enter image description here

    3. 在“为证书命名”中输入您想要的任何内容

    4. 接受安全警告并安装证书。如果你成功安装它,那么你可能会看到这样的: 在手机中,设置 - >安全 - >可信凭证: enter image description here

    5. 完成。

      然后您可以对您的手机进行一些测试,加密的https请求将显示在Charles中: enter image description here

答案 1 :(得分:43)

编辑 - 这个答案适用于Charles的早期版本。请参阅下面的@ semicircle21答案,了解v3.10.x的正确步骤 - 比这种方法更容易......: - )

这里有什么值得一步一步的说明。它们也应该在iOS中同样适用:

  1. Open Charles
  2. 转到代理商>代理设置> SSL
  3. 选中“启用SSL代理”
  4. 选择“添加位置”并输入主机名和端口(如果需要)
  5. 单击“确定”并确保选中该选项
  6. 从此处下载Charles证书:Charles cert >
  7. 通过电子邮件将该文件发送给自己。
  8. 打开设备上的电子邮件,然后选择证书
  9. 在“为证书命名”中输入您想要的任何内容
  10. 单击“确定”,您将收到证书已安装的消息
  11. 然后您应该能够在Charles中看到SSL文件。如果你想截取和更改值,你可以使用“Map Local”工具,这真的很棒:

    1. 在Charles中访问工具>地图本地
    2. 选择“添加条目”
    3. 输入要替换的文件的值
    4. 在“本地路径”中,选择要加载应用的文件
    5. 点击确定
    6. 确保选中该条目,然后单击“确定”
    7. 运行您的应用
    8. 您应该在“备注”中看到您的文件加载而不是实时加载

答案 2 :(得分:27)

感谢@ bkurzius的回答,此更新适用于Charles 3.10+。 (原因是here

  1. Open Charles
  2. 转到代理商> SSL代理设置...
  3. 选中“启用SSL代理”
  4. 选择“添加位置”并输入主机名和端口(如果需要)
  5. 单击“确定”并确保选中该选项
  6. 转到帮助> SSL代理> Install Charles Root Certificate on a Mobile Device or Remote Browser...,然后按照说明操作。 (使用Android浏览器下​​载并安装证书。)
  7. 在“为证书命名”中输入您想要的任何内容
  8. 单击“确定”,您将收到证书已安装的消息

答案 3 :(得分:7)

答案 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旁边)