本文適合已在 Shadowrocket(小火箭)匯入自己的伺服器設定,並希望只讓指定網站使用 PROXY 的使用者。操作重點是啟用 Global Routing → Config,在目前設定中先列出目標網域,再以 FINAL,DIRECT 處理其餘請求;完成後查看請求記錄,確認實際命中的規則,不要只憑連線圖示判斷分流結果。
一、先確認 Global Routing 與設定檔的分工
「只讓指定網站走 PROXY」是依規則分流,並非開啟連線開關就會自動完成。Home 中選取的伺服器提供代理出口,Config 中啟用的設定檔則決定哪些請求使用這個出口。本文以使用者已有自己的服務供應商與訂閱為前提,不涉及連線資源的取得。
在 Home 開啟 Global Routing,選擇 Config,再確認 Config 中目前啟用的設定檔。Proxy 會將可由此模式處理的流量交由代理,Direct 則直接連線;這兩種模式都不適合用來驗證本文的逐條規則。Scene 用來依情境選擇路由方式,初次排查時請先固定使用 Config,減少切換情境造成的變數。
PROXY 是規則中的策略名稱,Global Routing 中的 Proxy 則是路由模式,兩者不可混淆。DIRECT 表示直接連線至目標,並不代表請求未經過系統 VPN 隧道。狀態列出現 VPN 標示,只能表示隧道已連線,無法證明特定網站使用代理出口。
- Home:選取已可使用的伺服器,並確認連線開關已開啟。
- Home → Global Routing → Config:讓目前設定檔中的規則參與分流。
- Config:確認啟用的是準備編輯的檔案,而非另一份同名設定檔。
- Settings → On Demand:控制依需求建立連線的行為,不會取代網域分流規則。
二、設定最精簡規則:指定網域 PROXY,其餘 DIRECT
編輯前請先備份目前的設定檔,保留可還原的副本。以下是規則結構範例,example.com 是說明用的示例網域,請替換成確實需要比對的網站網域。它不是訂閱網址,也不是伺服器位址。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
每一行的欄位以英文逗號分隔。第一行的 DOMAIN-SUFFIX 會比對 example.com 本身及其子網域,例如 www.example.com 和 static.example.com,但不會比對 notexample.com。最後一行 FINAL,DIRECT 不再檢查網域條件,而是將先前未命中的請求交由 DIRECT 處理。
- 進入 Config,找到目前啟用的設定檔,先儲存備份或建立副本。
- 開啟該設定檔的編輯功能,找到 Rule 對應的規則內容;若使用文字編輯器,請搜尋
[Rule]。 - 將目標網域規則放在可能涵蓋該網域的廣泛規則之前,並將
FINAL,DIRECT放在規則最末端。 - 儲存並啟用這份設定檔,返回 Home,再次確認 Global Routing 設為 Config。
- 重新發出測試請求;若仍看到舊連線的行為,請結束原有連線後再測試,必要時重新連線隧道。
不要將整段內容重複附加到設定檔末尾,以免出現多個 [Rule] 區段或多個 FINAL。也請確認 PROXY 指向的出口可正常使用;規則只決定流量去向,無法修復伺服器無法連線、認證資訊錯誤或伺服器端設定不一致等問題。
三、如何選擇 DOMAIN-SUFFIX 或 DOMAIN-KEYWORD
只處理少數明確的網站時,建議先使用 DOMAIN-SUFFIX。它依網域邊界比對,比關鍵字搜尋更容易控制涵蓋範圍。若只要處理單一主機、不包含其其他子網域,可使用 DOMAIN 精確比對。
依網域邊界比對
- 關鍵字
- DOMAIN-SUFFIX
- 完整規則
DOMAIN-SUFFIX,example.com,PROXY- 命中範例
- example.com、img.example.com
- 未命中範例
- notexample.com
適合已知網站主網域,且需要涵蓋其子網域的情況。
依網域字串比對
- 關鍵字
- DOMAIN-KEYWORD
- 完整規則
DOMAIN-KEYWORD,example,PROXY- 命中範例
- example.com、notexample.com
- 範圍風險
- 可能涵蓋不相關網站
關鍵字比對不會辨識品牌,必須查看請求記錄,確認實際涵蓋範圍。
DOMAIN-KEYWORD 會檢查網域中是否包含指定字串,不會搜尋完整 URL。例如 https://www.example.com/video?id=8 中的路徑 /video 和查詢參數 id=8 都不是此規則的比對對象。將 https://、路徑或頁面標題填入網域欄位,無法達成依網頁路徑分流的效果。
[Rule]
DOMAIN,login.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
這組規則明確保留一個例外:login.example.com 直連,其他屬於 example.com 的網域則使用 PROXY。若同一份設定檔也加入了涵蓋範圍較廣的 DOMAIN-KEYWORD,請重新確認它是否也包含原本希望直連的網站。
四、規則順序:先處理例外,再處理一般條件
規則會依順序逐一檢查,請求命中後便採用相應策略,不會因後面出現更精確的條件而自動改判。因此,依「精確例外在前、範圍規則在後、FINAL 放最後」排列,會更容易維護。
| 排列方式 | 請求網域 | 預期結果 |
|---|---|---|
| DOMAIN 精確例外排在 DOMAIN-SUFFIX 前 | login.example.com |
先命中例外,使用 DIRECT |
| DOMAIN-SUFFIX 排在精確例外前 | login.example.com |
先命中後綴規則,使用 PROXY |
| FINAL 排在目標網域規則前 | www.example.com |
先由 FINAL 處理,後續規則不會命中 |
| 只有目標後綴規則與末尾的 FINAL,DIRECT | www.example.net |
未符合目標後綴,最後使用 DIRECT |
判斷方式:從第一條規則開始代入待測網域
遇到第一條符合的條件時,記下它所套用的策略;若已得出結果,請先調整該規則的位置或涵蓋範圍,不要繼續在清單末尾追加補救規則。
GEOIP 與 IP-CIDR 處理的條件不同於網域規則。GEOIP 依目標 IP 的地理資料庫判定結果比對,IP-CIDR 則依位址範圍比對;兩者都無法精確表示「某個網站品牌」。同一網站可能使用不同地區的位址,同一個位址也可能承載多個網站。
GEOIP,CN,DIRECT:比對資料庫判定為 CN 的目標 IP;若精簡設定的末尾已是 FINAL,DIRECT,通常不必為了「其餘直連」另外加入此規則。IP-CIDR,192.0.2.0/24,DIRECT,no-resolve:語法範例,該位址範圍僅供文件說明;no-resolve表示不會為此 IP 規則主動觸發網域解析。- 若將涵蓋範圍較廣的 IP 條件放在網域例外之前,請留意其解析與比對方式,避免請求先被其他條件處理。
五、儲存後如何驗證,而非只看網頁能否開啟
網頁能順利開啟,只能表示請求有可用的連線路徑,不能證明出口正確。建議先用一個目標網域和一個非目標網域進行對照,再逐步增加子網域與例外網域。以下是驗收條件,不代表任何網路環境的測速結果。
- 在 Home 確認已選取可用伺服器、Global Routing 設為 Config,且連線已建立。
- 開啟目前的請求記錄或連線詳細資料,清除篩選條件,再重新瀏覽目標頁面,避免將舊記錄誤認為新的結果。
- 搜尋目標主機名稱,確認命中的規則與出口策略。目標網域應命中指定的 DOMAIN 或 DOMAIN-SUFFIX,並使用 PROXY。
- 瀏覽一個未列入規則的網域,確認由 FINAL,DIRECT 處理。若命中其他規則,請返回 Config 檢查前面的項目。
- 測試例外網域與目標子網域,最後再開啟完整頁面,確認圖片、登入與影片請求各自符合預期。
一個頁面不等於一個網域。頁面內容、靜態資源、登入介面與媒體內容可能來自不同主機。若首頁正常但圖片無法顯示,請先在請求記錄中找出失敗資源的實際網域,再決定是否新增規則;不要直接將涵蓋範圍過廣的短關鍵字加入設定。
六、常見問題:修改規則後仍不如預期
為什麼加入 FINAL,DIRECT 後,許多網站仍走 PROXY?
先在 Home → Global Routing 確認已選擇 Config,再查看請求命中的第一條規則。若前面仍有指向 PROXY 的 DOMAIN-KEYWORD、規則集或 IP 條件,請調整這些項目;FINAL 只會處理前面尚未處理的請求。
只想讓一個子網域走代理,如何避免涵蓋整個網站?
使用 DOMAIN,video.example.com,PROXY,並在末尾保留 FINAL,DIRECT。同時檢查並移除與目標衝突、涵蓋範圍較廣的後綴或關鍵字規則,再分別測試 video.example.com 與 www.example.com。
更新自己的訂閱後,為什麼出口或設定檔的行為改變了?
請先區分伺服器訂閱更新與遠端設定檔更新。前者可能改變可選伺服器,後者則可能修改 Rule。返回 Home 確認選取的伺服器,再到 Config 確認啟用的檔案與規則內容;請將本機修改保存在獨立副本中,並比較更新前後的差異。
必須關閉 On Demand 才能分流嗎?
不需要。Settings → On Demand 決定何時依條件建立連線,Config 中的 Rule 則決定連線建立後如何分流。排查時可暫時手動連線,固定測試條件;確認規則有效後,再恢復適合自身網路環境的 On Demand 設定。
維護時一次只修改一個變數:先確認出口可用,再確認模式,接著檢查啟用的檔案、比對條件與規則順序。為新增的網域規則記下原因,並保留一組固定的測試目標。發生異常時,就能還原最近一次變更,不必重寫整份設定檔。
- 最精簡設定:指定網域使用 PROXY,末尾加上 FINAL,DIRECT。
- 範圍選擇:明確的網域優先使用 DOMAIN 或 DOMAIN-SUFFIX,謹慎使用 DOMAIN-KEYWORD。
- 驗證依據:請求記錄中的目標、命中規則與實際出口,三者應一致。