如何发现在pac中使用的de代理
在FireFox的互联网连接是通过代理自动配置文件“something.pac”
我如何知道某个URL使用哪个代理服务器?
谢谢。
.pac文件只是一个emca脚本 - 又名JavaScript。 查看关于文件格式的维基百科文章。
如果您复制PAC代码,则可以根据目标url来处理它以查看正在使用的代理。 如果你觉得奇特,你可以将脚本包装到一个网页(本地)来创建一个工具来进行本地评估。
编辑:
作为我开始推荐的方法的替代方法,您可以查看Google代码上提供的PACTester。 这将允许您快速测试一系列选项。
如果你有.Net可用并且有兴趣使用C#,那么你可以在MSDN上看看这篇文章,它有代码,你可以使用类似上面的方式。
为了扩展上述原始方法,主机浏览器可能(并且通常)提供了许多功能。 必须在pac
文件中实现的基本功能是FindProxyForUrl()
。 这接受两个参数:url和主机(从url的名称派生的主机)。 “提供的”功能包括: isInNet()
, localHostOrDomainIs()
, isPlainHostName()
, isResolvable()
等
如果您在Microsoft环境中工作,那么您可以在Technet上查看此页面,其中介绍了.pac格式以及一些有用的示例。
根据isInNet()
的Microsoft文档:
如果主机IP地址与指定pattern
匹配,则isInNet(host, pattern, mask)
函数返回TRUE
。 mask
指示匹配IP地址的哪一部分(255 =匹配,0 =忽略)。
如果你想获得技术,这里是用于实现代理自动配置相关服务的Mozilla源代码。 它将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 }
希望有所帮助!
我创建了简单的HTML页面解析代理:
<html>
<head>
<script type="text/javascript">
function myIpAddress() {
return "192.168.1.2"; // Your IP
}
function isInNet(ipaddr, pattern, maskstr) {
var test = /^(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})$/(ipaddr);
if (test == null) {
ipaddr = dnsResolve(ipaddr);
if (ipaddr == null) return false;
} else if (test[1] > 255 || test[2] > 255 || test[3] > 255 || test[4] > 255) {
return false; // not an IP address
}
var host = convert_addr(ipaddr);
var pat = convert_addr(pattern);
var mask = convert_addr(maskstr);
return ((host & mask) == (pat & mask));
}
function dnsResolve(host) {
try {
return dns.resolve(host, 0).getNextAddrAsString();
} catch (e) {
return null;
}
}
function convert_addr(ipchars) {
var bytes = ipchars.split('.');
var result = ((bytes[0] & 0xff) << 24) |
((bytes[1] & 0xff) << 16) |
((bytes[2] & 0xff) << 8) |
(bytes[3] & 0xff);
return result;
}
function isPlainHostName(host) {
return host.search('\.') == -1;
}
function shExpMatch(url, pattern) {
pattern = pattern.replace(/./g, '\.');
pattern = pattern.replace(/*/g, '.*');
pattern = pattern.replace(/?/g, '.');
var newRe = new RegExp('^' + pattern + '$');
return newRe.test(url);
}
function dnsDomainIs(host, domain) {
return host.length >= domain.length && host.substring(host.length - domain.length) == domain;
}
</script>
<!-- Your proxy script -->
<script type="text/javascript" src="webproxy.js"></script>
</head>
<body>
Host: <input id="host"/><br/>
URL: <input id="url"/><br/>
Proxy: <input id="proxy" disabled="disabled"/><br/>
<input type="button" value="Resolve"
onclick="document.getElementById('proxy').value = FindProxyForURL(document.getElementById('host').value, document.getElementById('url').value)"/><br/>
</body>
</html>
代码为myIpAddress等我从mozilla来源。
链接地址: http://www.djcxy.com/p/62485.html上一篇: How to discover de proxy used in a pac
下一篇: WaitForSingleObject with timeout returns long after the timeout