WPAD (Web Proxy Auto-Discovery protocol)可以借助 DNS 服务器或 DHCP 服务器来查询代理自动配置(PAC)文件的位置。

而浏览器本身就具有读入并解析代理服务器的配置文件,并将其应用的功能,配置文件是使用 Java Script 描述的,通常具有“.js”,“.jvs”,“.pac”(proxy auto-configuration)等扩展名的文件。

Proxy Auto-Config 文件

代理自动配置(PAC)文件定义了浏览器和其他用户代理如何自动选择适当的代理服务器来访问一个 URL。

要使用 PAC,我们应当在一个网页服务器上发布一个 PAC 文件,并且通过在浏览器的代理链接设置页面输入这个 PAC 文件的 URL 或者通过使用 WPAD 协议告知用户代理去使用这个文件

host是URL衍生的主机名

function FindProxyForURL(url, host) {
   if (url== '<http://www.baidu.com/>') return 'DIRECT';
   if (host== 'twitter.com') return 'SOCKS 127.0.0.10:7070';
   if (dnsResolve(host) == '10.0.0.100') return 'PROXY 127.0.0.1:8086;DIRECT';
   return 'DIRECT';
}

WPAD原理

当系统开启了代理自动发现功能后,用户使用浏览器上网时,浏览器就会在当前局域网中自动查找代理服务器,如果找到了代理服务器,则会从代理服务器中下载一个名为 PAC(Proxy Auto-Config) 的配置文件。该文件中定义了用户在访问一个 URL 时所应该使用的代理服务器。浏览器会下载并解析该文件,并将相应的代理服务器设置到用户的浏览器中。

DHCP(动态主机配置协议)

前两个过程主要是客户端发送广播包,之后DHCP服务器与客户端进行单播通讯。后两个流程主要是客户端从DHCP服务器获取IP地址。

当使用 DHCP 服务器配置 WPAD 时, DHCP 协议将会有所改变。客户端发送请求包中将会增加DHCPINFORM消息,这个消息用于客户端请求本地配置参数。DHCP服务器回应DHCPACK确认消息时,就会在DHCP Options字段里包含WPAD代理服务器的PAC文件地址。

DNS

客户端向DNS服务器发起WPAD+X的请求。

DNS返回WPAD主机的IP。

客户机通过IP的80端口下载WPAD.dat(浏览器配置用文件)和WSPAD.dat(防火墙配置用文件)然后实现自动配置。

如果客户机是在一个域环境下时,发起的查询便是一个“WPAD.所在域的域名”的标准域名查询,这种情况下配合 DNS 里添加 WPAD 主机的 A 或别名记录便可轻松在域环境中对 WPAD 主机的定位。

但是如果在工作组环境下时,客户机发起的查询可能是一个标准的域名查询(如果计算机名有加域名后缀)也可能只是个没有后缀的 WPAD 查询,这时就要通过创建 DNS 私有根域查询或是通过创建单标签域的方式进行 WPAD 主机查询

利用 DNS 进行 WPAD 的配置,网络管理员只需要在 DNS 服务器中添加 WPAD 主机的解析记录即可。