SSL代理/查尔斯和Android的麻烦
我想使用Charles代理工具从Android设备testingHttps调用。 我需要查看debugging应用程序的原始请求/响应内容。 我通过在“代理设置” – > SSL选项卡下添加主机和端口来configurationCharles。 当我运行应用程序,所有的SSL调用似乎很快从查尔斯消失。 有没有人有任何想法如何解决这个问题。 查尔斯文档似乎没有Android设备的信息。
为Android7
请参考: 如何获得与Android 7牛轧糖charles代理工作?
Android7以下的Android版本
在你的电脑上运行Charles :
-
打开代理服务器设置:代理服务器 – >代理服务器设置,代理服务器选项卡,勾选“启用透明HTTP代理服务”,记住“端口”。
-
SSL代理设置:代理 – > SSL代理设置,SSL代理选项卡,选中“启用SSL代理”,然后添加。 到地点:
-
开放式访问控制设置:代理 – >访问控制设置。 添加您的本地子网以授权本地networking上的机器使用来自其他机器/移动设备的代理。
在Android手机中 :
-
configuration您的手机:进入设置 – >无线和networking – > WiFi – >连接或修改您的networking,填入计算机的IP地址和端口(8888):
-
获得Charles SSL证书。 从您的移动浏览器访问此url: http : //charlesproxy.com/getssl
-
在“命名证书”input任何你想要的
-
接受安全警告并安装证书。 如果你安装成功,那么你可能会看到这样的:在你的手机,设置 – >安全 – >可信凭证:
完成。
那么你可以在你的手机上进行一些testing,encryption的https请求将在Charles中显示:
编辑 – 这个答案是针对Charles的早期版本的。 请参阅下面的@ semicircle21答案v3.10.x的正确步骤 – 比这种方法更容易… 🙂
对于这里值得的是一步一步的说明。 他们也应该同样适用于iOS:
- 打开查尔斯
- 转到代理>代理设置> SSL
- 选中“启用SSL代理”
- select“添加位置”并input主机名称和端口(如果需要)
- 点击确定,确保选项被选中
- 从这里下载Charles证书: Charles cert>
- 通过电子邮件将该文件发送给自己。
- 在您的设备上打开电子邮件并select证书
- 在“命名证书”input任何你想要的
- 单击确定,您应该收到证书已安装的消息
然后,您应该能够查看Charles中的SSL文件。 如果你想拦截和改变值,你可以使用“地图本地”工具,这真是太棒了:
- 在查尔斯去工具>地图本地
- select“添加条目”
- input要replace的文件的值
- 在“本地path”中select你想要加载的文件
- 点击OK
- 确保input被选中,然后单击确定
- 运行你的应用程序
- 你应该在“注释”中看到你的文件加载而不是活的
感谢@ bkurzius的回答,此更新适用于Charles 3.10+。 (原因在这里 )
- 打开查尔斯
- 转到代理> SSL代理设置…
- 选中“启用SSL代理”
- select“添加位置”并input主机名称和端口(如果需要)
- 点击确定,确保选项被选中
- 转到帮助> SSL代理>
Install Charles Root Certificate on a Mobile Device or Remote Browser...
,然后按照说明进行操作。 (使用Android的浏览器下载并安装证书。) - 在“命名证书”input任何你想要的
- 单击确定,您应该收到证书已安装的消息
看这里:
您将需要安装charles.crt证书到您的设备。
我想到了这个问题。 因为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设备上。