在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/