6.4 客户端的代理设置

来源:互联网 发布:网络安全技术一般包括 编辑:程序博客网 时间:2024/06/06 23:16
  • 手工配置
    显式地设置要使用的代理。
  • 预先配置浏览器
    浏览器厂商或发行商会在将浏览器发送给其客户之前预先对浏览器(或所有其他 Web 客户端)的代理设置进行手工配置。
  • 代理的自动配置(Proxy Auto-Configuration,PAC)
    提供一个 URI,指向一个用 JavaScript 语言编写的代理自动配置文件;客户端会取回这个 JavaScript 文件,并运行它以决定是否应该使用一个代理,如果是的话,应该使用哪个代理服务器。
  • WPAD 的代理发现
    有些浏览器支持 Web 代理自动发现协议(Web Proxy Autodiscovery Protocol, WPAD),这个协议会自动检测出浏览器可以从哪个“配置服务器”下载到一个自动配置文件。当前只有 Internet Explorer 支持这一特性。

1. 手工配置

  • 不同浏览器都有不同的方式来进行手工配置的修改,但其思想是一样的:为代理指定主机和端口。有些 ISP 会向客户发送预先配置好的浏览器,或定制好的操作系统,使其将 Web 流量重定向到代理服务器上。
  • 手工代理配置只能为所有内容指定唯一的一个代理服务器,而且不支持故障转移。
  • 手工代理配置还会给大型组织带来管理问题。

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 时使用的适当的代理服务器。函数的返回值如下:
FindProxyForURL的返回值 描述 DIRECT 不经过任何代理,直接进行连接 PROXY host:port 应该使用指定的代理 SOCKS host:port 应该使用指定的 SOCKS 服务器
  • 举例:下列代码中,PAC 文件为 HTTP 事务处理指定了一个代理,为 FTP 事务处理指定了另一个代理,并为所有其他类型的事务处理使用直连方式。
function FindProxyForURL(url, host) {    if (url.substring(0,5) == "http:") {        return "PROXY http-proxy.mydomain.com:8080";     } else if (url.substring(0,4) =="ftp:") {        return "PROXY ftp-proxy.mydomain.com:8080";     } else {        return "DIRECT";     }}

3. WPAD 的代理发现

  • WPAD 协议的算法会使用发现机制的逐级上升策略自动地为浏览器查找合适的 PAC 文件。实现 WPAD 协议的客户端需要:
    • 用 WPAD 找到 PAC 的 URI;
    • 从指定的 URI 获取 PAC 文件;
    • 执行 PAC 文件来判定代理服务器;
    • 为请求使用代理服务器。
  • WPAD 会使用一系列的资源发现技术来判定适当的 PAC 文件。并不是所有组织都能够使用所有的发现技术,所以 WPAD 使用了很多种发现技术。WPAD 会一个接一个地对每种技术进行尝试,直到成功为止。
  • 当前的 WPAD 协议规范按顺序定义了下列技术:
    • 动态主机配置协议(DynamicHostConfigurationProtocol,DHCP);
    • 服务定位协议(ServiceLocationProtocol,SLP);
    • DNS 知名主机名;
    • DNS SRV 记录;
    • TXT 记录中的 DNS 服务 URI。