淺析PAC,教你動手修改你的PAC文件及user-rule文件實現自動代理

淺析PAC,教你動手修改你的PAC文件及user-rule文件實現自動代理


Shadowsocks作爲現在一種很流行的穿牆工具,以其輕量級、速度感人等優點深受廣大網友熱捧。與VP_N相比,他就像一把鋒利的”瑞士軍刀”,不用受制於“系統全局代理”模式的困擾,控制更加便捷,基於Socks5安全加密協議,防止GF*W通過分析流量特徵從而干擾的問題。而又不像GoAgent這種集中式爬牆模式,一般不會出現全局封鎖等現象。不管你是因爲什麼原因喜歡上Shadowsocks,我相信她一定有給你帶來好的體驗的方面。

在Shadowsocks裏面,系統代理模式有兩種,一種是“系統代理模式”,另一種是“PAC代理模式”,通常情況下我們會選擇後者,今天這裏給大家解析一下PAC模式的原理以及如何修改PAC文件、user-rule文件實現自動代理,希望大家可以通過本文更的“科學上網”。

什麼是PAC

代理自動配置(英語:Proxy auto-config,簡稱PAC)是一種網頁瀏覽器技術,用於定義瀏覽器該如何自動選擇適當的代理服務器來訪問一個網址。

一個PAC文件包含一個JavaScript形式的函數“FindProxyForURL(url, host)”。這個函數返回一個包含一個或多個訪問規則的字符串。用戶代理根據這些規則適用一個特定的代理其或者直接訪問。當一個代理服務器無法響應的時候,多個訪問規則提供了其他的後備訪問方法。瀏覽器在訪問其他頁面以前,首先訪問這個PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通過網頁的網絡代理自發現協議(Web Proxy Autodiscovery Protocol)自動配置的。

上面是從維基百科摘錄的關於PAC的解釋,我做了一個簡單的圖片解釋什麼是PAC:

簡單的講,PAC就是一種配置,它能讓你的瀏覽器智能判斷哪些網站走代理,哪些不需要走代理。用過Shadowsocks的朋友應該會知道, shadowsocks.exe 同級目錄下有一個 pac.txt 文件,這正是我們本文剛剛所說的pac配置文件。

打開 pac.txt 文件,可以看到如下內容

可以看到pac配置文件是用的JavaScript語法,裏面有一個變量 rules ,是一個JSon數組格式的數據類型,數組裏面存放的是各種URL的通配符,那麼在pac模式下,如果當訪問符合這個數組裏面任意一個URL通配符的網址時,系統會走代理,反之直連。比如圖中pac配置,如果訪問 http://www.cloudflare.com/index.php 時,會走代理,而訪問百度、新浪等國內網站則會選擇直連方式。

PAC的優勢

PAC自動代理屬於智能判斷模式,相比全局代理,它的優點有:

  1. 不影響國內網站的訪問速度,防止無意義的繞路

  2. 節省Shadowsocks服務的流量,節省服務器資源

  3. 控制方便

PAC文件及user-rule文件的語法規則

那麼,當一個網站被牆,如何添加到PAC裏面讓其能夠正常訪問呢?在Shadowsocks裏面,可以有如下兩個方式:

1. 添加到 pac.txt 文件中

編輯 pac.txt 文件,模仿裏面的一些URL通配符,再添加一個,例如"||ip138.com", ,注意不要忘記了 , 半角逗號,那麼意思就是所有 ip138.com域名下的網址都將走Shadowsocks代理,打開ip138可以看到IP已經變成Shadowsocks所用的國外代理了

2. 添加到 user-rule.txt 文件中

編輯 user-rule.txt 文件,這裏和 pac.txt 文件語法不完全相同,user-rule文件中,每一行表示一個URL通配符,但是通配符語法類似。例如添加一行||ip138.com^ ,然後記得右鍵小飛機-PAC-從GFWList更新本地PAC,打開ip138可以看到IP已經變成Shadowsocks所用的國外代理了

注意末尾不要忘記 ^ 符號,意思是要麼在這個符號的地方結束,要麼後面跟着?,/等符號。

自定義代理規則的設置語法與GFWlist相同,語法規則如下:

  1. 通配符支持。比如 *.example.com/* 實際書寫時可省略 * , 如.example.com/ , 和 *.example.com/* 效果一樣

  2. 正則表達式支持。以 \ 開始和結束, 如 \[\w]+:\/\/example.com\

  3. 例外規則 @@ ,如 @@*.example.com/* 滿足 @@ 後規則的地址不使用代理

  4. 匹配地址開始和結尾 | ,如 |http://example.com 、 example.com| 分別表示以 http://example.com 開始和以 example.com 結束的地址

  5. || 標記,如 ||example.com 則 http://example.com 、https://example.com 、 ftp://example.com 等地址均滿足條件

  6. 註釋 ! 。 如 !我是註釋

更多user-rule.txt語法規則,可以參考AdBlockPlus過濾規則https://adblockplus.org/en/filter-cheatsheet


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章