若要讓 Shadowrocket(小火箭)只代理指定網站,必須同時符合三個條件:目標網域的規則指向 PROXY、規則末尾使用 FINAL,DIRECT,並在 Home → Global Routing 選擇 Config。本文假設你已有自己的服務商與訂閱,且已匯入可用伺服器,將說明最精簡的規則、設定步驟與逐項驗證方法;不會只憑「連線開關已開啟」就判定分流正確。
一、先選擇 Config,再設定網域規則
Global Routing 決定連線採用哪一種路由方式。只代理少數網站,適合使用設定檔分流;請先在 Home → Global Routing 選擇 Config。若只編輯規則,卻維持 Proxy 或 Direct,就無法依本文的規則清單驗證結果。
Config
建議使用依目前啟用設定檔中的規則選擇策略。目標網域可指向 PROXY,未命中前置規則的請求則由 FINAL,DIRECT 處理。
適用情境:只代理指定網站,其餘請求直連。
Proxy
採用代理路由,而非依本文列出的網域逐一決定是否直連。可暫時用來檢查伺服器是否可用,但不能據此證明網域規則正確。
適用情境:暫時檢查代理連線,再切回 Config 驗證分流。
Direct
採用直連路由,不會因為本文寫了某條 PROXY 規則,就自動改為依規則分流。
適用情境:檢查目前網路的直連狀況。
Scene
用於情境路由,結果取決於實際的情境設定。這不是本文用來驗證固定網域清單的入口;若已設定情境,需另外確認。
適用情境:已明確設定情境條件的使用方式。
結論:先固定路由方式
排除問題時,先將 Global Routing 固定為 Config,每次只修改一條網域規則。如此才能分辨是規則未命中,還是代理連線本身無法使用。
本文中的 PROXY 是規則所用的代理策略,不是要你把 Global Routing 改成 Proxy。前者決定命中某條規則後的連線去向;後者決定全域採用哪種路由方式,兩者作用層級不同。
二、最精簡規則:目標列前面,FINAL,DIRECT 列最後
以下是只示範規則區段的最精簡範例,使用保留的示例網域,不代表有可用服務。實際編輯時,請將網域換成需要代理的網站主機名稱;既有設定檔中的其他必要區段應予保留,勿用這幾行覆蓋整份設定檔。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN,api.example.net,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 會比對 example.com 及其子網域,例如 www.example.com。DOMAIN,api.example.net,PROXY 只會比對這個完整主機名稱,不包含 www.example.net,也不包含其下層子網域。
規則會由上而下比對,命中後依對應策略處理。FINAL,DIRECT 不帶網域參數,表示先前未命中的請求使用 DIRECT。若將它放在目標網域規則之前,後面的目標規則就無法發揮預期作用。
三、從 Config 編輯到 Home 啟用的操作順序
伺服器資料與路由設定是不同項目。Home 中已有可用伺服器,不代表 Config 中的網域規則已啟用;更新既有訂閱,也不等於自動建立本文所述的分流清單。開始前請先備份目前的設定檔,以便還原。
-
備份設定檔
進入 Config,確認目前使用的設定檔,並先保留副本。若設定檔來自遠端更新,請另存一份可編輯的本機副本,避免手動修改內容在下次更新時被覆蓋。
-
編輯規則
在 Config 開啟目標設定檔的編輯頁面,檢查 [Rule]。將需要代理的 DOMAIN 或 DOMAIN-SUFFIX 規則放在預設規則之前,並以 FINAL,DIRECT 作為最後一條。文字編輯或逐條編輯的入口,請以 App 目前顯示為準。
-
啟用設定檔
儲存後回到 Config,確認剛才編輯的檔案已選用。不要只停留在編輯頁面,也不要只憑檔名判斷;若有多個名稱相近的檔案,請重新開啟所選檔案核對內容。
-
選擇模式
返回 Home → Global Routing → Config,再回到 Home 選擇現有且可用的伺服器。本文的 PROXY 規則需要有實際可用的代理出口;若設定檔另有同名策略群組,也請一併確認該群組的選擇。
-
發出新請求
開啟連線開關,重新發出目標網站與非目標網站的請求。必要時先中斷舊連線再測試;已建立的連線不適合用來判斷剛修改的規則是否生效。
若原設定檔包含額外策略群組或複雜規則集,請先了解其用途再調整。這次的重點不是增加更多規則,而是確保目標網域能先命中 PROXY,其餘請求最後由 DIRECT 處理。請勿同時更換伺服器、修改 DNS 和多條規則,否則出現差異時難以判斷原因。
四、網域怎麼填:不填路徑,也不填連接埠
DOMAIN 與 DOMAIN-SUFFIX 比對的是主機名稱,不是瀏覽器網址列中的完整網址。瀏覽使用 HTTPS 的網站時,常見目標連接埠為 443,但不應將 :443 加進網域欄位。請求路徑與查詢參數也不屬於此欄位。
| 寫法 | 比對範圍或問題 | 判斷方式 |
|---|---|---|
DOMAIN,example.com,PROXY | 只比對 example.com | 只需要這個完整主機名稱時使用 |
DOMAIN-SUFFIX,example.com,PROXY | 比對根網域及其子網域 | 需要同時涵蓋 www、api 等子網域時使用 |
DOMAIN-SUFFIX,notexample.com,PROXY | 與 example.com 是不同網域 | 網域後綴比對不是任意字串包含 |
https://example.com/path | 包含通訊協定與路徑,並非網域欄位 | 只取出 example.com 填入規則 |
example.com:443 | 附帶連接埠,不是此處的主機名稱格式 | 移除連接埠後再填寫 |
瀏覽一個網頁時,通常會向多個主機名稱發出請求:主文件、圖片、登入驗證、影片或靜態資源可能使用不同網域。為根網域新增 DOMAIN-SUFFIX,只能涵蓋其子網域,無法涵蓋網站使用的所有第三方資源網域。因此,「首頁能開啟但圖片沒有顯示」不一定代表規則未生效,也可能是資源請求不在清單內。
- 先加入需要代理的主要網站網域,再依據實際請求記錄補上必要的資源網域。
- 只需要比對單一主機名稱時,優先使用 DOMAIN,避免將同一網域下不相關的服務一併納入。
- 不要使用
com這類範圍過廣的後綴作為目標,否則大量不相關網站也會命中 PROXY。 - IP-CIDR 依 IP 網段比對,GEOIP 依 IP 地理資料庫比對;兩者都不能直接取代精確的網站網域清單。
若請求直接連線至 IP 位址,或比對時沒有可用的網域資訊,網域規則可能不會命中,最後會套用 FINAL。不要只因為目標網站使用某個 IP,就把整個網段加入 PROXY;共用位址可能也服務其他網站。
五、驗證方法:檢查目標、對照與資源請求
驗證分流要確認新請求的實際去向,不應只看頁面能否開啟或系統是否顯示連線標記。頁面能開啟只代表這次瀏覽成功;快取、可直連的網路,以及已建立的連線,都可能讓錯誤的分流設定看起來正常。
- 目標組:選擇實際加入規則的網域,並發出新請求。在 App 的請求記錄中核對主機名稱、命中的規則與策略;預期目標請求應對應 PROXY。
- 對照組:造訪一個未列入目標清單,而且目前網路可直接連線的網站。預期在未命中其他前置規則時,會由 FINAL,DIRECT 處理。
- 資源組:若目標頁面未能完整載入,請查找失敗請求的實際主機名稱。它可能與網址列中的網域不同;確認確實需要代理後,再單獨加入規則。
- 重新測試:每次修改一條規則後,都要重新發出目標與對照請求。不要將先前建立的長連線當成本次修改的驗證結果。
若目標請求已命中 PROXY,卻仍然逾時,請先檢查 Home 中選用的伺服器是否可用,以及既有服務資料中的伺服器位址、連接埠與認證資訊是否正確。若記錄顯示 DIRECT,再回頭檢查規則順序、實際請求網域及啟用中的設定檔。如此可避免把連線故障誤認為規則語法問題。
六、常見問題:為什麼還是全部走代理或全部直連?
加上 FINAL,DIRECT 後,為什麼其他網站仍走代理?
先檢查 Home → Global Routing 是否選為 Config,再確認 [Rule] 中 FINAL 之前是否有比對範圍更廣的 PROXY 規則或規則集。規則命中後即停止比對;最後的 DIRECT 不會推翻先前已做出的比對結果。
指定網站也走 DIRECT,是網域填錯了嗎?
先確認 Config 目前選用的檔案,再確認目標規則是否位於 FINAL 之前。接著查看實際請求的主機名稱:網站可能已轉址至其他網域。DOMAIN 只比對完全相符的主機名稱;若要同時比對根網域和子網域,請改用 DOMAIN-SUFFIX。
首頁可以開啟,但登入或圖片一直失敗?
重新觸發登入或圖片請求,並從記錄中找出失敗的主機名稱。先確認目前採用 DIRECT 還是 PROXY;只有確定網域漏列時,才補上對應網域。不要只為了一個資源請求,就將規則擴大到整個公開後綴。
更新訂閱後,手動撰寫的規則會改變嗎?
伺服器訂閱與設定檔更新要分開判斷。只更新伺服器清單,不代表本機 [Rule] 會被改寫;若更新的是包含規則的遠端設定檔,手動編輯內容則可能被取代。請在 Config 重新開啟目前使用的檔案核對,並保留獨立的本機副本。
需要開啟 On Demand 才能只代理幾個網站嗎?
不需要。Settings → On Demand 用於管理隨選連線,不負責列出哪些網域走 PROXY。請先在連線已建立的狀態下使用 Config 驗證規則,再依個人連線需求另行設定 On Demand,避免同時變動兩個因素。
最後請保留一份通過目標與對照測試的設定檔。之後新增網站時,只加入明確需要的網域,並保留末尾的 FINAL,DIRECT;刪除目標時,也要重新測試該網域是否已改為直連。維護規則清單時應以實際請求為依據,而不是網站顯示名稱。