Shadowrocket 部分網站代理設定:DOMAIN-SUFFIX 與 FINAL,DIRECT 規則範例

本文示範如何設定指定網域走 PROXY、其他連線一律 DIRECT,並說明規則比對順序、關鍵字選擇,以及如何確認設定是否生效。

本文重點

適合已在 Shadowrocket(小火箭)設定好可用連線,只想讓少數網站透過代理的使用者。操作重點:在 Config 的有效設定檔加入網域規則,將 FINAL,DIRECT 放在末尾,再把 Home → Global Routing 設為 Config。接著查看請求記錄中的網域、命中規則與實際策略;不要只憑網頁能否開啟,判斷設定是否生效。

一、先分清規則分流與全域模式

「只有部分網站走代理」包含兩個條件:目標網域命中 PROXY,其他請求則套用 DIRECT。前者由網域規則決定,後者由最後的 FINAL 規則兜底。兩者都必須在目前連線依設定檔規則運作時才有效;若 Global Routing 選擇 Proxy 或 Direct,單獨修改規則檔不會得到本文所述的分流結果。

Global Routing 選項判斷方式本文建議操作
Config依目前設定檔中的規則決定策略。選擇此項,驗證網域規則。
Proxy以代理模式處理流量,不會依本文的網域白名單分流。不要用這個選項驗證 FINAL,DIRECT。
Direct以直連模式處理流量。不要把直連結果誤認為網域規則失效。
Scene依已設定的情境條件決定行為。初次排查時先切換至 Config,減少情境切換造成的影響。

本文中的 PROXY 代表代理策略,DIRECT 代表直接連線至目標。開始前,先確認 Home 中選取的代理連線可正常使用。若目前設定使用自訂策略群組,請確認規則末尾引用的策略名稱確實存在,不要直接貼上其他設定中的群組名稱。

2 類
目標結果:指定網域走 PROXY,其餘走 DIRECT
1 條
FINAL 兜底規則,放在規則段末尾
3 組
驗證對象:目標網域、無關網域、例外網域

二、DOMAIN-SUFFIX 搭配 FINAL,DIRECT 的完整規則段

以下是用於說明語法的完整 [Rule] 段落,不是包含連線參數、DNS 等設定的完整設定檔。example.com 和 example.net 是文件示範網域,請替換成實際需要代理的網站網域;示範網域並非可用服務。

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

DOMAIN-SUFFIX,example.com,PROXY 會比對 example.com 本身及其子網域,例如 www.example.com 和 api.example.com。它不會把 notexample.com 或 example.com.other.net 視為相同的網域後綴。此處比對的是網域,不是網址中的任意文字。

三、依序套用規則,不只是儲存文字

以下依 Home、Config、Settings 的介面架構說明操作流程。各平台的編輯入口可能不同,但都要完成「編輯檔案、儲存、設為目前使用的設定檔、以 Config 模式執行」四個步驟。訂閱提供連線資訊,規則設定是否啟用則是另一件事,兩者需分開確認。

  1. 備份設定檔

    進入 Config,先保留目前檔案的副本或匯出備份。記下正在使用的設定檔,避免修改了另一個檔案,連線時卻仍使用舊設定。

  2. 整理規則

    開啟預計使用的檔案編輯入口,找到 [Rule]。加入需要的 DOMAIN-SUFFIX 規則,檢查既有規則,並將 FINAL,DIRECT 留在末尾。

  3. 啟用檔案

    儲存修改,並在 Config 中確認該檔案已設為目前使用的設定檔。若檔案來自遠端更新,請先確認後續更新是否會覆寫本機修改。

  4. 切換模式

    返回 Home → Global Routing,選擇 Config,再確認 Home 中選取的代理連線可正常使用並啟動連線。

  5. 重新建立請求

    在可中斷連線的情況下重新連線,關閉原有網頁後再開啟,以產生新的網路請求,接著查看請求記錄中的比對結果。

既有訂閱連結請向你的服務商取得。修改分流規則不需要反覆刪除訂閱,也不要把訂閱網址貼到 DOMAIN-SUFFIX 的網域欄位。Settings → On Demand 負責自動連線條件,不負責決定特定網域走 PROXY 或 DIRECT;排查期間請留意它是否再次觸發連線,以免將自動連線誤認為規則有所變動。

四、如何選擇 DOMAIN 與 DOMAIN-SUFFIX,以及例外規則的放置位置

規則會由上而下依序比對,第一條命中的規則會決定該請求使用的策略。因此,「整個網站走代理,但特定子網域直連」時,較精確的例外規則要放在前面。以下設定讓 status.example.com 直連,其他屬於 example.com 的網域走代理。

