簡介
這樣做主要的好處有:
1、 分散 Proxy 的流量,避免 Proxy Server 負載過高
2、針對個別條件設定、加快瀏覽速度
3、設定要求順序,在某台 Proxy 無法在線上時,可自動嘗試別種在線上方式
格式
基本上 Proxy Auto Config File(以下簡稱 PAC)是一個純文字檔案,他的語法採用 JavaScript;所以建議要學習編寫 PAC 的人,最好先學習基本的 JavaScript。一個 PAC 檔必需是單獨的 JavaScript,其中不能包含任何 HTML 標籤。
在 PAC 檔中,一定要定義 Function FindProxyForURL 如下:
function FindProxyForURL( url, host )
{
...
}
如果使用了 PAC 檔,則瀏覽器在接受我們要求的網址後,會去執行ret = FindProxyForURL( url, host );這樣的指令。其中,url 是所要求網址的完整路徑,host 是對方的計算機名稱(就是在 :// 和 / 之中的部份);而 return 值 ret 則是 Proxy 的組態,它的格式有下列三種:
· DIRECT 直接在線上而不透過 Proxy
· PROXY host:port 使用指定的 Proxy 伺服機
· SOCKS host:port 使用指定的 Socks 伺服機
PAC 中特別的 Function
在 PAC 中,除了可以使用一般 JavaScript 的 Function 外,它還定義了一些特別的 Function 可以使用:
· isPlainHostName()
· dnsDomainIs()
· localHostOrDomainIs()
· isResolvable()
· isInNet()
· dnsResolve()
· myIpAddress()
· dnsDomainLevels()
· shExpMatch()
· weekdayRange()
· dateRange()
· timeRange()
isPlainHostName( host )
host 由網址取得的主機名稱。
此 Function 會判斷 host 是否為不包含網域 (Domain)。如果是,則 return true;如果包含,則 return false。
dnsDomainIs( host, domain )
host 由網址取得的主機名稱。
domain 指定的網域。
此 Function 會判斷 host 是否屬於網域 domain。如果是,則 return true;否,則 return false。
localHostOrDomainIs( host, hostdom )
host 由網址取得的主機名稱。
hostdom 完整的網域名稱。
此 Function 會判斷 host 是否為 hostdom,或 host 是否為 hostdom 的主機名稱。如果是,則 return true;否,則 return false。
isResolvable( host )
host 由網址取得的主機名稱。
此 Function 會嘗試透過 DNS 去解析 host,如果解析成功,則 return true;否則 return false。
isInNet( host, pattern, mask )
host主機名稱,可以是 Domain Name 或 IP。如果是 Domain Name,則會透過 DNS 查出 IP。
pattern IP。
mask對應於 pattern 的禁止。
此 Function 會 host 是否在指定的 IP 範圍內,如果是,則 return true;否則 return false。
dnsResolve( host )
host 要透過 DNS 解晰的主機名稱。
此 Function 會透過 DNS 去解析 host,return 值即為解析之結果。
myIpAddress()
此 Function 會 return 瀏覽器所在計算機之 IP 地址。
dnsDomainLevels( host )
host 由網址取得的主機名稱。
此 Function 會 return host 的 Domain 層數(點的數目)。
shExpMatch( str, shexp )
str 要進行比對的字元串。
shexp 比對的條件。
此 Function 會比對 str 是否符合 shexp 的表示式(此表示式為 shell expression 而非 regular expressions)。如果是,則 return true;否則 return false。
weekdayRange()、dateRange()、timeRange()
這三個 Function 的功用都是檢查線在時間是否在指定範圍內,用這些 Function 就可以設定分時段使用 Proxy Server。
Presentation-abstraction-control
一種與MVC相類似的軟體架構模式,適用於人工智慧系統。