對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2016/3/3 10:17:41
Proxy 自動設定範例
這些範例是使用 Proxy 自動設定 (.pac) 檔指定自動 Proxy URL 的各種方法。若要使用這些範例,您必須將 Proxy 名稱、連接埠號碼及 IP 位址更改為與公司資訊相同的值。
本機主機直接連線
在此範例中,如果是本機主機,則它可以直接連線。不過,如果它不是本機伺服器,則它必須透過 Proxy 伺服器連線。具體而言,isPlainHostName 函式會檢查主機名稱是否有任何句點 (或點)。如果函式找到點,這代表它不是本機主機並會傳回 false。否則,函式會傳回 true。
如果主機位於防火牆內便會直接連線
在這個範例中,如果主機位於防火牆內部,它便可以直接連線。不過,如果伺服器位於防火牆外部,則它必須透過 Proxy 伺服器連線。具體而言,localHostOrDomainIs 函式只會執行本機網域中的 URL。如果主機網域名稱符合所提供的網域資訊,則 dnsDomainIs 函式會傳回 true。
如果是可解析的主機名稱便會直接連線
在這個範例中,如果可以解析主機名稱,它便可以直接連線。不過,如果無法解析名稱,則伺服器必須透過 Proxy 伺服器連線。明確的說,此函式會要求 DNS 伺服器解析傳送給它的主機名稱。如果可以,會進行直接連線。如果不可以,則會使用 Proxy 進行連線。
當內部 DNS 伺服器用來解析所有內部主機名稱時,它會非常有用。
重要
isResolvable 函式會查詢網域名稱系統 (DNS) 伺服器。物件模型物件、屬性或方法的參考會造成 Proxy 自動設定檔以無訊息模式失敗。例如,參考 window.open(...)、alert(...) 和 password(...) 都會造成 Proxy 自動設定檔失敗。
如果主機位於指定的子網路內部便會直接連線
在這個範例中,如果本機位於指定的子網路內部,它便可以直接連線。不過,如果伺服器位於指定的子網路外部,則它必須透過 Proxy 伺服器連線。具體而言,如果主機的 IP 位址符合指定的模式,isInNet (主機、模式、遮罩) 函式便會傳回 true。遮罩會指出要比對的 IP 位址部分 (255 = 符合,0 = 略過)。
重要
isInNet 函式會查詢 DNS 伺服器。物件模型物件、屬性或方法的參考會造成 Proxy 自動設定檔以無訊息模式失敗。例如,參考 window.open(...)、alert(...) 和 password(...) 都會造成 Proxy 自動設定檔失敗。
根據主機網域決定連線類型
在這個範例中,如果是本機主機,則伺服器可以直接連線。不過,如果不是本機主機,則這個函式會根據主機網域判斷要使用的 Proxy。具體而言,如果使用 Shell 運算式模式時,str 符合 shexp,則 shExpMatch(str, shexp) 函式會傳回 true。
當主機網域名稱是 Proxy 選項的其中一個條件時,這就非常有用。
根據通訊協定決定連線類型
在這個範例中,使用中通訊協定會擷取自伺服器並可用來選擇 Proxy。如果找不到符合的通訊協定,則伺服器會直接連線。具體而言,substring 函式會從字串中擷取指定的字元數。
當通訊協定是 Proxy 選項的其中一個條件時,這就非常有用。
根據符合 IP 位址的主機名稱決定 Proxy 伺服器
在這個範例中,透過將主機名稱轉譯成 IP 位址,然後將該位址與指定的字串進行比較的方式來選取 Proxy 伺服器。
重要
dnsResolve 函式會查詢 DNS 伺服器。物件模型物件、屬性或方法的參考會造成 Proxy 自動設定檔以無訊息模式失敗。例如,參考 window.open(...)、alert(...) 和 password(...) 都會造成 Proxy 自動設定檔失敗。
如果主機 IP 位址與指定的 IP 位址相符,則使用 Proxy 伺服器進行連線
在這個範例中,透過明確取得 IP 位址,然後將該位址與指定的字串進行比較的方式來選取 Proxy 伺服器。如果找不到符合的通訊協定,則伺服器會建立直接連線。具體而言,myIpAddress 函式會傳回執行瀏覽器的主機 IP 位址 (以整數點格式表示)。
如果主機名稱包含點,則使用 Proxy 伺服器進行連線
在這個範例中,函式會檢查主機名稱是否有句點 (或點)。如果有任何點存在,就會使用 Proxy 伺服器進行連線。如果不含任何點,就會進行直接連線。具體而言,dnsDomainLevels 函式會傳回等於主機名稱中的點數目的整數。
注意
這是根據主機名稱特性決定連線類型的另一種方式。
根據一週的特定天數使用 Proxy 伺服器進行連線
在這個範例中,函式會根據每週天數判斷是否要連線到 Proxy 伺服器。在指定期間以外的日期連線參數會讓伺服器建立直接連線。具體而言,weekdayRange(day1 [,day2] [,GMT] ) 函式會透過 day1、day2 和 GMT 參數,傳回目前系統時間是否落在指定的範圍內。只需要第一個參數即可。GMT 參數會假設時間值會使用格林威治標準時間,而不是本地時區。
當您要在流量很大時使用 Proxy 伺服器,但在流量很小時允許直接連線的情況下,此函式非常有用。
原文出處:Proxy 自動設定範例 (Windows)
這些範例是使用 Proxy 自動設定 (.pac) 檔指定自動 Proxy URL 的各種方法。若要使用這些範例,您必須將 Proxy 名稱、連接埠號碼及 IP 位址更改為與公司資訊相同的值。
本機主機直接連線
在此範例中,如果是本機主機,則它可以直接連線。不過,如果它不是本機伺服器,則它必須透過 Proxy 伺服器連線。具體而言,isPlainHostName 函式會檢查主機名稱是否有任何句點 (或點)。如果函式找到點,這代表它不是本機主機並會傳回 false。否則,函式會傳回 true。
function FindProxyForURL(url, host)
{
if (isPlainHostName(host))
return "DIRECT";
else
return "PROXY proxy:80";
}
如果主機位於防火牆內便會直接連線
在這個範例中,如果主機位於防火牆內部,它便可以直接連線。不過,如果伺服器位於防火牆外部,則它必須透過 Proxy 伺服器連線。具體而言,localHostOrDomainIs 函式只會執行本機網域中的 URL。如果主機網域名稱符合所提供的網域資訊,則 dnsDomainIs 函式會傳回 true。
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";
}
如果是可解析的主機名稱便會直接連線
在這個範例中,如果可以解析主機名稱,它便可以直接連線。不過,如果無法解析名稱,則伺服器必須透過 Proxy 伺服器連線。明確的說,此函式會要求 DNS 伺服器解析傳送給它的主機名稱。如果可以,會進行直接連線。如果不可以,則會使用 Proxy 進行連線。
當內部 DNS 伺服器用來解析所有內部主機名稱時,它會非常有用。
重要
isResolvable 函式會查詢網域名稱系統 (DNS) 伺服器。物件模型物件、屬性或方法的參考會造成 Proxy 自動設定檔以無訊息模式失敗。例如,參考 window.open(...)、alert(...) 和 password(...) 都會造成 Proxy 自動設定檔失敗。
function FindProxyForURL(url, host)
{
if (isResolvable(host))
return "DIRECT";
else
return "PROXY proxy:80";
}
如果主機位於指定的子網路內部便會直接連線
在這個範例中,如果本機位於指定的子網路內部,它便可以直接連線。不過,如果伺服器位於指定的子網路外部,則它必須透過 Proxy 伺服器連線。具體而言,如果主機的 IP 位址符合指定的模式,isInNet (主機、模式、遮罩) 函式便會傳回 true。遮罩會指出要比對的 IP 位址部分 (255 = 符合,0 = 略過)。
重要
isInNet 函式會查詢 DNS 伺服器。物件模型物件、屬性或方法的參考會造成 Proxy 自動設定檔以無訊息模式失敗。例如,參考 window.open(...)、alert(...) 和 password(...) 都會造成 Proxy 自動設定檔失敗。
function FindProxyForURL(url, host)
{
if (isInNet(host, "999.99.9.9", "255.0.255.0"))
return "DIRECT";
else
return "PROXY proxy:80";
}
根據主機網域決定連線類型
在這個範例中,如果是本機主機,則伺服器可以直接連線。不過,如果不是本機主機,則這個函式會根據主機網域判斷要使用的 Proxy。具體而言,如果使用 Shell 運算式模式時,str 符合 shexp,則 shExpMatch(str, shexp) 函式會傳回 true。
當主機網域名稱是 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";
}
根據通訊協定決定連線類型
在這個範例中,使用中通訊協定會擷取自伺服器並可用來選擇 Proxy。如果找不到符合的通訊協定,則伺服器會直接連線。具體而言,substring 函式會從字串中擷取指定的字元數。
當通訊協定是 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";
}
}
根據符合 IP 位址的主機名稱決定 Proxy 伺服器
在這個範例中,透過將主機名稱轉譯成 IP 位址,然後將該位址與指定的字串進行比較的方式來選取 Proxy 伺服器。
重要
dnsResolve 函式會查詢 DNS 伺服器。物件模型物件、屬性或方法的參考會造成 Proxy 自動設定檔以無訊息模式失敗。例如,參考 window.open(...)、alert(...) 和 password(...) 都會造成 Proxy 自動設定檔失敗。
function FindProxyForURL(url, host)
{
if (dnsResolve(host) == "999.99.99.999") { // = http://secproxy
return "PROXY secproxy:8080";
}
else {
return "PROXY proxy:80";
}
}
如果主機 IP 位址與指定的 IP 位址相符,則使用 Proxy 伺服器進行連線
在這個範例中,透過明確取得 IP 位址,然後將該位址與指定的字串進行比較的方式來選取 Proxy 伺服器。如果找不到符合的通訊協定,則伺服器會建立直接連線。具體而言,myIpAddress 函式會傳回執行瀏覽器的主機 IP 位址 (以整數點格式表示)。
function FindProxyForURL(url, host)
{
if (myIpAddress() == "999.99.999.99") {
return "PROXY proxy:80";
}
else {
return "DIRECT";
}
}
如果主機名稱包含點,則使用 Proxy 伺服器進行連線
在這個範例中,函式會檢查主機名稱是否有句點 (或點)。如果有任何點存在,就會使用 Proxy 伺服器進行連線。如果不含任何點,就會進行直接連線。具體而言,dnsDomainLevels 函式會傳回等於主機名稱中的點數目的整數。
注意
這是根據主機名稱特性決定連線類型的另一種方式。
function FindProxyForURL(url, host)
{
if (dnsDomainLevels(host) > 0) { // if the number of dots in host > 0
return "PROXY proxy:80";
}
return "DIRECT";
}
根據一週的特定天數使用 Proxy 伺服器進行連線
在這個範例中,函式會根據每週天數判斷是否要連線到 Proxy 伺服器。在指定期間以外的日期連線參數會讓伺服器建立直接連線。具體而言,weekdayRange(day1 [,day2] [,GMT] ) 函式會透過 day1、day2 和 GMT 參數,傳回目前系統時間是否落在指定的範圍內。只需要第一個參數即可。GMT 參數會假設時間值會使用格林威治標準時間,而不是本地時區。
當您要在流量很大時使用 Proxy 伺服器,但在流量很小時允許直接連線的情況下,此函式非常有用。
function FindProxyForURL(url, host)
{
if(weekdayRange("WED", "SAT", "GMT"))
return "PROXY proxy:80";
else
return "DIRECT";
}
原文出處:Proxy 自動設定範例 (Windows)