我从 PAC 文件中得到了这种奇怪的行为。我有一个运行良好的现有 PAC 文件。由于最近的迁移,我不得不开始修改 PAC 文件,并从代理中排除一些 IP 和 URL,主要用于 MS Teams。
测试修改后,发现浏览时存在极度延迟。在处理 PAC 文件时,我对其进行了调整以减少网络请求并一次性解析域,然后检查 IP 地址。但是,它导致每个必须访问代理的网站都无法正常工作。
下面是我更新的 PAC 文件,其中删除了一些细节:
function FindProxyForURL(url, host) {
if(!isResolvable(host))
return "DIRECT";
var resolved_IP = dnsResolve(host);
if ((shExpMatch(url, "ctldl.windowsupdate.com")) ||
(shExpMatch(url, "download.windowsupdate.com")) ||
(shExpMatch(url, "windowsupdate.microsoft.com")) ||
(shExpMatch(url, "update.microsoft.com")) ||
//check for local IP addresses
(isInNet(resolved_IP, "127.0.0.1", "255.0.0.0")) ||
(shExpMatch(url, "*.internaldomain1.com")) ||
(shExpMatch(url, "*.internaldomain2.com")) ||
(shExpMatch(url, "*.internaldomain3.com")) ||
(shExpMatch(url, "internaldomain4.com")) ||
/* Skype for Business and MS Teams */
(isInNet(resolved_IP, "52.112.0.0", "255.252.0.0")) ||
(isInNet(resolved_IP, "52.120.0.0", "255.252.0.0")))
return "DIRECT";
else
if (url.substring(0, 5) == 'http:' ||
url.substring(0, 6) == 'https:' ||
url.substring(0, 4) == 'ftp:')
return "PROXY <Primary Proxy IP>:8080; PROXY <Secondary Proxy IP>:8080";
return 'DIRECT';
}
我不确定我在这里缺少什么导致拒绝请求。
我还在 Firefox 上启用了开发人员工具,并看到了被阻止的请求(虽然不是每次都如此)
==============================
更新:
修改前的 PAC 文件
function FindProxyForURL(url, host) {
if (shExpMatch(url, "ctldl.windowsupdate.com")) { return "DIRECT"; }
if (shExpMatch(url, "download.windowsupdate.com")) { return "DIRECT"; }
if (shExpMatch(url, "windowsupdate.microsoft.com")) { return "DIRECT"; }
if (shExpMatch(url, "update.microsoft.com")) { return "DIRECT"; }
//check for local IP addresses
if ((shExpMatch(host, "127.0.0.1"))
|| (shExpMatch(host, "*.domain1.com"))
|| (shExpMatch(host, "*.domain2.com"))
|| (shExpMatch(host, "*.domain3.com"))
|| (shExpMatch(host, "domain3.com"))
) { return "DIRECT"; }
if (url.substring(0, 5) == 'http:' ||
url.substring(0, 6) == 'https:' ||
url.substring(0, 4) == 'ftp:')
{
return "PROXY <Proxy1>:8080; PROXY <Proxy2>:8080";
}
return 'DIRECT';
}