pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)...
PAC文件格式
PAC文件是純文本格式的,實際上就是JavaScript文件。Chrome/Chromium的擴展Switchy!的"Auto Switch Mode"功能實際上也是創建和維護一個簡單的PAC文件,但功能比較弱。
對于一般的應用,即使你幾乎不懂JavaScript和編程,也可以通過本文的介紹實現基本的功能。
PAC文件FindProxyForURL函數?
PAC文件中必須包含一個函數:FindProxyForURL(url, host)。
參數url是用戶輸入的url,參數host是url中的主機名。
比如url為http://www.truevue.org/javascript/pac-proxy-setting,那么host就是www.truevue.org
一個最簡單的PAC文件內容如下:
?
function FindProxyForURL(url, host) {return "DIRECT"; }?
這個PAC文件實際上什么也沒做,對任何URL,都將"DIRECT"(直接連網)。
PAC文件返回值類型
除了可以return "DIRECT"以外,還有兩種常用方式:
PROXY proxysample.com:8080
http代理的主機和端口,主機也可以用IP表示
SOCKS5 socks5sample.com:1080
socks5代理的主機和端口,主機也可以用IP表示
那么,我們可以猜測到,用pac指定一個http代理應該這樣寫
?
function FindProxyForURL(url, host) {return "PROXY 192.168.1.1:3128"; }?
甚至可以指定多個代理????
?
function FindProxyForURL(url, host) {return "DIRECT; PROXY 192.168.1.1:3128; SOCKS5 lilinux.net:1080"; }?
這句語句的意思是:?
使用不同連接的順序和語句中的順序一致,你可以根據自己的實際情況更改。
也許你明確知道哪些網站不能直連,必須用PROXY或者SOCKS5連接,那么可以對站點分別指定代理配置?
?
function FindProxyForURL(url, host) {if (shExpMatch(url,"*.google.com/*")) {return "PROXY 192.168.1.1:3128";}if (shExpMatch(url, "*.wikipedia.com:*/*")) {return "SOCKS5 lilinux.net:1080";}if (isInNet(host, "10.0.0.0", "255.0.0.0")){return "DIRECT";}return "DIRECT; PROXY 192.168.1.1:3128; SOCKS5 lilinux.net:1080"; }?
這個PAC文件中引入了兩個新的函數,但從字面意思上,我們也可以猜出代碼的大概意思:
shExpMatch函數用來匹配url或者host,匹配的方式和DOS的通配符相似。例如前面用到的"*.google.com/*"可以匹配任意包含".google.com/"的字符串。?
Chrome/Chromium 的擴展Switchy!創建的pac文件還自定義了一個函數,可以用來匹配正則表達式,不過個人認為在url匹配上通常不需要使用強大的正則表達式。?
isInNet函數用來返回請求的host是否在指定的域內。值得注意的是,isInNet的第二個參數必須是 IP,不能是主機名。因此需要把主機名轉換成IP。比如"isInNet(host, dnsResolve(www.google.com), "255.255.255.0")"講到這里,應該可以解決你的問題了吧。
PAC文件可以使用的JavaScript函數
當然PAC也不止這么簡單,它還提供了不少其它函數,在本文就不詳細講述了。http://www.truevue.org/javascript/pac-functions?中列出了PAC代理文件中可以使用的JavaScript函數。
你也許想把pac文件發布到Internet上,這樣其它用戶就只需要在瀏覽器中指定pac文件的url即可。你得配置你的服務器映射 .pac 文件后綴到MIME類型: application/x-ns-proxy-autoconfig 如果使用的是Netscape服務器,編輯 config 目錄下的 mime.types 文 件。如果是Apache, CERN or NCSA服務器,使用 AddType 指令。
轉載于:https://www.cnblogs.com/tongbiao/p/6806547.html
總結
以上是生活随笔為你收集整理的pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模块之re正则表达式
- 下一篇: linux ifconfig找不到