跳过导航 →

浏览器与系统配置

任何浏览器(或应用程序)要使用Charles,都必须将其配置为使用Charles作为代理服务器。大多数浏览器支持手动配置,但这种方式较为繁琐,因为每次启动或停止Charles时都需要重复配置。

幸运的是,Charles在多数情况下支持自动代理配置,包括:

  • Windows/Internet Explorer代理设置——多数Windows应用程序会自动应用此配置
  • macOS系统代理设置——多数macOS应用程序会自动应用此配置
  • Mozilla Firefox代理设置(全平台适用)

Windows代理设置

Charles可自动配置Windows代理设置,使IE及其他Windows应用程序自动启用Charles。默认情况下,Charles会在启动或退出时自动调整这些设置。

如需修改代理配置行为,可在Charles的Proxy菜单中的Proxy Settings对话框进行调整。

用户也可通过控制面板的Internet选项中的"连接"标签页查看Windows代理设置。

Microsoft Edge需额外设置:在地址栏输入about:flags并启用"Allow localhost loopback",否则无法连接运行于本地的Charles代理。

macOS代理设置

Charles可自动配置macOS系统代理,使Safari等应用程序自动启用Charles。

首次安装时会提示授予Charles代理配置权限。此后每次启动/退出Charles时都会自动调整系统代理设置。

配置行为可通过Proxy菜单中的Proxy Settings对话框修改。

用户可在系统设置的"网络"高级选项中查看macOS代理配置。

注意:若要通过Safari使用HTTP/2协议,需将Charles切换至SOCKS模式

iOS设备设置

在iPhone上需手动配置WiFi网络的HTTP代理:进入设置→Wi-Fi→点击当前网络→HTTP Proxy选择手动→输入运行Charles的电脑IP(服务器字段)及端口(通常8888),认证保持关闭。

首次连接时Charles会弹出权限请求,允许后设备IP将加入Proxy菜单的Access Control列表。

停止使用Charles时请务必关闭代理设置,否则会导致网络异常!

自动配置

可输入自动配置URL实现智能回退(实验性功能):

https://chls.pro/X.X.X.X.pac

将X.X.X.X替换为电脑IP(默认8888端口,其他端口需完整填写如X.X.X.X:XXXX)。

iOS还支持通过以下URL启用SOCKS代理(尽管系统不提供手动选项):

https://chls.pro/X.X.X.X:XXXX.socks.pac

HTTP/2支持

iOS 10的Safari不支持通过HTTP代理使用HTTP/2,需改用SOCKS模式并配置上述自动代理URL。

iOS模拟器

默认使用系统代理设置,若失效请重启模拟器。从Xcode 6开始建议先启动Charles并设置系统代理再运行模拟器。

Mozilla Firefox代理设置

推荐使用系统代理设置:进入首选项→高级→网络→连接→设置→选择"使用系统代理设置"。

手动代理配置

在Charles的Proxy Settings中查看HTTP/SOCKS代理端口,然后在目标应用中配置代理地址为127.0.0.1(本机)或电脑外网IP。

Java应用程序配置

通过代码或命令行参数配置:

System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");

HTTPS需额外配置(可能需要信任Charles根证书,参见SSL代理):

System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8888");

更多细节参考:官方文档,或用户提供的集成教程Play框架集成指南

cURL与libcurl

命令行使用:
curl --proxy localhost:8888

代码配置:

curl_easy_setopt(pCurl, CURLOPT_PROXY, "127.0.0.1");
curl_easy_setopt(pCurl, CURLOPT_PROXYPORT, 8888);

开发阶段可临时关闭SSL验证:

curl_easy_setopt(pCurl, CURLOPT_SSL_VERIFYPEER, 0);

Android模拟器

在运行配置中添加模拟器参数:
-http-proxy http://10.0.2.2:8888

其中10.0.2.2是模拟器访问宿主机的专用地址,若Charles运行在其他电脑需替换对应IP。

Android设备

部分设备支持HTTP代理设置(如Nexus S需通过语音拨号说"proxy"调出,三星设备可长按WiFi网络配置)。

测试时也可硬编码代理:

HttpHost httpproxy = new HttpHost("192.168.0.101", 8888, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,httpproxy);

HttpUrlConnection conn = url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.0.101", 8888)));

注意替换为运行Charles的电脑IP地址。