浏览器和系统配置
为了使任何浏览器(或任何应用程序)使用Charles,必须将其配置为使用Charles作为其代理服务器。 大多数浏览器都有一种手动配置此方法的方法,但是手动配置很麻烦,因为每次启动和停止Charles时都必须配置和重新配置。幸运的是,在许多情况下,Charles可以自动配置代理设置,包括:
- Windows / Internet Explorer代理设置–大多数Windows应用程序自动使用
- macOS代理设置–大多数macOS应用程序自动使用
- Mozilla Firefox代理设置(所有平台)
Windows代理设置
Charles可以自动配置Windows代理设置,以便Internet Explorer和其他Windows应用程序自动开始使用Charles。 默认情况下,无论何时启动或退出Charles,Charles都会配置然后重新配置Windows代理设置。可以在“代理”菜单的“代理设置”对话框的Charles中更改Charles代理配置行为。
如果要自己查看Windows代理设置,请在“连接”选项卡上的“ Internet选项”控制面板中进行配置。
Microsoft Edge还有一个附加设置,您可能需要浏览到关于信号旗并启用Allow本地主机回路。 为了连接到在本地主机上运行的Charles Proxy,这是必需的。
macOS代理设置
Charles可以自动配置macOS系统代理设置,以便Safari和其他macOS应用程序自动开始使用Charles。首次安装Charles时,系统将提示您授予Charles权限以自动配置代理设置。 之后,Charles将在每次启动或退出时配置然后重新配置macOS代理设置。
可以在“代理”菜单的“代理设置”对话框的Charles中更改Charles代理配置行为。
如果要自己查看macOS代理设置,请在“系统偏好设置”的“网络”面板的高级区域中进行配置。
为了将HTTP 2与Safari中的Charles一起使用,您必须在SOCKS模式下使用Charles。 请参阅代理设置以配置SOCKS。
iOS设备设置
要将Charles用作iPhone上的HTTP代理,必须在iPhone的“设置”中手动配置WiFi网络上的HTTP代理设置。转到“设置”应用,点击“ Wi-Fi”,找到您连接的网络,然后点击它以配置网络。 向下滚动到HTTP代理设置,点击手动。 在“服务器”字段中输入运行Charles的计算机的IP地址,然后在“端口”字段中输入运行Charles的端口(通常为8888)。 将身份验证设置为关闭。
iPhone上的所有网络流量现在都将通过Charles发送。 首次从iPhone建立连接时,您应该在Charles中看到提示,要求您允许流量。 允许此连接。 iPhone的IP地址将添加到Charles中的“访问控制”列表中,您可以在“代理”菜单>“访问控制设置”中查看和更改。
记住,当您停止使用Charles时,请在“设置”中禁用HTTP代理,否则您的应用程序中的网络故障会引起混乱!
自动配置
您也可以提供自动配置URL,而不是输入手动配置。 这种方法将使您的设备能够首先尝试使用Charles,但是如果Charles不在运行,则可以回退到使用直接连接。 这是一种实验方法!对于自动配置URL输入:
https://chls.pro/X.X.X.X.pac
用运行Charles的计算机的IP地址替换X.X.X.X的位置。 默认为端口8888。如果您使用其他端口,则只需添加该端口即可,例如 https://chls.pro/X.X.X.X:XXXX.pac
您也可以使用自动配置规则在iOS的SOCKS代理模式下使用Charles,尽管该设置不能作为手动设置使用。 输入自动配置URL,如下所示:
https://chls.pro/X.X.X.X:XXXX.socks.pac
HTTP 2
iOS 10上的Safari当前不通过HTTP代理支持HTTP 2。 为了将HTTP 2与Safari和iOS上的Safari一起使用,您需要在SOCKS模式下使用Charles并使用上述自动配置URL来指定SOCKS模式。iOS模拟器
iOS模拟器应使用系统代理设置。 如果不是,请尝试退出并重新启动iOS模拟器。 从Xcode 6开始,在运行iOS模拟器之前,要运行Charles并将其设置为macOS系统代理似乎很重要。Mozilla Firefox代理设置
配置Firefox以使用系统代理设置。 在Firefox中,转到“偏好设置”>“高级”>“网络”>“连接”,现在可以将Firefox配置为使用系统代理设置,通常这是更可取的选择,因为Charles可以控制Windows和macOS上的系统代理设置,而无需安装附加组件。 在“偏好设置”>“高级”>“网络”>“连接”中检查Firefox代理设置,然后按“设置”按钮。 然后选择“使用系统代理设置”。手动代理配置
在Charles中,转到“代理”菜单,然后选择“代理设置”。 这将向您显示当前配置的HTTP代理端口和SOCKS代理端口。 记下要使用哪一个(可能是HTTP代理)。主机名是127.0.0.1(您自己的计算机),或者您要从另一台计算机访问Charles的计算机的外部地址。
然后,您可以使用该主机名和端口配置浏览器或应用程序的代理设置。
Java应用程序代理配置
您可以将Java应用程序配置为在代码中或在java可执行文件的命令行参数中使用Charles。System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");
对于HTTPS也是如此。 请注意,在这种情况下,您可能还需要配置Java以信任Charles的根证书(请参阅SSL代理)。
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8888");
对于此信息的来源,包括更多讨论以及如何将其设置为命令行参数:http://java.sun.com/j2se/1.5.0/docs/guide/net/proxies.html
请参阅有关Charles用户将Charles与Java应用程序集成的教程。 或参阅本教程,将Charles与Play框架集成在一起。
cURL和libcurl
对于命令行中的cURL:curl-代理本地主机:8888
如果使用libcurl开发应用程序,则可以将其配置为使用Charles作为其代理服务器:
curl_easy_setopt(pCurl, CURLOPT_PROXY, "127.0.0.1");
curl_easy_setopt(pCurl, CURLOPT_PROXYPORT, 8888);
如果您使用的是SSL,则可能希望在开发过程中禁用证书验证,如果您无法让cURL信任Charles的CA证书,请执行以下操作:
curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, 0);
感谢Michael Klische提供此信息。
Android模拟器
在Android模拟器运行配置中,添加其他模拟器命令行选项:-http-proxy http://LOCAL_IP:8888
其中LOCAL_IP是计算机的IP地址,而不是127.0.0.1,因为那是模拟电话的IP地址。
安卓
某些Android设备具有HTTP代理设置。 在Nexus S上它是隐藏的; 您可以通过打开语音拨号器应用并说“代理”来访问HTTP代理设置。 在某些三星设备上,您可以通过在WiFi配置中长按网络名称来访问代理设置。您还可以在测试过程中对应用程序进行硬编码以使用代理服务器:
HttpHost httpproxy = new HttpHost("192.168.0.101", 8888, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,httpproxy);
or
HttpUrlConnection conn = url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.0.101", 8888)));
确保第一个IP地址是运行Charles的计算机的IP地址,然后添加此代码来自定义您的httpClient或打开URL连接。