Javascript 浏览器如何确定代理是否为';不可用';使用PAC文件时
我有以下PAC文件代码:Javascript 浏览器如何确定代理是否为';不可用';使用PAC文件时,javascript,browser,proxy,pac,Javascript,Browser,Proxy,Pac,我有以下PAC文件代码: function FindProxyForURL(url, host) { return "PROXY proxy1:8080" + "PROXY proxy2:8080; "; }; 根据Java,这应该按如下方式工作(): 在以下示例中,返回值指示浏览器使用 端口8080上名为w3proxy.example.com的代理。如果代理是 不可用,浏览器在上使用名为proxy1.example.com的代理 端口8080: PROXY w3proxy.examp
function FindProxyForURL(url, host)
{
return "PROXY proxy1:8080" + "PROXY proxy2:8080; ";
};
根据Java,这应该按如下方式工作():
在以下示例中,返回值指示浏览器使用
端口8080上名为w3proxy.example.com的代理。如果代理是
不可用,浏览器在上使用名为proxy1.example.com的代理
端口8080:
PROXY w3proxy.example.com:8080;proxy1.example.com:8080
在实验室进行测试时,资源管理器似乎正在以负载平衡模式使用这些代理。我还没有在wireshark中看到任何对这些代理的探测,但在重新加载网站后,故障转移就会发生
浏览器如何确定代理是否处于活动状态?
根据一些网站的说法,浏览器在负载平衡中也使用这些代理,对吗
提前感谢。健康的用户代理只需拿起PAC文件返回的第一个代理,并尝试将流量转发到为其域名返回的IP地址 现在,该IP可能不会响应来自该端口上客户端系统的SYN数据包,或者如果它没有运行web代理服务,它可能会服务于自己的页面。在第一种情况下,浏览器将在TCP超时几秒钟后切换到辅助代理(但可能会根据客户端上TCP/IP堆栈的配置而有所不同)。在第二种情况下,用户代理/浏览器很高兴,因为它得到了对请求的响应,即使请求不是它想要访问的web资源
- 对于第一个示例,您可以尝试使用4.2.2.2:80作为第一个代理并观察。它是一个NTP服务器,不在80上侦听,因此您很快就会超时
- 对于第二个示例,您可以尝试使用purple.com:80作为第一个代理。它是一个常规的web服务器。无论您发送什么请求,它都将为自己的页面提供服务,但PAC文件呈现程序不会尝试辅助代理,因为它会收到响应
- 代理服务器将响应客户端并尝试与预期的web服务器建立连接,但服务器不会响应。代理服务器尝试访问相关web资源的次数以及它保持与客户端连接打开的时间取决于代理服务的实现
- 在特定的持续时间之后,连接将超时,客户端的用户代理将尝试PAC文件中可用的下一个代理语句
嗯 请检查这两个SYN数据包是否同时发送到两个不同的代理服务器,然后发送两个HTTP GET。这是Chrome。但是你的pac文件是什么样子的?pac返回两个IP地址。我(我们)的理论是,Chrome根据URLIE 10缓存代理IP地址来缓存代理IP。浏览器试图避免在TCP SYN之前执行非平凡的JS,对此我并不感到惊讶。