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

我想使用Charles代理工具从Android设备testingHttps调用。 我需要查看debugging应用程序的原始请求/响应内容。 我通过在“代理设置” – > SSL选项卡下添加主机和端口来configurationCharles。 当我运行应用程序,所有的SSL调用似乎很快从查尔斯消失。 有没有人有任何想法如何解决这个问题。 查尔斯文档似乎没有Android设备的信息。

为Android7

请参考: 如何获得与Android 7牛轧糖charles代理工作?

Android7以下的Android版本

在你的电脑上运行Charles

  1. 打开代理服务器设置:代理服务器 – >代理服务器设置,代理服务器选项卡,勾选“启用透明HTTP代理服务”,记住“端口”。 在这里输入图像说明

  2. SSL代理设置:代理 – > SSL代理设置,SSL代理选项卡,选中“启用SSL代理”,然后添加 到地点: 在这里输入图像说明 在这里输入图像说明

  3. 开放式访问控制设置:代理 – >访问控制设置。 添加您的本地子网以授权本地networking上的机器使用来自其他机器/移动设备的代理。 在这里输入图像说明

在Android手机中

  1. configuration您的手机:进入设置 – >无线和networking – > WiFi – >连接或修改您的networking,填入计算机的IP地址和端口(8888): 在这里输入图像说明

  2. 获得Charles SSL证书。 从您的移动浏览器访问此url: http : //charlesproxy.com/getssl 在这里输入图像说明

  3. 在“命名证书”input任何你想要的

  4. 接受安全警告并安装证书。 如果你安装成功,那么你可能会看到这样的:在你的手机,设置 – >安全 – >可信凭证: 在这里输入图像说明

完成。

那么你可以在你的手机上进行一些testing,encryption的https请求将在Charles中显示: 在这里输入图像说明

编辑 – 这个答案是针对Charles的早期版本的。 请参阅下面的@ semicircle21答案v3.10.x的正确步骤 – 比这种方法更容易… 🙂

对于这里值得的是一步一步的说明。 他们也应该同样适用于iOS:

  1. 打开查尔斯
  2. 转到代理>代理设置> SSL
  3. 选中“启用SSL代理”
  4. select“添加位置”并input主机名称和端口(如果需要)
  5. 点击确定,确保选项被选中
  6. 从这里下载Charles证书: Charles cert>
  7. 通过电子邮件将该文件发送给自己。
  8. 在您的设备上打开电子邮件并select证书
  9. 在“命名证书”input任何你想要的
  10. 单击确定,您应该收到证书已安装的消息

然后,您应该能够查看Charles中的SSL文件。 如果你想拦截和改变值,你可以使用“地图本地”工具,这真是太棒了:

  1. 在查尔斯去工具>地图本地
  2. select“添加条目”
  3. input要replace的文件的值
  4. 在“本地path”中select你想要加载的文件
  5. 点击OK
  6. 确保input被选中,然后单击确定
  7. 运行你的应用程序
  8. 你应该在“注释”中看到你的文件加载而不是活的

感谢@ bkurzius的回答,此更新适用于Charles 3.10+。 (原因在这里 )

  1. 打开查尔斯
  2. 转到代理> SSL代理设置…
  3. 选中“启用SSL代理”
  4. select“添加位置”并input主机名称和端口(如果需要)
  5. 点击确定,确保选项被选中
  6. 转到帮助> SSL代理> Install Charles Root Certificate on a Mobile Device or Remote Browser... ,然后按照说明进行操作。 (使用Android的浏览器下载并安装证书。)
  7. 在“命名证书”input任何你想要的
  8. 单击确定,您应该收到证书已安装的消息

我想到了这个问题。 因为Charles 3.7在Android设备上有一些bug。 我更新到查尔斯3.8 Beta版本,似乎为我工作得很好。

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

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

请确保遵循@ User9527的build议以及其余的设置

最受好评的答案是完美的(有点老,但仍然有效),但我只想提一下,因为Android N,我们都可以configuration你的应用程序,以便有不同的信任SSL证书(用于发布,只debugging等) ,包括Charles SSL代理证书(如果您下载Charles证书并将.pem文件放在您的原始文件夹中)。 更多信息可以在这里find: https : //developer.android.com/training/articles/security-config.html

查尔斯官方文档也可以用来设置: https : //www.charlesproxy.com/documentation/using-charles/ssl-certificates/

希望这将有助于在您的应用程序项目中设置Charles而不是在每个Android设备上。