6.4 客户端的代理设置

所有现代的 Web 浏览器都允许用户对代理的使用进行配置。实际上,很多浏览器都提供了多种配置代理的方式,其中包括以下几种。

  • 手工配置

显式地设置要使用的代理。

  • 预先配置浏览器

浏览器厂商或发行商会在将浏览器发送给其客户之前预先对浏览器(或所有其他 Web 客户端)的代理设置进行手工配置。

  • 代理的自动配置(Proxy Auto-Configuration,PAC)

提供一个 URI,指向一个用 JavaScript 语言编写的代理自动配置文件;客户端会取回这个 JavaScript 文件,并运行它以决定是否应该使用一个代理,如果是的话,应该使用哪个代理服务器。

  • WPAD 的代理发现

有些浏览器支持 Web 代理自动发现协议(Web Proxy Autodiscovery Protocol,WPAD),这个协议会自动检测出浏览器可以从哪个“配置服务器”下载到一个自动配置文件。1

1 当前只有 Internet Explorer 支持这一特性。

6.4.1 客户端的代理配置:手工配置

很多 Web 客户端都允许用户手工配置代理。网景的 Navigator 和微软的 Internet Explorer 都为代理配置提供了便捷的支持。

在网景的 Navigator 6 中,可以通过菜单选项 Edit(编辑)→ Preferences(首选项)→ Advanced(高级)→ Proxies(代理),然后选中单选按钮“Manual proxy”(手工配置代理)来指定代理。

在微软的 Internet Explorer 5 中,可以在 Tools(工具)→ Internet Options(Internet 选项)菜单中,选择一个连接,点击“Settings”(设置),选中“Use a proxy server”(使用代理服务器)框,并点击“Advanced”(高级),来手工指定代理。

其他浏览器都有不同的方式来进行手工配置的修改,但其思想是一样的:为代理指定主机和端口。有些 ISP 会向客户发送预先配置好的浏览器,或定制好的操作系统,使其将 Web 流量重定向到代理服务器上。

6.4.2 客户端代理配置:PAC文件

手工代理配置很简单但有些死板。只能为所有内容指定唯一的一个代理服务器,而且不支持故障转移。手工代理配置还会给大型组织带来管理问题。如果配置过的浏览器基数很大,那么需要进行修改的时候,重新配置每个浏览器是非常困难,甚至是不可能的。

PAC 文件是一些小型的 JavaScript 程序,可以在运行过程中计算代理设置,因此,是一种更动态的代理配置解决方案。访问每个文档时,JavaScript 函数都会选择恰当的代理服务器。

要使用 PAC 文件,就要用 JavaScript PAC 文件的 URI 来配置浏览器[配置方式与手工配置类似,但要在“automatic configuration”(自动配置)框中提供一个 URI]。浏览器会从这个 URI 上获取 PAC 文件,并用 JavaScript 逻辑为每次访问计算恰当的代理服务器。PAC 文件的后缀通常是 .pac,MIME 类型通常是 application/x-ns- proxy-autoconfig。

每个 PAC 文件都必须定义一个名为 FindProxyForURL(url,host) 的函数,用来计算访问 URI 时使用的适当的代理服务器。函数的返回值可以是表 6-1 列出的任意值。

表6-1 代理自动配置脚本的返回值

FindProxyForURL的返回值 描  述
DIRECT 不经过任何代理,直接进行连接
PROXY host:port 应该使用指定的代理
SOCKS host:port 应该使用指定的 SOCKS 服务器

例 6-1 中的 PAC 文件为 HTTP 事务处理指定了一个代理,为 FTP 事务处理指定了另一个代理,并为所有其他类型的事务处理使用直连方式。

例 6-1 代理自动配置文件示例

  1. function FindProxyForURL(url, host) {
  2. if (url.substring(0,5) == "http:") {
  3. return "PROXY http-proxy.mydomain.com:8080";
  4. } else if (url.substring(0,4) =="ftp:") {
  5. return "PROXY ftp-proxy.mydomain.com:8080";
  6. } else {
  7. return "DIRECT";
  8. }
  9. }

更多有关 PAC 文件的细节,请参见第 20 章。

6.4.3 客户端代理配置:WPAD

另一种浏览器配置机制是 WPAD 协议。WPAD 协议的算法会使用发现机制的逐级上升策略自动地为浏览器查找合适的 PAC 文件。实现 WPAD 协议的客户端需要:

  • 用 WPAD 找到 PAC 的 URI;

  • 从指定的 URI 获取 PAC 文件;

  • 执行 PAC 文件来判定代理服务器;

  • 为请求使用代理服务器。

WPAD 会使用一系列的资源发现技术来判定适当的 PAC 文件。并不是所有组织都能够使用所有的发现技术,所以 WPAD 使用了很多种发现技术。WPAD 会一个接一个地对每种技术进行尝试,直到成功为止。

当前的 WPAD 协议规范按顺序定义了下列技术:

  • 动态主机配置协议(Dynamic Host Configuration Protocol,DHCP);

  • 服务定位协议(Service Location Protocol,SLP);

  • DNS 知名主机名;

  • DNS SRV 记录;

  • TXT 记录中的 DNS 服务 URI。

更多信息,请参阅第 20 章。