1、配置为使用代理的浏览器,即使在代理无法响应的情况下,也不会去联系原始服务器。如果代理崩溃了,或者没有正确配置浏览器,用户就会遇到连接方面的问题
2、对网络架构进行修改,并将这些修改通知给所有的终端用户都是很困难的。如果服务提供商要添加更多的代理服务器,或者使其中一些退出服务,用户都要修改浏览器代理设置
【代理自动配置】
显式配置浏览器使其联系特定的代理,这样会限制网络架构方面的变动,因为它是靠用户来介入并重新配置浏览器的。自动配置方式可以动态配置浏览器,连接到正确的代理服务器,以解决这个问题。这种方法已经实现了,被称为代理自动配 置(PAC)协议。PAC是网景公司定义的,网景公司的Navigator和微软的IE浏览器都支持此协议
PAC的基本思想是让浏览器去获取一个称为PAC的特殊文件,这个文件说明了每个URL所关联的代理。必须配置浏览器,为这个PAC文件关联一个特定的服务器。这样,浏览器每次重启的时候都可以获取这个PAC文件了
PAC文件是个JavaScript文件,其中必须定义函数:
function FindProxyForURL(url, host)
如下所示,浏览器要为请求的每条URL调用这个函数:
return_value = FindProxyForURL(url_of_request, host_in_url);
其返回值为一个字符串,用来说明浏览器应该到哪里请求这个URL。返回值可以是所关联的代理名称列表(比如,PROXY proxy1.domain.com, PROXY proxy2.domain.com),或者是字符串"DIRECT",这个字符串说明浏览器应该绕开所有的代理,直接连接原始服务器
下图给出了浏览器对PAC文件的请求以及响应此请求的操作顺序。在本例中,服务器回送了带有JavaScript程序的PAC文件。JavaScript程序中有一个FindProxyForURL函数,用来告知浏览器,如果所请求的URL的主机位于netscape.com域中,就直接与原始服务器联系,所有其他请求都连接到proxy1.joes-cache.com。浏览器会为它所请求的每个URL调用这个函数,并根据此函数返回的结果进行连接
PAC协议是相当强大的:JavaScript程序可以请求浏览器根据大量与主机名相关的参数来选择代理,比如DNS地址和子网,甚至星期几或具体时间。只要服务器中的PAC文件保持更新,能反映代理位置的变化,PAC就允许浏览器根据网络结构的变化自动与合适的代理进行联系
PAC存在的主要问题是必须要对浏览器进行配置,让它知道要从哪个服务器获取PAC文件,因此它就是一个全自动配置的系统。就像那些预配置浏览器一样,现在一些主要的ISP都在使用PAC
【Web代理自动发现协议】
WPAD(Web代理自动发现协议)的目标是在不要求终端用户手工配置代理设置,
而且不依赖透明流量拦截的情况下,为Web浏览器提供一种发现并使用附近代理的方式。由于可供选择的发现协议有很多,而且不同浏览器的代理使用配置也存在差异,因此定义Web代理自动发现协议时,普通的问題会被复杂化
1、PAC文件自动发现
WPAD允许HTTP客户端定位一个PAC文件,并使用这个PAC文件找到适当的代理服务器的名字。WPAD不能直接确定代理服务器的名字,因为这样就无法使用PAC文件提供的附加功能了(负载均衡,请求路由到一组服务器上去,故障时自动转移到备用代理服务器等)
如下图所示,WPAD协议发现了PAC文件URL,这个URL也被称为配置URL(CURL)。PAC文件执行了一个JavaScript程序,这个程序会返回合适的代理服务器地址
实现WPAD协议的HTTP客户端用WPAD找到PAC文件的CURL,根据这个CURL获取PAC文件(又名配置文件或CFILE),执行PAC文件来确定代理服务器,向PAC文件返回的那个代理服务器发送HTTP请求
2、WPAD算法
WPAD使用了一系列资源发现技术来确定适当的PAC文件CURL。并不是所有的组织都可以使用所有技术的,所以WPAD指定了多种发现技术。在成功获得CURL之前,WPAD客户端会一个个地尝试每种技术
当前的WPAD规范按序定义了下列技术:DHCP(动态主机配置协议)、SLP(服务定位协议)、DNS知名主机名、DNS SRV记录、DNS TXT记录中提供的服务URL
在这5种机制中,要求WPAD客户端必须支持DHCP和DNS知名主机名技术