Networking
修改後 PAC 文件不起作用
我從 PAC 文件中得到了這種奇怪的行為。我有一個執行良好的現有 PAC 文件。由於最近的遷移,我不得不開始修改 PAC 文件,並從代理中排除一些主要用於 MS Teams 的 IP 和 URL。
測試修改後,發現瀏覽時存在極度延遲。在處理 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'; }
首先這是非法的——
shExpMatch(url, "*.internaldomain1.com"
因為它並不總是一個正則表達式。這是合法的:shExpMatch(url, "*.internaldomain1.com/*")
或者
shExpMatch(host, "*.internaldomain1.com")
您有匹配的主機,但新的 PAC 有 url 匹配。不確定它是否與代理站點問題有關。為此,我們必須知道拒絕意味著什麼——訪問什麼站點時會出現什麼錯誤。