2015-12-15 38 views
0

時,我有以下PAC文件代碼:如何在瀏覽器確定代理是「不可用」使用PAC文件

function FindProxyForURL(url, host) 
{ 
    return "PROXY proxy1:8080" + "PROXY proxy2:8080; "; 
}; 

根據Java中,這應該工作如下(https://docs.oracle.com/cd/E19575-01/821-0053/adyrr/index.html):

在以下示例中,返回值告訴瀏覽器在端口8080上使用名爲w3proxy.example.com的代理 。如果該代理是 不可用,瀏覽器將使用名爲proxy1.example.com的代理,端口號爲:

PROXY w3proxy.example.com:8080; PROXY proxy1.example.com:8080

在實驗室中測試時,似乎explorer在負載均衡模式下使用這些代理。我沒有看到wireshark中的這些代理的任何探測,但是在一些網站重新加載之後發生了故障轉移。

瀏覽器如何確定代理是否存活的天氣? 根據一些網站,它說,瀏覽器也使用這些代理負載平衡,這是正確的?

在此先感謝。

回答

0

一個健康的用戶代理將簡單地接收PAC文件返回的第一個代理,並嘗試將流量轉發到爲其域名返回的IP地址。

現在,IP可能不會響應該端口上來自客戶端系統的SYN數據包,或者如果它未運行Web代理服務,它可能會爲其自己的頁面提供服務。在第一種情況下,瀏覽器會在幾秒鐘內(但可能會因客戶端上的TCP/IP協議棧的配置而異)發生TCP連接超時後切換到輔助代理。在第二種情況下,用戶代理/瀏覽器很高興,因爲它獲得對請求的響應,即使它不是它想要訪問的Web資源。

  • 對於第一個示例,您可以嘗試使用4.2.2.2:80作爲第一個代理並觀察。它是一臺NTP服務器,不會在80上聽,所以你很快就會超時。

  • 對於第二個示例,您可以嘗試使用purple.com:80作爲第一個代理。它是一個普通的Web服務器。無論您發送什麼請求,它都會提供自己的頁面,但PAC文件呈現器不會嘗試次要代理,因爲它正在獲得響應。

現在出現代理名稱解析爲IP:端口套接字並且正在運行Web代理服務的情況。讓我們考慮一個案例,其中Web服務器只喜歡來自某些白名單源IP的請求,並且該Web代理沒有在那裏列出。

  • 代理服務器將響應客戶端,並嘗試與預期的Web服務器建立連接,服務器不會響應。代理服務器嘗試訪問有問題的Web資源的嘗試次數以及它與客戶端保持連接的時間取決於代理服務的實現。

  • 特定的時間之後,連接將超時和客戶端的用戶代理將嘗試在PAC文件中可用的下一代理聲明。

這是對用戶代理(通常是Web瀏覽器)如何確定代理是否存活的響應。

現在,來到你的關於負載均衡第二個問題,那肯定是不正確的。默認情況下,只有在上述情況下,瀏覽器纔會切換到下一個代理語句。但是如果你願意,你可以在你的PAC文件中調用函數myIpAddress()並解析它返回的IP地址的子網部分。然後,您可以爲不同的子網應用單獨的代理語句。我見過不少機構使用這種可憐的技術通過PAC文件配置實現基於源IP的負載平衡。

HTH!

相關問題