Shadowrocket 部落格 · 規則與設定

規則分流到底怎麼寫:
DOMAIN-SUFFIX、GEOIP、FINAL 一次講清楚。

首頁和詳細教學裡都提到了「規則分流」,也各給了一段範例,但都是點到為止。這篇文章把規則檔裡最常見的幾種比對類型、它們的比對順序,以及新手最容易寫錯的幾個地方,依實際例子完整過一遍。

規則檔到底在解決什麼問題

連線之後,可以讓「所有流量」都走節點。這樣最省事,但也最浪費——台灣網站、網銀、Apple 服務直連更快,還不會佔節點額度。規則檔要做的只有一件事:依網域或 IP 決定直連還是代理,而不是一刀切。

規則檔本質上是一份純文字清單,每一行是一條規則,格式統一是:

類型,比對內容,策略

Shadowrocket 從上到下逐行讀取這份清單,某個網路請求命中了哪一行,就依那一行末尾寫的策略處理,命中即停止,不會繼續往下比對。

常見的幾種比對類型

「類型」決定了這一行規則依什麼維度去比對請求,最常用的幾種如下:

類型比對對象範例說明
DOMAIN完整網域,精確比對DOMAIN,www.example.com,PROXY只比對這一個網域,子網域或其他前綴都不算命中
DOMAIN-SUFFIX網域後綴DOMAIN-SUFFIX,netflix.com,PROXY比對 netflix.com 及其所有子網域(例如 www.netflix.com)
DOMAIN-KEYWORD網域中包含的關鍵字DOMAIN-KEYWORD,youtube,PROXY只要網域裡出現這個關鍵字就命中,範圍比後綴比對更寬,容易誤傷,謹慎使用
IP-CIDRIP 位址區段IP-CIDR,192.168.0.0/16,DIRECT依 IP 區段比對,常用於內網位址、特定伺服器 IP
GEOIPIP 所屬國家/地區GEOIP,TW,DIRECT依目標伺服器所在地判斷。TW 代表台灣,常用來做「本地 IP 直連」的保底
FINAL沒有比對到以上任何一條時的預設策略FINAL,PROXY必須放在規則檔最後一行,作用是「其餘情況怎麼處理」

策略部分(逗號後面的最後一項)通常是 PROXY(走代理節點)、DIRECT(直連)或 REJECT(拒絕連線,常用於封鎖廣告網域)。

比對順序:從上到下,命中即停

這是規則檔裡最容易被忽略、也最關鍵的一點:規則是依順序從上到下逐條比對的,一旦某一行命中就立即依那一行的策略處理,不會繼續往下看。這意味著規則的先後順序會直接影響結果,即使後面還有更「精確」的規則,只要前面已經有一行命中了,後面的就不會被執行。

一個完整、可以直接理解的範例:

DOMAIN-SUFFIX,netflix.com,PROXY
DOMAIN-SUFFIX,pchome.com.tw,DIRECT
DOMAIN-KEYWORD,youtube,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,TW,DIRECT
FINAL,PROXY

依這份規則,造訪 www.netflix.com 會命中第一行(後綴 netflix.com)走代理;pchome.com.tw 命中第二行直連;路由器管理頁 192.168.1.1 命中第四行直連;伺服器 IP 在台灣則走到第五行 GEOIP 直連;都沒命中就落到 FINAL,PROXY

幾個新手常見的寫法錯誤

01把 FINAL 寫在了中間,不是最後一行+

FINAL 代表「以上都沒比對到時怎麼處理」,如果寫在中間,它後面的所有規則都會變成永遠不會被執行的「死程式碼」,因為請求只要到了 FINAL 這一行就已經被處理並停止比對了。FINAL 必須放在檔案的最後一行。

02用了 DOMAIN-KEYWORD,結果誤傷了不相關的網站+

關鍵字比對的範圍比想像中寬,比如 DOMAIN-KEYWORD,ads,PROXY 不僅會比對到廣告網域,也可能誤傷網域裡恰好包含 "ads" 這幾個字母的正常網站。優先用 DOMAIN-SUFFIX 精確比對已知網域,只有在確實需要涵蓋大量相似網域、且能接受一定誤傷範圍時才用關鍵字比對。

03GEOIP,TW,DIRECT 放太前面,導致想走代理的網站被強制直連+

串流或新聞網站常把快取放在你所在國家的 CDN。若 GEOIP,TW,DIRECT 太靠前,這些 IP 會被當成「本地」放行,反而到不了你要的片庫來源。務必走代理的網域請放前面,GEOIP 放後面比較穩。

04規則改了但沒生效,還是舊的結果+

如果編輯的是本機手動維護的規則檔,儲存後一般會立即生效;如果用的是訂閱形式的規則集,需要重新觸發一次更新(進入對應訂閱項目點「更新」),本機快取的舊規則不會自動重新整理。

不想自己從零寫規則?

多數供應商會附一份規則集,匯入即可。這篇文章是讓你看懂每一行,方便局部調整(例如把網銀網域加成直連),不是要每個人從零寫一份。

說明:本文規則語法基於 Shadowrocket 官方使用手冊與實測整理,不同版本對規則類型的支援可能略有差異,請以你所用版本的實際支援情況為準。

還沒下載 Shadowrocket? App Store 一次買斷 $2.99,無內購、無訂閱費,下載後依本文規則設定即可開始分流
查看下載指南 →

延伸閱讀:返回首頁:Shadowrocket 是什麼 · 進階規則設定教學