在FireFox中,互联网连接是通过代理自动配置文件“something.pac”建立的

我如何知道某个URL正在使用哪个代理服务器?

谢谢。

最佳答案

.pac文件只是ECMAscript(又名JavaScript)。 check out the wikipedia article的文件格式。

如果复制PAC代码,则可以对其进行处理,以根据目标URL查看正在使用的代理。如果您喜欢,可以将脚本包装到Web页面(本地)中,以创建用于本地评估的工具。

编辑:

作为我开始推荐的方法的替代方法,您可以查看googlet代码上的PACTester。这将使您快速测试一系列选项。

如果您有.Net可用并且对使用C#感兴趣,则可以查看this article on MSDN,该文件的代码可以与上述类似的方式使用。

为了扩展上面概述的原始方法,主机浏览器可能会(通常)提供许多功能。必须在pac文件中实现的基本功能是FindProxyForUrl()。这接受两个参数:url和主机(从url名称派生的主机)。 “提供的”功能包括:isInNet()localHostOrDomainIs()isPlainHostName()isResolvable()等。

如果您在Microsoft环境中工作,则可以 checkout this page on Technet,其中描述了.pac格式并提供了一些有用的示例。

根据Microsoft文档isInNet():



如果您想获取技术,这里是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 }

希望能有所帮助!

关于firefox - 如何发现PAC中使用的代理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3068728/

10-10 12:35