[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
規則關鍵字適用範圍此情境的注意事項
DOMAIN精確比對單一網域。只代理特定主機,或為某個子網域設定例外。
DOMAIN-SUFFIX比對網域本身及其子網域。適合讓網站主網域及相同後綴的服務一併分流。
IP-CIDR比對 IPv4 位址網段。適合指定明確的位址範圍,無法用來比對網站路徑。
GEOIP依目標 IP 的地理位置比對。不依據頁面內容、網域後綴或使用者所在地判斷。
FINAL處理未命中前面規則的請求。本文使用 DIRECT,末尾不再新增其他規則。

例如 IP-CIDR,192.168.0.0/16,DIRECT,no-resolve 代表比對此私有位址範圍並直連;no-resolve 可避免僅為比對這條 IP 規則而進行網域解析。它不是所有規則都必須加上的參數,也無法解決網站使用其他資源網域的問題。

判斷重點:網域白名單不必先設定地理位置分流

如果目標是「只有清單中的網域走代理」,先設定精確例外、網域代理規則和 FINAL,DIRECT 即可。加入 GEOIP 或範圍較廣的 IP 代理規則前,先釐清它會改變哪些請求,否則「其餘全部直連」的範圍可能被較早命中的規則改變。

五、確認規則是否生效:比對網域、規則與策略

網頁成功開啟不代表連線走了代理,無法開啟也不代表規則沒有命中。即使規則選擇正確,代理連線、目標服務、DNS 或 TLS 仍可能發生問題。驗證時應查看應用程式提供的請求記錄或連線詳細資料,對照新請求的目標網域、命中規則和最終策略;記錄入口與欄位顯示方式依目前平台介面為準。

測試輸入預期命中規則預期策略
www.example.comDOMAIN-SUFFIX,example.comPROXY
status.example.comDOMAIN,status.example.comDIRECT
www.example.orgFINALDIRECT

上表是規則推演,不代表已實際連線測試示範網站。實際驗證時,請改用自己有權存取的真實網域,並逐一建立新連線。瀏覽器可能沿用既有連線,也可能直接顯示快取內容;修改設定後只查看原頁面,未必會產生可用來驗證新規則的請求。

六、網頁只載入一部分或連線錯誤的排查方式

網站頁面可能同時向主站、登入網域、靜態資源網域和影片網域發出請求。主網域走代理,不代表所有資源都使用相同後綴。例如頁面還會連線至 assets.example.net,只設定 DOMAIN-SUFFIX,example.com,PROXY 並不會涵蓋它。請先從失敗的請求確認實際網域,再決定是否新增規則,不要憑猜測擴大代理範圍。

錯誤:connection refused

原因:連線目標的連接埠遭到拒絕,可能發生在代理伺服器端或直連目標端。處理方式:先確認該筆記錄的策略與遠端位址;若使用 PROXY,依既有服務資料檢查伺服器位址和連接埠,不要只為了消除錯誤就把所有網域改成走代理。

錯誤:i/o timeout

原因:網路操作未能在期限內完成,僅憑這則訊息無法判斷問題出在規則、連線路徑或目標服務。處理方式:先確認規則是否命中,再分別測試目前的代理連線與同一目標的新請求,每次只變更一個條件。

錯誤:no such host

原因:網域解析未取得可用結果,可能是拼字錯誤或 DNS 查詢失敗。處理方式:確認實際請求的網域與目前 DNS 設定;先排除解析問題,再觀察請求命中 DOMAIN-SUFFIX 還是 FINAL。

以上是網路記錄中常見的錯誤訊息片段。完整訊息可能包含位址、連接埠及其他上下文,各平台顯示的彈出訊息也不一定完全相同。若要提供記錄以協助排查,請保留時間、目標網域、規則與策略;分享前移除訂閱權杖、密碼及其他連線憑證。

七、常見問題:路徑分流、更新覆寫與直連範圍

只想讓單一網站的 /video 路徑走代理,可以寫進規則嗎?

DOMAIN-SUFFIX 無法依 URL 路徑分流。它比對的是網域,不會把 /video 當成比對欄位;HTTPS 路徑也不是一般網域規則可直接使用的資訊。請先確認服務是否使用獨立子網域;若有,可用 DOMAIN 精確比對該子網域。

已設定 FINAL,DIRECT,為什麼其他網站還是走代理?

先在 Home → Global Routing 確認已選擇 Config,再檢查 FINAL 之前的規則。較早命中的 DOMAIN-SUFFIX、IP-CIDR、GEOIP 或規則集,都可能先決定策略。FINAL 只處理剩餘請求,不會覆蓋先前已命中的結果。

昨天還有效,更新設定後規則怎麼不見了?

在 Config 中開啟目前使用的檔案,搜尋新增的網域規則。遠端設定更新可能會取代本機文字;請保留獨立的本機設定檔副本,並在更新前後核對規則。不要將連線訂閱重新整理與遠端規則檔更新混為一談。

其餘流量設為 DIRECT,是否代表其他應用程式都不走代理?

這代表進入目前規則處理流程、且未命中前面規則的請求會使用 DIRECT,不代表裝置的所有流量都一定如此。請依應用程式實際產生的請求記錄核對;也要檢查是否有其他系統代理、VPN 或應用程式內的代理設定影響測試環境。

完成後請保留一份可重現的最精簡規則:需要代理的網域、必要的精確例外,以及末尾的 FINAL,DIRECT。之後每新增一個網站,都重複「建立新請求、查看命中規則、檢查策略」的流程。若要了解更多規則類型,請參閱規則參考;術語說明可查閱術語手冊。

下載 Shadowrocket