日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)...

發(fā)布時間:2025/1/21 167 豆豆
PAC自動代理文件格式,教你如何寫PAC文件

PAC文件格式

PAC文件是純文本格式的,實際上就是JavaScript文件。Chrome/Chromium的擴展Switchy!的"Auto Switch Mode"功能實際上也是創(chuàng)建和維護一個簡單的PAC文件,但功能比較弱。

對于一般的應用,即使你幾乎不懂JavaScript和編程,也可以通過本文的介紹實現(xiàn)基本的功能。

PAC文件FindProxyForURL函數(shù)?

PAC文件中必須包含一個函數(shù):FindProxyForURL(url, host)。

參數(shù)url是用戶輸入的url,參數(shù)host是url中的主機名。

比如url為http://www.truevue.org/javascript/pac-proxy-setting,那么host就是www.truevue.org

一個最簡單的PAC文件內(nèi)容如下:

?

function FindProxyForURL(url, host) {return "DIRECT"; }

?

這個PAC文件實際上什么也沒做,對任何URL,都將"DIRECT"(直接連網(wǎng))。

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"; }

?

這句語句的意思是:?

  • 對所有URL,都直接連接;?
  • 如果不能直接連接,那么就使用192.168.1.1:3128這個http代理連接;
  • 如果還是不能連接,則使用lilinux.net:1080這個socks5代理連接。
  • 使用不同連接的順序和語句中的順序一致,你可以根據(jù)自己的實際情況更改。

    也許你明確知道哪些網(wǎng)站不能直連,必須用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文件中引入了兩個新的函數(shù),但從字面意思上,我們也可以猜出代碼的大概意思:

  • 當url是*.google.com/* 時,自動使用PROXY代理;
  • 當url是*.wikipedia.cm/*時,自動使用SOCKS5代理;
  • 當host是10.0.0.0 /255.0.0.0的子網(wǎng)內(nèi)時,自動直連;
  • 如果都不匹配,則依次按DIRECT、PROXY、SOCKS5的次序嘗試。?
  • shExpMatch函數(shù)用來匹配url或者host,匹配的方式和DOS的通配符相似。例如前面用到的"*.google.com/*"可以匹配任意包含".google.com/"的字符串。?

    Chrome/Chromium 的擴展Switchy!創(chuàng)建的pac文件還自定義了一個函數(shù),可以用來匹配正則表達式,不過個人認為在url匹配上通常不需要使用強大的正則表達式。?

    isInNet函數(shù)用來返回請求的host是否在指定的域內(nèi)。值得注意的是,isInNet的第二個參數(shù)必須是 IP,不能是主機名。因此需要把主機名轉(zhuǎn)換成IP。比如"isInNet(host, dnsResolve(www.google.com), "255.255.255.0")"講到這里,應該可以解決你的問題了吧。

    PAC文件可以使用的JavaScript函數(shù)

    當然PAC也不止這么簡單,它還提供了不少其它函數(shù),在本文就不詳細講述了。http://www.truevue.org/javascript/pac-functions?中列出了PAC代理文件中可以使用的JavaScript函數(shù)。

    你也許想把pac文件發(fā)布到Internet上,這樣其它用戶就只需要在瀏覽器中指定pac文件的url即可。你得配置你的服務器映射 .pac 文件后綴到MIME類型: application/x-ns-proxy-autoconfig 如果使用的是Netscape服務器,編輯 config 目錄下的 mime.types 文 件。如果是Apache, CERN or NCSA服務器,使用 AddType 指令。

    轉(zhuǎn)載于:https://www.cnblogs.com/tongbiao/p/6806547.html

    總結(jié)

    以上是生活随笔為你收集整理的pac (PAC(Proxy Auto Config) 是一个 Script;经由编写这个 Script,我们可以让系统判断在怎么样的情形下,要利用哪一台 Proxy 来进行联机。)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。