本文速覽

適合已有可用伺服器,且只想將指定網站交由 PROXY 處理的使用者。先將 Global Routing 設為 Config,再於目前啟用的配置檔 [Rule] 中加入網域規則,最後以 FINAL,DIRECT 處理其餘請求。下文提供比對結果、規則順序與驗證步驟;範例網域僅用於說明語法,不代表服務推薦。

1. 先確認 Global Routing 設為 Config

Shadowrocket 是透過 App Store 取得的 Apple 平台付費用戶端,主要適用於 iPhone 和 iPad;開發者為 Shadow Launch Technology Limited。系統需求請以 App Store 頁面標示為準。本文假設使用者已有自己的服務商與可用連線參數,不涉及服務選擇;購買用戶端與連線服務是兩回事。

規則即使設定正確,路由模式不符,也無法達成「指定網站走代理、其他網站直連」的結果。開啟 Home → Global Routing,確認目前選取的是 Config。此處的 Config 表示依照配置檔中的規則處理請求,請勿與底部用來管理檔案的 Config 頁面混淆。

Config

建議

依目前啟用配置檔中的規則選擇策略;本文的網域規則與 FINAL,DIRECT 會在此模式下生效。

適用情況:僅讓指定網站走 PROXY,其餘請求直連。

Proxy

將接管的流量交由代理處理,不會依本文規則逐項分流。暫時切換可協助判斷問題是否出在規則比對,但不能作為分流驗證結果。

適用情況:短暫檢查所選伺服器能否連線至目標。

Direct

將接管的流量直接連線,不會因配置中設定了 PROXY 就改走代理。

適用情況:對照裝置目前網路的直連狀況。

Global Routing 中的 Scene 可依情境切換,與本文固定使用的 Config 不同。初次驗證時先固定模式,避免情境切換影響路由結果。Settings → On Demand 用於管理依條件建立或中斷連線,不負責判斷特定網域是否走 PROXY。

2. 最精簡的規則段:網域在前,FINAL 在後

以下內容是規則段,不是包含所有設定的完整配置檔。請將它合併至現有配置的 [Rule] 中;若檔案已有此段落,請勿重複加入段落標題。修改前請先備份原配置,尤其不要連同 DNS 或其他設定一起覆蓋。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT

第一行網域規則會比對 example.com 及其子網域,例如 www.example.com、static.example.com。第二行則處理另一個網域群組。若兩個條件都不符合,請求就會套用 FINAL,DIRECT。實際使用時,請將範例網域換成要處理的網域,並保留英文逗號與策略關鍵字。

2 條
DOMAIN-SUFFIX 規則範例,分別涵蓋兩個網域群組。
1 條
將 FINAL,DIRECT 放在規則段末尾,處理未符合任何規則的請求。
3 個欄位
網域規則依序填入規則類型、比對值與目標策略。

3. DOMAIN-SUFFIX 與 DOMAIN-KEYWORD 的適用範圍

依網站分流時,建議優先使用界線明確的 DOMAIN-SUFFIX。若要精確比對單一完整主機名稱,可使用 DOMAIN;只有確實需要比對包含特定字串的網域時,才使用 DOMAIN-KEYWORD。關鍵字比對無法判定網站歸屬,也可能命中名稱相似但無關的網域。

依網域範圍比對

DOMAIN
www.example.com,PROXY
DOMAIN-SUFFIX
example.com,PROXY
FINAL
DIRECT

DOMAIN 只比對指定主機名稱;DOMAIN-SUFFIX 則同時涵蓋主網域及其子網域。

依字串包含比對

DOMAIN-KEYWORD
example,PROXY
會命中
myexample.org
FINAL
DIRECT

關鍵字比對範圍較廣。上方的 myexample.org 也包含 example,但並不屬於 example.com。

規則的比對值只填網域或關鍵字,不要填入完整網址。例如 example.com 是網域,example.com/account 則含有路徑,不應填入 DOMAIN-SUFFIX。網域規則也無法設定「同一網站只有登入頁走 PROXY,其他頁面直連」。

4. 由上而下比對:例外規則要放在寬泛規則前

規則並非「越具體就會自動優先」。同一個請求一旦符合前面的規則,其策略就會由該規則決定,後續規則不會再覆蓋。若希望 example.com 的大部分請求走 PROXY,但 status.example.com 直連,就要先設定這個主機名稱例外。

