目錄
1 Privoxy 用途
2 Privoxy 安裝
3 啟動 Privoxy
4 配置瀏覽器
5 設定 Privoxy
我估計八成人第一遍看 Privoxy 手冊,只一頭霧水。
我此前寫過兩篇相關教程,介紹 Privoxy 中屏蔽網頁廣告、視頻廣告的用法,較為具體。這裡概括性地寫一篇簡明教程。所謂「站得高,看得遠」,一旦對 Privoxy 整體結構有把握,自然胸有成竹,做得到有的放矢地查閱手冊,而不是一頭栽進茫茫的配置項中。
Privoxy 用途#
Privoxy 是一個代理軟體,代理 – 簡單說,就是進出你電腦的流量的中介。藉由它,我們可以控制出去的請求、返回的響應。不必要的請求 – 比如視頻廣告的地址、圖片廣告的地址,我們可以直接 block 掉;不必要的響應內容 – 比如頁面中的文字廣告,我們可以藉由 filter 過濾掉,不讓其顯示。
當然,上面只是 Privoxy 最常見、最普通的用法,Privoxy 還有其它用法,這裡且按下。
Privoxy 安裝#
Privoxy 支援的平台非常多:
Windows 95 and later versions (98, ME, 2000, XP, Vista, Windows 7 etc.), GNU/Linux (RedHat, SuSE, Debian, Fedora, Gentoo, Slackware and others), Mac OS X (10.4 and upwards on PPC and Intel processors), OS/2, Haiku, DragonFly, FreeBSD, NetBSD, OpenBSD, Solaris, and various other flavors of Unix.
Windows 平台的安裝自不用說,下載一個 exe 檔案一路點擊下一步;Linux 平台多數可以通過倉庫安裝。
比如 Ubuntu:
sudo apt-get install privoxy
又比如 openSUSE:
sudo zypper install privoxy
一般也建議使用倉庫安裝。
或者你實在願意折騰,那就下載原始碼自己編譯安裝。
啟動 Privoxy#
安裝完 Privoxy 後,需要啟動它,因為各平台下的各個系統情況不一,這裡就不一一介紹,請看手冊說明。
openSUSE 下按 ALT + F1 搜尋並開啟 Service Manager,尋找 privoxy 項,啟用並啟動它,Privoxy 就會以系統服務的形態運行。
配置瀏覽器#
大部分時候,我們可能只需要瀏覽器走 Privoxy 代理,則開啟瀏覽器的代理設定,將 HTTP 與 SSL 代理設定為 127.0.0.1,連接埠為 8118。
如果想省事,也可以配置系統代理程式。
配置完瀏覽器後,在瀏覽器中開啟 http://p.p 網址,看是否顯示如下內容:
This is Privoxy 3.0.21 on unknown (127.0.0.1), port 8118, enabled
如果有,說明 Privoxy 正常運行且瀏覽器配置正確。
設定 Privoxy#
以上準備就緒後,可以開始定製我們的 Privoxy 了。
一切從 config 檔案說起。
config 檔案在各種系統下位置、名稱可能並不一樣,比如 Windows 系統下,它其實叫 config.txt,在 openSUSE 系統下,它所在的目錄為 /etc/privoxy,這個目錄是個軟連結,指向 /var/lib/privoxy/etc。
但通常,我們並不需要修改 config 檔案,這裡且讓它預設著。
再來介紹兩類檔案:
action 檔案
match-all.action
default.action
user.action
filter 檔案
default.filter
user.filter
match-all.action、default.action、default.filter 這幾個檔案,建議不要做修改,因為 Privoxy 升級時會覆蓋掉。所以把我們的配置內容寫到 user.action 及 user.filter 中 – 這也是為什麼兩個檔案叫 user.* 的緣故。
action 檔案#
action 檔案定義 Privoxy 的動作,比如 {+block}:
{+block{幹掉陳三的 blog}}
.zfanw.com
這一句,把我的網址擋掉,凡是 zfanw.com 的請求,均會返回 403 – Privoxy 直接返回一個被 blocked 的提示頁面,內容大概如下:
Your request for http://www.zfanw.com/blog/ was blocked. Block reason: .zfanw.com
分析下代碼的意義:
第一行,{+block} 是一個指令,block後的 {} 寫的是要 block 的原因,不寫也可以,作用類似於注釋。
第二行, .zfanw.com,這是一個上述指令要應用的網址,分兩個部分,一個 domain,一個 path,domain 部分支援部分萬用字元,比如 *、?、[0-9]、[a-z];path 部分是指第一個 / 後的部分網址,支援 POSIX 1003.2 Regex,比 domain 部分靈活。具體見手冊。
filter 檔案#
filter 檔案定義過濾響應的規則,比如:
FILTER: blockBaiduAd 去除百度推廣廣告
s|</head>|<style type=text/css>#content_left>table,[id*='00'],#ec_im_container,#ec_im_container+div,.ad-block,.EC_zwd_table{display: none !important;}</style></head>|g
s|</body><script.*</script></html>|</body></html>|g
第一行中,大寫的 FILTER 表示定義一個過濾規則,blockBaiduAd 表示規則名稱,再後面是說明。
第二行及第三行,是對返回的頁面進行修改。比如你用過 Vi/Vim 或 sed 等工具,應該對 s 這個替換命令很熟悉。簡單說,上面的語句就是把頁面內的代碼作過更換,這樣一些文字廣告就不在瀏覽器中顯示了。
但是,user.filter 中只是定義過濾的規則,規則的應用,還是要在 action 檔案中,所以以上規則寫到 user.action 中,如下:
# 清理百度推廣廣告
{+filter{blockBaiduAd}}
.baidu.com
我想看過 action 檔案配置結構的話,就已經知道這一句是什麼意思:# 後是一個注釋,filter 是指令,要求執行 blockBaiduAd 這條規則,.baidu.com 是應用到的網址。
在整個使用過程中,要多多藉助 Privoxy 提供的工具,比如 http://config.privoxy.org/show-url-info,可以查看你定義的規則是否對某一條 URL 生效。
最後,如果已經看明白 Privoxy 的用法,並且打算自訂一些規則