首页 文章

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

提问于
浏览
57

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

8 回答

  • 27

    适用于Android7的

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

    适用于Android7以下的Android版本

    From your computer, run Charles

    • 打开代理设置:代理 - >代理设置,代理选项卡,检查"Enable transparent HTTP proxying",并记住"Port" .
      enter image description here

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

    enter image description here

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

    In Android Phone

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

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

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

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

    完成 .

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

  • 65

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

    这里值得一提的是逐步说明 . 它们也应该在iOS中同样适用:

    • 打开查尔斯

    • 转到代理>代理设置> SSL

    • 选中“启用SSL代理”

    • 选择“添加位置”并输入主机名和端口(如果需要)

    • 单击确定并确保选中该选项

    • 从这里下载Charles证书:Charles cert >

    • 通过电子邮件将该文件发送给自己 .

    • 打开设备上的电子邮件,然后选择证书

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

    • 单击“确定”,您将收到证书已安装的消息

    然后,您应该能够在Charles中看到SSL文件 . 如果要拦截和更改值,可以使用“Map Local”工具,这非常棒:

    • 在Charles中,转到工具> Map 本地

    • 选择"Add entry"

    • 输入要替换的文件的值

    • 在“本地路径”中,选择要加载应用程序的文件

    • 单击“确定”

    • 确保选中该条目,然后单击“确定”

    • 运行您的应用

    • 您应该在“Notes”中看到您的文件加载而不是活动文件

  • 3

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

    • 打开查尔斯

    • 转到代理> SSL代理设置...

    • 选中“启用SSL代理”

    • 选择“添加位置”并输入主机名和端口(如果需要)

    • 单击确定并确保选中该选项

    • 转到帮助> SSL代理> Install Charles Root Certificate on a Mobile Device or Remote Browser... ,然后按照说明操作 . (使用Android的浏览器下载并安装证书 . )

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

    • 单击“确定”,您将收到证书已安装的消息

  • 0
  • 7

    最受欢迎的答案是完美的(有点旧但仍在工作),但我只是想提一下,因为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设备上 .

  • 43

    我想到了这个问题 . 这是因为Charles 3.7有一些Android设备的漏洞 . 一世更新到Charles 3.8 Beta版本,似乎对我来说很好 .

  • 1

    对于较新的模拟器,使用以下命令从命令行启动可能会有所帮助:

    emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888

    请确保按照上面的@ User9527建议进行其余设置

  • 0

    对我来说,问题是查尔斯告诉我在我的代理设置中路由到的IP地址不正确 . 为了解决这个问题,我最终在终端中找到 ifconfig ,并尝试在端口 8888 尝试不同的IP地址(列在 inet 旁边)以获取当前活动连接

相关问题