適合已有可用伺服器,且只想將指定網站交由 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。實際使用時,請將範例網域換成要處理的網域,並保留英文逗號與策略關鍵字。
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,其他頁面直連」。
- 不加上通訊協定前綴,網域欄位中不要填入
https://。 - 不要加上
*.example.com這類星號;DOMAIN-SUFFIX 本身就會比對子網域。 - 網域欄位不包含連接埠;例如網頁使用 443 連接埠時,比對值仍是
example.com。 - 網站可能會呼叫獨立的圖片、登入或 API 網域;是否新增規則應以實際請求為依據,不要一味擴大關鍵字範圍。
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.com | DOMAIN 精確例外 | DIRECT |
www.example.com | DOMAIN-SUFFIX | PROXY |
myexample.org | DOMAIN-KEYWORD | PROXY |
example.org | DOMAIN-KEYWORD | PROXY |
example.net | FINAL | DIRECT |
此表是根據上方規則推導的預期結果,並非網路速度測試紀錄。也可以看出關鍵字比對很容易超出原本預期:example.org 同樣包含 example。若只需要比對 example.com 這個網域群組,刪除 DOMAIN-KEYWORD 即可,不必為了展示規則類型而保留。
5. 在 Config 中儲存、啟用並驗證
編輯檔案不代表該檔案已套用於目前連線。請依照以下順序操作,每次只調整一組規則;先驗證簡單網域,再新增例外與關鍵字。更新訂閱不代表本機 Config 規則已儲存或啟用,伺服器清單與配置檔也需要分別確認。
-
備份原始檔案
前往 Config,找到目前使用的配置,先保留一份副本。確認接下來編輯的是可由本機掌控的檔案,避免遠端配置更新時覆蓋本機修改。
-
編輯規則段
在 Config 中開啟目標檔案的編輯功能,找到 [Rule]。新增網域規則,將例外規則放在前面,並保留 FINAL,DIRECT 於末尾,然後儲存。
-
啟用目標配置
返回 Config 檔案清單,確認剛才儲存的檔案已設為目前使用的配置。接著返回 Home → Global Routing,選擇 Config,而非 Proxy 或 Direct。
-
確認伺服器
在 Home 確認目前選取的伺服器並建立連線。若先前有持續連線,請重新建立連線後再測試,以免舊連線影響判斷。
-
比對新的請求
分別前往一個符合規則的網域和一個未符合規則的網域。在請求紀錄中確認目標主機、比對規則與連線策略;預期結果分別為 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 規則的語法與適用範圍。
- 請求包含網域:先確認 DOMAIN 或 DOMAIN-SUFFIX 是否與紀錄中的主機名稱相符,不要根據網頁標題猜測網域。
- 請求只有 IP:可能缺少網域規則所需的資訊,不能假設 DOMAIN-SUFFIX 一定會命中;請檢查請求紀錄與解析狀況。
- 頁面部分內容載入:檢查是否使用獨立的資源網域。例如主頁命中 PROXY,不代表另一個網域提供的圖片或登入 API 也會命中。
- 直接連線至 IP:網域規則不會只憑網站歸屬辨識 IP。確實需要 IP 規則時再使用 IP-CIDR,不要任意將整段公用位址範圍加入 PROXY。
7. 常見設定錯誤與復原方式
排查時依序檢查「是否已啟用 → 是否命中 → 策略是否可用」。若同時修改 DNS、伺服器、規則和 On Demand,就無法保留有效的對照條件。先還原成容易判讀的三行最精簡規則,再逐項新增條件,會比不斷堆疊規則更容易找出問題。
| 狀況 | 優先確認項目 | 處理方式 |
|---|---|---|
| 所有新請求都走 PROXY | Global Routing 是否設為 Proxy;前面是否有範圍較廣的代理規則 | 切回 Config,檢查整個 [Rule] 的前置規則與末尾的 FINAL。 |
| 目標網域仍走 DIRECT | 目前使用的配置、規則位置、實際請求網域 | 確認目前啟用的檔案,並將目標規則放在可能先命中的規則之前。 |
| 儲存規則後無法正常載入 | 逗號、欄位數量、段落標題 | 使用英文逗號;網域規則有三個欄位,FINAL 有兩個欄位。 |
| 已命中 PROXY,但連線失敗 | 所選伺服器及其連線參數 | 先確認代理連線可正常使用;規則命中不代表遠端連線成功。 |
| 之後發現修改內容消失 | 是否編輯了會被遠端更新覆蓋的配置 | 還原本機備份,並在獨立的本機配置中管理自訂規則。 |
FINAL,DIRECT 會讓代理中斷嗎?
不會。它會讓未命中規則的請求採用 DIRECT,並不等於中斷應用程式連線。是否建立連線與請求如何分流是兩個層面;On Demand 負責依條件觸發前者,規則則決定後者的策略。
需要分別為 Shadowsocks 或 VLESS 撰寫網域規則嗎?
不需要。網域規則描述比對條件與目標策略,不必針對每種伺服器協定重複撰寫。實際使用的連線協定由所選伺服器配置決定。更換伺服器後,仍應確認連線正常,再驗證相同規則的結果。
如何取消這次規則修改?
在 Config 中重新選取修改前儲存的配置副本,確認 Home → Global Routing 仍為預期模式,再重新建立連線。不要只刪除 FINAL,否則缺少明確的兜底規則,後續結果會更難確認。