简介
代理自动配置(PAC)是一种浏览器技术,它用来告诉浏览器如何选择适当的代理服务器。
简单使用
在IE浏览器中可以在“Internet 选项” -> “连接”选项卡 -> “局域网设置”中看到:
PAC一般使用一个proxy.pac文件作为配置,若使用http服务器提供pac文件,建议使用的MIME是application/x-ns-proxy-autoconfig
。
pac文件中其实是javascript代码,其中包含一个重要的函数:
|
|
浏览器会将请求的URL与主机名传入到这个函数进行查询,函数FindProxyForURL返回一个包含代理服务器信息的字符串,浏览器根据这个字符串使用对应的代理服务器链接网络。
一个简单的pac文件如下:
|
|
在这个文件中,所有的网络访问都会使用proxy.example.com:8080
代理,若这个代理不可用,则会直接连接(DIRECT)。
函数列表
在pac文件中可以使用的其他javascript函数如下:
dnsDomainIs
若host匹配google.com例如map.google.com等,则直接连接:
|
|
shExpMatch
若url以.local结尾或在domain.com/folder/目录下则直接连接:
|
|
dnsResolve
DNS反查IP:
isInNet
若IP在127.16.0.0/12子网内则直接访问:
|
|
myIpAddress
返回我当前的IP
|
|
isPlainHostName
若host中不包含“.”则直接访问:
|
|
localHostOrDomainIs
|
|
isResolvable
若DNS可以被反查则使用代理:
|
|
dnsDomainLevels
host中“.”的个数大于0则使用代理:
|
|
weekdayRange
周一到周五使用代理:
|
|
dateRange
一月到三月使用代理:
|
|
timeRange
8:00到18:00使用代理:
|
|
alert
函数并没有在PAC规范中指定,但IE与FireFox是支持的,用于调试:
|
|
高级应用
一个复杂的pac文件示例:
|
|
注意事项
有些浏览器,例如Firefox和Internet Explorer只支持系统缺省编码的PAC文件,不支持Unicode编码的PAC文件,例如UTF-8编码的PAC文件。
函数dnsResolv(及其他类似函数)在执行DNS查询时,如果DNS服务器没有回应,这个会导致你的浏览器被阻塞很长时间。