本文件已封存並已停止維護。

JavaScript 與 JScript Auto-proxy 範例檔案

下列指令碼為您提供如何使用 .pac 檔案來指定自動 Proxy URL 的範例。若要使用這些函數,您必須更改 Proxy 名稱、連接埠號碼及 IP 位址。本主題包含以下內容:

範例 1:本機主機直接連線,其他所有機器則使用 Proxy 連線

下列函數會檢查主機名稱是否為本機主機,如果是本機主機,則會檢查是否為直接連線。如果主機名稱不是本機主機,則透過 Proxy 伺服器 (Proxy) 連線。

function FindProxyForURL(url, host)
 {
 if (isPlainHostName(host))
 return "DIRECT";
 else
 return "PROXY proxy:80";
 }

isPlainHostName 函數會檢查主機名稱中是否有點 (句點)。如果有,則會傳回 FALSE。否則,此函數會傳回 TRUE。

範例 2:防火牆內的主機直接連線,本機伺服器之外的機器則使用 Proxy 連線

下列函數會檢查主機是「純」主機名稱 (也就是說不包含網域名稱),還是特殊網域名稱的一部份 (.company.com),但是主機名稱不是 www 或 home。

function FindProxyForURL(url, host)
 {
 if ((isPlainHostName(host) ||
 dnsDomainIs(host, ".company.com")) &&
 !localHostOrDomainIs(host, "www.company.com") &&
 !localHostOrDoaminIs(host, "home.company.com"))
 return "DIRECT";
 else
 return "PROXY proxy:80";

}

note備註
localHostOrDomainIs 函數僅針對本機網域中的 URL 執行。如果主機名稱的網域與指定的網域相符,dnsDomainIs 函數就會傳回 TRUE。

範例 3:如果主機可以解析,直接連線 — 否則,使用 Proxy 連線。

下列函數會要求 DNS 伺服器解析傳送給它的主機名稱。如果可以,則會進行直接連線。如果不可以,則會是使用 Proxy 進行連線。當內部 DNS 伺服器用來解析所有內部主機名稱時,它會非常有用。

function FindProxyForURL(url, host)
 {
 if (isResolvable(host))
 return "DIRECT";
 else
 return "PROXY proxy:80";
 }

請參閱頁面上方有關 isResolvable 函數的附註。

範例 4:如果主機在指定的子網路內,直接連線 — 否則,使用 Proxy 連線。

下列函數會將指定的 IP 位址模式及遮罩與主機名稱相比較。當子網路內的某些主機應該直接連線,而其他機器應使用 Proxy 連線時,此函數會非常有用。

function FindProxyForURL(url, host)
 {
 if (isInNet(host, "999.99.9.9", "255.0.255.0"))
 return "DIRECT";
 else
 return "PROXY proxy:80";
 }

請參閱頁面上方有關 isInNet 函數的附註。

如果主機 IP 位址與指定的模式相符,isInNet(host, pattern, mask) 函數就會傳回 TRUE。遮罩表示哪一部份要符合 IP 位址 (255=match,0=ignore)。

範例 5:根據主機網域決定連線類型

如果主機為本機,下列函數會指定直接連線。如果主機不是本機,此函數就會根據主機網域以決定要使用哪個 Proxy。如果主機網域名稱是選擇 Proxy 的其中一個條件,此函數會非常有用。

function FindProxyForURL(url, host)
 {
 if (isPlainHostName(host))
 return "DIRECT";
 else if (shExpMatch(host, "*.com"))
 return "PROXY comproxy:80";
 else if (shExpMatch(host, "*.edu"))
 return "PROXY eduproxy:80";
 else
 return "PROXY proxy";
 }

如果 str 與使用 shell 運算式模式的 shexp 相符,shExpMatch(str, shexp) 函數就會傳回 TRUE。

範例 6:根據使用的通訊協定決定連線類型

下列函數會擷取正在使用的通訊協定,並據此選擇 Proxy。如果沒有相符的通訊協定,則會進行直接連線。如果正在使用的通訊協定是選擇 Proxy 的其中一個條件,這個函數會非常有用。

function FindProxyForURL(url, host)
 {
 if (url.substring(0, 5) == "http:") {
 return "PROXY proxy:80";
 }
 else if (url.substring(0, 4) == "ftp:") {
 return "PROXY fproxy:80";
 }
 else if (url.substring(0, 7) == "gopher:") {
 return "PROXY gproxy";
 }
 else if (url.substring(0, 6) == "https:") {
 return "PROXY secproxy:8080";
 }
 else {
 return "DIRECT";
 }
 }

substring 函數會從字串中擷取指定的字元數。

範例 7:透過檢查主機名稱是否與 IP 位址相符以決定 Proxy 設定

下列函數會透過將主機名稱轉譯為 IP 位址,並將它與指定的字串相比較以選擇 Proxy。

function FindProxyForURL(url, host)
 {
 if (dnsResolve(host) == "999.99.99.999") { // = http://secproxy
 return "PROXY secproxy:8080";
 }
 else {
 return "PROXY proxy:80";
 }
 }

請參閱頁面上方有關 dnsResolve 函數的附註。

範例 8:如果主機 IP 與指定的 IP 相符,使用 Proxy 連線 — 否則,直接連線

下列函數是根據指定 IP 位址以選擇 Proxy 的另外一種方式。這個範例與範例 7 不一樣,它會使用函數呼叫來明確取得數字 IP 位址 (範例 7 則使用 dnsResolve 函數將主機名稱轉譯為數字 IP 位址)。

function FindProxyForURL(url, host)
 {
 if (myIpAddress() == "999.99.999.99") { 
 return "PROXY proxy:80";
 }
 else {
 return "DIRECT";
 }
 }

myIpAddress 函數會傳回正在執行瀏覽器的主機 IP 位址 (以整數點的格式)。

範例 9:如果主機名稱中有點 (.),使用 Proxy 連線 — 否則,直接連線。

下列函數會檢查主機名稱中有多少個點 (句點)。如果主機名稱中有點,則使用 Proxy 連線。如果主機名稱中沒有點,則直接連線。這是根據主機名稱特性決定連線類型的另一種方式。

function FindProxyForURL(url, host)
 {
 if (dnsDomainLevels(host) > 0) { // if the number of dots in host > 0
 return "PROXY proxy:80";
 }
 return "DIRECT";
 }

dnsDomainLevels 函數會傳回與主機名稱中的點數相等的整數。

範例 10:指定一星期內的哪些天使用 Proxy 連線,其他幾天則直接連線

下列函數會透過指定適用於 Proxy 之一星期內的一些日子以決定連線類型。不在這些參數範圍之內的日子會使用直接連線。如果要在流量較大時使用 Proxy,並在流量較小的時候允許直接連線,此函數會非常有用。

function FindProxyForURL(url, host)
 {
 if(weekdayRange("WED", "SAT", "GMT")) 
 return "PROXY proxy:80";
 else 
 return "DIRECT";
 }

weekdayRange(day1 [,day2] [,GMT] ) 函數會傳回目前的系統時間是否在參數 day1、day2 及 GMT 所指定的範圍內。只有第一個參數是必要的。GMT 參數會假設時間數值是格林威治標準時間,而不屬於本地時區。

其他參考資料:

  • 如需有關其他資源與 Windows® Internet Explorer® Administration Kit 8 參考資料的詳細資訊,請參閱參考資料

顯示: