.pac 文件只是一个 ECMAscript - 也就是 JavaScript。在文件格式上查看the wikipedia article。
如果您复制 PAC 代码,您可以对其进行处理,以根据目标 url 查看正在使用的代理。如果你觉得花哨,你可以将脚本包装到一个网页中(本地),以创建一个在本地评估的工具。
编辑:
作为我开始推荐的方法的替代方法,您可以查看PACTester,可在 Google Code 上找到。这将允许您快速测试一系列选项。
如果您有可用的 .Net 并且对使用 C# 感兴趣,那么您可以查看 this article on MSDN,其中包含您可以以与上述类似的方式使用的代码。
为了扩展上面概述的原始方法,主机浏览器可能(并且通常是)提供了许多功能。必须在pac 文件中实现的基本功能是FindProxyForUrl()。这接受两个参数:url 和主机(主机从 url 的名称派生)。 “提供”的功能包括:isInNet()、localHostOrDomainIs()、isPlainHostName()、isResolvable()等。
如果您在 Microsoft 环境中工作,那么您可以查看 this page on Technet,它通过一些有用的示例描述了 .pac 格式。
根据isInNet() 的 Microsoft 文档:
如果主机 IP 地址与指定的 pattern 匹配,isInNet(host, pattern, mask) 函数将返回 TRUE。 mask 表示要匹配 IP 地址的哪一部分(255=匹配,0=忽略)。
如果您想获得技术,这里是the Mozilla source code,用于实现代理自动配置相关服务。它将isInNet()的JS代码指定为:
200 function isInNet(ipaddr, pattern, maskstr) {
201 var test = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/(ipaddr);
202 if (test == null) {
203 ipaddr = dnsResolve(ipaddr);
204 if (ipaddr == null)
205 return false;
206 } else if (test[1] > 255 || test[2] > 255 ||
207 test[3] > 255 || test[4] > 255) {
208 return false; // not an IP address
209 }
210 var host = convert_addr(ipaddr);
211 var pat = convert_addr(pattern);
212 var mask = convert_addr(maskstr);
213 return ((host & mask) == (pat & mask));
214
215 }
希望有帮助!