跳过导航 →
html

代理设置

控制作为Charles核心功能的代理服务器运行。

端口

代理服务器运行在两个端口上,一个用于HTTP代理,另一个用于SOCKS代理。默认端口通常无需修改。若系统已有程序占用端口时则需调整。

动态代理端口功能允许Charles启动时自动选择可用端口,这在多用户环境中运行Charles时特别实用。

SSL解密

可启用或禁用SSL解密功能(默认开启)。禁用后Charles将不干预SSL连接,所有数据将以加密形式显示。

浏览器自动配置

Charles内置支持自动配置代理的浏览器及操作系统列表。此为核心功能——否则每次使用Charles时都需手动修改浏览器代理设置。

可设置Charles启动时自动配置哪些浏览器/系统的代理。运行期间也可通过Proxy菜单选项实时切换配置。

绕过域名

此处列出不使用代理(即Charles)访问的域名列表,该列表会同步至浏览器/系统代理设置。通常留空即可,若存在无法通过Charles访问的域名可在此添加。

域名列表以空格分隔。输入类似xk72.com的域名时,多数浏览器会将其解释为同时绕过*.xk72.com。

SOCKS透明代理

该功能自Charles 3.1版本引入。详见下文《HTTP与SOCKS代理对比》中的使用场景说明。

通过Proxy菜单打开代理设置,点击快速配置面板的"SOCKS代理模式"按钮即可启用。该操作会同时将浏览器代理配置切换为SOCKS模式。

观察行为差异的最佳方式:访问http://maps.google.com/并放大地图,在Charles树状图中选择HTML页面(通常为<default>),切换至图表视图。对比HTTP与SOCKS模式下"mt?n=..."图片请求的并行数量差异(HTTP约2个并发,SOCKS约8个)。

HTTP与SOCKS代理对比

Charles 3.1之前版本主要作为HTTP代理(附带SOCKS功能)。但HTTP代理会导致浏览器行为异于常规状态:

(注:SOCKS代理因新近推出尚未设为默认)

为防止服务器过载,浏览器会限制到每个网站的连接数。HTTP/1.1标准建议每服务器2个连接,HTTP/1.0则因浏览器而异。

这种限制会导致网页加载效率低下(同一时间仅能下载2个文件)。为此开发者常将资源分散到不同服务器——例如http://maps.google.com/从mt0到mt3四个子域名加载地图切片。虽然实际可能指向同一IP,但浏览器会视为不同网站(各允许2个连接),从而实现8个并发下载。

使用HTTP代理(如Charles的HTTP模式)时,浏览器会施加额外限制(包括到代理服务器本身的总连接数),导致网站行为和性能发生微妙变化。这与Charles"尽可能不影响浏览器正常性能"的设计初衷相悖。

而使用SOCKS代理时,连接数限制计算会忽略代理环节,浏览器行为与常规状态完全一致。

因此Charles现已提供与HTTP代理同样便捷的SOCKS代理支持。