[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-KEYWORD,example,PROXY
FINAL,DIRECT
待比對網域第一條命中的規則結果
status.example.comDOMAIN 精確例外DIRECT
www.example.comDOMAIN-SUFFIXPROXY
myexample.orgDOMAIN-KEYWORDPROXY
example.orgDOMAIN-KEYWORDPROXY
example.netFINALDIRECT

此表是根據上方規則推導的預期結果,並非網路速度測試紀錄。也可以看出關鍵字比對很容易超出原本預期:example.org 同樣包含 example。若只需要比對 example.com 這個網域群組,刪除 DOMAIN-KEYWORD 即可,不必為了展示規則類型而保留。

5. 在 Config 中儲存、啟用並驗證

編輯檔案不代表該檔案已套用於目前連線。請依照以下順序操作,每次只調整一組規則;先驗證簡單網域,再新增例外與關鍵字。更新訂閱不代表本機 Config 規則已儲存或啟用,伺服器清單與配置檔也需要分別確認。

  1. 備份原始檔案

    前往 Config,找到目前使用的配置,先保留一份副本。確認接下來編輯的是可由本機掌控的檔案,避免遠端配置更新時覆蓋本機修改。

  2. 編輯規則段

    在 Config 中開啟目標檔案的編輯功能,找到 [Rule]。新增網域規則,將例外規則放在前面,並保留 FINAL,DIRECT 於末尾,然後儲存。

  3. 啟用目標配置

    返回 Config 檔案清單,確認剛才儲存的檔案已設為目前使用的配置。接著返回 Home → Global Routing,選擇 Config,而非 Proxy 或 Direct。

  4. 確認伺服器

    在 Home 確認目前選取的伺服器並建立連線。若先前有持續連線,請重新建立連線後再測試,以免舊連線影響判斷。

  5. 比對新的請求

    分別前往一個符合規則的網域和一個未符合規則的網域。在請求紀錄中確認目標主機、比對規則與連線策略;預期結果分別為 PROXY 和 DIRECT。

驗證時不要只看「網頁能不能開啟」。同一個網頁無論直連或透過代理,都可能正常顯示;伺服器延遲數值也無法證明該網頁使用了哪條規則。請查看實際新請求的比對資訊;若請求仍沿用舊連線,請關閉相關頁面後重新開啟,必要時重新建立應用程式連線再檢查。

6. GEOIP、IP-CIDR 與 DNS:何時需要排查

「只讓指定網站走 PROXY」的最精簡配置通常不需要加入 GEOIP。GEOIP,CN,DIRECT 是依目標 IP 的地區資訊判斷,不代表「中文網站直連」,也不表示某個網域的所有服務都位於同一地區。若將範圍較廣的 IP 規則放在網域規則前,可能會提前決定請求策略。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
FINAL,DIRECT

這個額外範例會明確讓目標位於 192.168.0.0/16 的請求直連。no-resolve 表示不會為了比對這條 IP 規則而主動解析網域,並非全面關閉 DNS。此範例已有 FINAL,DIRECT,IP-CIDR 對最終策略通常沒有必要;保留它只是為了說明 IP 規則的語法與適用範圍。

7. 常見設定錯誤與復原方式

排查時依序檢查「是否已啟用 → 是否命中 → 策略是否可用」。若同時修改 DNS、伺服器、規則和 On Demand,就無法保留有效的對照條件。先還原成容易判讀的三行最精簡規則,再逐項新增條件,會比不斷堆疊規則更容易找出問題。

狀況優先確認項目處理方式
所有新請求都走 PROXYGlobal Routing 是否設為 Proxy;前面是否有範圍較廣的代理規則切回 Config,檢查整個 [Rule] 的前置規則與末尾的 FINAL。
目標網域仍走 DIRECT目前使用的配置、規則位置、實際請求網域確認目前啟用的檔案,並將目標規則放在可能先命中的規則之前。
儲存規則後無法正常載入逗號、欄位數量、段落標題使用英文逗號;網域規則有三個欄位,FINAL 有兩個欄位。
已命中 PROXY,但連線失敗所選伺服器及其連線參數先確認代理連線可正常使用;規則命中不代表遠端連線成功。
之後發現修改內容消失是否編輯了會被遠端更新覆蓋的配置還原本機備份,並在獨立的本機配置中管理自訂規則。
FINAL,DIRECT 會讓代理中斷嗎?

不會。它會讓未命中規則的請求採用 DIRECT,並不等於中斷應用程式連線。是否建立連線與請求如何分流是兩個層面;On Demand 負責依條件觸發前者,規則則決定後者的策略。

需要分別為 Shadowsocks 或 VLESS 撰寫網域規則嗎?

不需要。網域規則描述比對條件與目標策略,不必針對每種伺服器協定重複撰寫。實際使用的連線協定由所選伺服器配置決定。更換伺服器後,仍應確認連線正常,再驗證相同規則的結果。

如何取消這次規則修改?

在 Config 中重新選取修改前儲存的配置副本,確認 Home → Global Routing 仍為預期模式,再重新建立連線。不要只刪除 FINAL,否則缺少明確的兜底規則,後續結果會更難確認。