本文適合已在 Shadowrocket 匯入自己的連線資料,並準備使用遠端規則集整理分流的使用者。內容從 RULE-SET 的引用方式開始,逐步說明遠端清單與本機 [Rule] 的分工、規則優先順序、策略組搭配、更新檢查及常見故障。範例中的網址與網域均為示意值;實際使用時,請確認來源可信、格式符合 Shadowrocket 支援的規則格式,並保留原設定副本。
遠端規則集的用途:清單與分流策略分開管理
遠端規則集讓規則內容放在遠端清單中,由設定檔引用清單網址,再為該清單指定流量策略。這種做法可將「哪些網域或 IP 符合條件」與「符合後要走哪個策略」分開維護。清單變更時,使用者可依 Shadowrocket 的更新功能重新取得內容,不必每次都把大批比對項目貼回本機設定檔。
RULE-SET 是寫在 [Rule] 段落中的規則類型,不是遠端伺服器名稱,也不會自動建立代理節點或策略組。它的基本形式如下;逗號須使用半形符號,網址與策略名稱則替換成使用者自己的有效值。
[Rule]
RULE-SET,https://rules.example.net/sample.list,Proxy
FINAL,DIRECT
上例表示引用遠端規則清單,並將符合清單內容的請求交給名為 Proxy 的策略處理。清單網址只是格式示例,example.net 不提供實際規則服務。請使用自己已確認可信的來源,不要因為網址可開啟,就假設內容一定符合 Shadowrocket 的解析格式或適合目前的分流需求。
遠端清單的內容應使用 Shadowrocket 能解析的規則格式。清單通常提供比對條件;策略由引用它的 RULE-SET 行指定。若清單本身已帶有策略欄位,或包含來源專用標頭與額外語法,不能只因副檔名是文字檔便認定可直接使用。先查看來源對格式的說明,再用少量規則測試;不確定時,保留原設定並查核 Shadowrocket 的技術參考。
在 .conf 引用 RULE-SET:先準備策略名稱
在編輯前,先確認 Config 中目前選取的設定檔,並確認 Home 已有可用的連線資料。若使用者的目標是依規則分流,Home 的 Global Routing 應採用 Config,否則即使設定檔內有 RULE-SET,也未必按該檔案中的規則處理。編輯時建議複製原檔或記錄原本的關鍵行,方便在格式錯誤時還原。
策略欄位可以指向設定檔內已有的出站名稱或策略組。名稱必須與目前設定完全一致,包括大小寫、空格及符號;不能因為寫了 Proxy,就推斷設定檔一定存在同名策略。若原設定已有策略組,優先沿用並核對其成員;若沒有,應先依實際介面及設定檔格式建立,再在 RULE-SET 中引用。
遠端規則引用
- 段落
- [Rule]
- 格式
- RULE-SET,清單網址,策略名稱
- 網址示例
- https://rules.example.net/sample.list
- 策略示例
- Proxy,須與設定中的名稱一致
網址只作語法示意;要確認來源可用、內容格式相容且策略名稱已存在。
策略組核對
- 檢查位置
- 設定檔中的 [Proxy Group]
- 確認項目
- 名稱、類型與成員是否有效
- Rule 引用
- 使用策略組的完整名稱
- 生效模式
- Home → Global Routing → Config
策略組決定符合規則後採用哪種出站選擇,不會改變遠端清單的比對內容。
若要將不同用途的遠端清單導向不同策略,可在 [Rule] 中分別寫入多行 RULE-SET,例如一份送往 Proxy,另一份送往 DIRECT。實際策略名稱必須對應現有設定。不要只複製範例行而忽略清單範圍:如果兩份清單有重疊網域,前面的規則可能先命中,後面的策略就不會被採用。
分流優先順序:先排例外,再排較廣的清單
[Rule] 通常由上而下檢查,能符合的較前規則會先決定該請求的處理方式。遠端清單並沒有因為內容較多、更新較頻繁或網址較長而自動取得較高優先權;它只在自己的行被檢查時參與比對。因此,順序應依預期例外與清單重疊情形安排,而不是按清單名稱或行數排列。
[Rule]
DOMAIN,api.example.net,DIRECT
RULE-SET,https://rules.example.net/work.list,Proxy
RULE-SET,https://rules.example.net/general.list,DIRECT
GEOIP,CN,DIRECT
FINAL,Proxy
這段範例先為 api.example.net 設定明確例外,再引用較廣泛的遠端清單。假設 work.list 也包含該網域,請求仍可能先符合最上方的 DOMAIN,因此走 DIRECT。若將該例外移到遠端清單之後,清單可能先攔截請求,原本想設定的例外便無法達成。FINAL 放在後方,負責處理前面未匹配的請求;選擇何種策略應依自身需求,而不是照抄示例。
整理順序時,可先列出需要固定直連或固定代理的單一網域,再安排範圍較窄的清單,接著放較廣的清單與其他類型規則,最後確認 FINAL。這不是所有設定都必須採用的唯一排列;例如有些 IP 規則需要配合解析方式,仍應按實際流量特徵調整。重點是先弄清每一行的比對範圍,並檢查它是否會遮蔽後方規則。
- 精確例外:確認只對指定網域生效,再放在可能涵蓋該網域的清單之前。
- 清單重疊:若多份遠端清單涵蓋同一目標,逐一核對其排列及各自指定的策略。
- 網域與 IP:不同類型規則的比對資料不同;不要用網域清單的命中結果推斷 IP 規則也會命中。
- 最終規則:確認
FINAL位於預期的末端,並理解它會把其餘未匹配請求交給哪個策略。
更新遠端清單:分開確認來源、設定檔與連線
更新遠端規則清單與更新自己的訂閱不是同一項操作。訂閱通常管理連線項目;遠端規則集則提供比對資料。完成更新後,還要確認正在使用的設定檔及其 [Rule] 引用沒有改變。若清單更新成功但請求仍走舊策略,也可能是目前使用了其他 Config、Global Routing 不在 Config,或已有連線仍沿用先前建立的狀態。
-
備份設定
在 Config 確認目前啟用的檔案,複製原設定或記下
[Rule]相關行。不要在同一輪測試中同時改動遠端網址、策略名稱與多條規則。 -
檢查來源
確認遠端網址仍可取得內容,並查看提供者的格式說明。留意網址重導向、存取權限、回傳錯誤頁面,以及內容是否混入說明文字或不相容的段落標記。
-
更新清單
在 Shadowrocket 的設定檔或規則管理介面中,對該遠端項目執行可用的更新操作;不同版本的入口名稱可能不同,請依目前介面辨認規則更新功能,不要把訂閱更新當作同一操作。
-
核對路由
返回 Home 確認 Global Routing 為
Config,且 Config 選取預期的設定檔。使用一個已知會符合該清單的測試網域建立新請求,再檢查實際結果。
更新失敗時,先記錄錯誤訊息、發生時間與所用網路,再判斷是網路連線、來源伺服器還是內容格式問題。若來源需要授權、限制存取或暫時無法提供資料,應向自己使用的來源維護者確認;不要將未知網址替換成網路上隨手找到的清單。首次驗證時可先只引用一份清單,等確認可更新、可匹配後再逐份加入,較容易定位問題。
規則未生效時:從語法到實際命中逐項排查
看見設定檔裡有 RULE-SET,不等於請求已命中該清單。排查時應依次確認設定檔是否啟用、Global Routing 是否為 Config、遠端內容是否更新成功、策略名稱是否存在、測試請求是否符合清單,以及前面是否已有規則先行命中。一次只調整其中一項,並用新的請求重測;已建立的長連線未必會立刻套用剛修改的路由。
更新完成,流量還是走錯策略?
先在 Home 確認 Global Routing 是 Config,再確認啟用中的 Config 正是含有該 RULE-SET 的檔案。接著檢查前方是否有更早命中的規則,最後用新的連線請求驗證。
遠端網址可開啟,為什麼載入失敗?
瀏覽器能開啟網址不代表內容符合規則集格式。確認回應不是 HTML 錯誤頁、登入頁或含有不相容標頭的文字;再核對每行規則及逗號是否符合來源與 Shadowrocket 的格式要求。
策略組名稱看起來相同,仍提示找不到?
逐字比較 [Rule] 使用的名稱與設定檔中的策略組名稱,檢查大小寫、空格及特殊符號,並確認策略組本身有可用成員。修正後重新載入設定並測試新請求。
若仍無法判斷,可暫時用一條範圍明確的本機規則測試同一個目標,並與遠端清單結果對照。若本機規則命中而遠端規則不命中,優先檢查清單更新結果、內容格式與清單中是否確實包含該目標;若兩者都不命中,回頭確認設定檔、路由模式及測試目標。確認問題前不要大量刪除或重排原有規則,避免同時引入新的變因。