我想使用Charles Web代理在Windows中使用Android模拟器。我已经成功设置了查尔斯,并使用命令行启动了模拟器:
emulator -http-proxy 127.0.0.1:8888 @NexusOne
我可以看到来自Charles的Android模拟器的流量,但问题是我正在开发使用SSL的实时API,我不知道如何配置Charles让我玩数据哪个发送和接收。我知道在Charles中设置SSL的两个区域(代理 - >代理设置 - > SSL和代理 - >客户端SSL证书)但我找不到任何体面的文档让我做我做的事情想做。有没有人经历过Charles或者一般的证书,他们可以解释如何实现这一目标。也许证书的入门也很好,因为我似乎不知道为什么这么难。
答案 0 :(得分:67)
要使用查尔斯远程捕获http或https流量,您需要执行以下操作:
HOST - 机器运行Charles并托管代理 客户 - 用户的机器生成您将捕获的流量
主机
客户端计算机:
当我对此进行测试时,我选择了两行Facebook HTTPS聊天(其中一行是某人,另一行是FROM)
如果您使用以下命令启动模拟器,也可以通过这种方式捕获Android模拟器流量。
emulator -avd <avd name> -http-proxy http://local_ip:8888/
其中LOCAL_IP是您计算机的IP地址,而不是127.0.0.1,因为这是模拟手机的IP地址。
来源:http://brakertech.com/capture-https-traffic-remotely-with-charles/
答案 1 :(得分:48)
在Charles中,转到代理&gt;&gt;代理设置,然后选择SSL标签。将您的主机添加到位置列表中。
例如,如果您的安全通话转到https://secure.example.com,则可以输入secure.example.com或* .example.com。
完成上述操作后,您可能需要在查尔斯主窗口中右键单击该呼叫,然后选择SSL代理选项。
希望这有帮助。
答案 2 :(得分:25)
这里值得一提的是在Android设备上执行此操作的分步说明。对于iOS应该是相同的:
然后您应该能够在Charles中看到SSL文件。如果你想截取和更改值,你可以使用“Map Local”工具,这真的很棒:
答案 3 :(得分:23)
Charles提供HTTPS代理的方式发生了一些变化。
首先,证书安装选项已移至帮助菜单。
Help -> SSL Proxying -> Install Charles Root Certificate
Help -> SSL Proxying -> Install Charles Root Certificate in iOS Simulators
其次,从iOS 9开始,您必须在NSAppTransportSecurity
中提供Info.plist
选项,如果您希望Charles作为中间人正常工作,您必须添加:
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
作为您网域的一部分,请参阅完整示例:
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
原因(我猜)是Charles在中间https服务器中扮演男人后,在某些时候用清晰的http进行通信。
最后一步是在Charles中激活此域的SSL代理(右键单击域并选择启用SSL代理)
答案 4 :(得分:7)
什么对我有用 - 应该真的转移到iPhone:
查尔斯
的Mac
iPhone
Voila,您现在可以查看SSL代理中添加的域中的加密流量
答案 5 :(得分:6)
您还应该从Charles帮助菜单中单击“安装Charles CA SSL证书..”。请参阅http://blog.noodlewerk.com/general/tutorial-using-charles-proxy-to-debug-https-communication-between-server-and-ios-apps/
上的详细说明答案 6 :(得分:0)
这些事对我有帮助
答案 7 :(得分:0)
无论在何处提及,证书安装步骤都是正确的https://stackoverflow.com/a/35200795/865220
但是,如果您像我这样需要分别为每个新的URL启用SSL代理,那么要为所有主机名启用,只需在SSL代理设置中的主机名和端口名列表中输入* :