如何使用javascript检测代理
在网页中,是否有方法通过javascript检测web浏览器是否使用PAC文件? 注意:同一页可以在许多PAC后面查看,我不想使用服务器端语言,如果需要,我可以编辑toto PAC文件。关于否如何使用javascript检测代理,javascript,proxy,Javascript,Proxy,在网页中,是否有方法通过javascript检测web浏览器是否使用PAC文件? 注意:同一页可以在许多PAC后面查看,我不想使用服务器端语言,如果需要,我可以编辑toto PAC文件。关于否 浏览器不会向网站公开此类配置数据。请注意,此解决方案不会在每个代理上都起作用,并且可能仅在您支持代理时起作用: 一些代理在HTTP请求的响应头中附加一个字段,该字段称为:X-Forwarded-For 例如,您可以通过向google.com发送AJAX请求,并检查字段是否存在,从而实现您的目标 大概是这样
浏览器不会向网站公开此类配置数据。请注意,此解决方案不会在每个代理上都起作用,并且可能仅在您支持代理时起作用: 一些代理在HTTP请求的响应头中附加一个字段,该字段称为:
X-Forwarded-For
例如,您可以通过向google.com
发送AJAX请求,并检查字段是否存在,从而实现您的目标
大概是这样的:
$.ajax({
type: 'POST',
url:'http://www.google.com',
data: formData,
success: function(data, textStatus, request){
if(request.getResponseHeader('X-Forwarded-For')) !== undefined)
alert("Proxy detected !");
}
});
编辑:正如Michael所说,X-Forwarded-For只附加在请求之后。您最好检查代理放入响应头中的响应头。您可以向已知的外部服务器(google.com)发出ajax请求,然后从该请求中获取头,以查看代理头是否在请求中
var proxyHeader = 'via';
var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send();
var header = req.getResponseHeader(proxyHeader);
if (header) {
// we are on a proxy
}
将代理添加到响应中的内容更改为proxyHeader
编辑:您必须添加一个条件来支持XMLHttpRequest的IE实现
编辑:
我在工作中使用代理,我刚刚在JSFIDLE中测试了这段代码,它可以正常工作。可以做得更漂亮,这样它支持IE,并执行异步get,但一般的功能是存在的
事实证明,检测“via”要好得多…我不是100%,但我认为“X-Forwarded-For”只是附加在请求之后。。但是很荣幸能得到和我一样的答案,哈哈,恐怕我没有提到我总是支持代理,所以用你的解决方案,我只会检测代理是否被使用,而不会替换if(request.getResponseHeader('someResponseField')!==如果(request.getResponseHeader('someResponseField')=“您的代理的响应字段值”)非常确定,除非您的代码托管在那里,否则您将无法访问AJAX www.google.com。您必须在您所在的域上使用AJAX技术。事实上,这看起来很熟悉;)好的,谢谢你,但是看起来via参数在不同浏览器中采用不同的值,而代理身份验证丢失了…@dinine抱歉,mate我没有(这可能是一个网络板的参数),但是你会在我上面的编辑中看到,我在工作中尝试过这个,并且使用“via”作为标题确实有效。