淺析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自動代理屬於智能判斷模式,相比全局代理,它的優點有:
不影響國內網站的訪問速度,防止無意義的繞路
節省Shadowsocks服務的流量,節省服務器資源
控制方便
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相同,語法規則如下:
通配符支持。比如
*.example.com/*
實際書寫時可省略*
, 如.example.com/
, 和*.example.com/*
效果一樣正則表達式支持。以
\
開始和結束, 如\[\w]+:\/\/example.com\
例外規則
@@
,如@@*.example.com/*
滿足@@
後規則的地址不使用代理匹配地址開始和結尾
|
,如|http://example.com
、example.com|
分別表示以http://example.com
開始和以example.com
結束的地址||
標記,如||example.com
則http://example.com
、https://example.com
、ftp://example.com
等地址均滿足條件註釋
!
。 如!我是註釋
更多user-rule.txt語法規則,可以參考AdBlockPlus過濾規則https://adblockplus.org/en/filter-cheatsheet