小火箭指定網站代理設定:DOMAIN-SUFFIX 與 FINAL,DIRECT 分流規則

使用 DOMAIN-SUFFIX、DOMAIN-KEYWORD 指定要走 PROXY 的網站,其餘流量交由 FINAL,DIRECT,並說明規則順序與驗證方式。

本文重點

Shadowrocket(小火箭)可設定「指定網域使用 PROXY,其餘請求使用 DIRECT」,依網站分流。本文適合已有自己的訂閱且可正常連線,但不希望所有網站都走代理的使用者。設定重點是啟用 Global Routing → Config、將目標網域規則排在前面,並以 FINAL,DIRECT 收尾;驗證時須一併檢查命中的規則、最終策略及網頁所需的其他網域。

一、確認使用 Config 模式,並檢查現有連線

規則只決定請求採用哪種策略,不會建立可用的代理連線。開始前,請先在 Home 確認已匯入自己的訂閱,且所選伺服器可以連線。本文不提供、販售或推薦節點或訂閱;範例僅示範本機規則結構,不含可連線的服務位址。

在 Home → Global Routing 選擇 Config,才會依目前設定中的規則分流。Proxy 是全程使用代理的模式,Direct 則是全程直連;兩者都不適合用來檢查本文的網域分流。Scene 用於選擇情境,並非本次基本驗證的入口,避免切換情境影響判斷。

購買用戶端與使用線路是兩回事:買斷用戶端 ≠ 購買線路方案。Shadowrocket 是閉源商業應用程式,僅於 Apple 平台發行,唯一取得管道為 App Store;iPhone、iPad 及其他相容裝置的系統需求,以 App Store 頁面標示為準。

二、基本規則:指定網域放前面,FINAL,DIRECT 放最後

以下程式碼是設定檔中的 [Rule] 區段,並非完整設定檔。example.com 和 example.net 是範例網域,請替換成實際需要分流的網域。請勿將整段程式碼貼到訂閱網址欄,也不要直接用它覆蓋含有 DNS、策略組等設定的完整設定檔。

[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。填寫時只輸入網域,不含 https://、連接埠、路徑或查詢參數。它不會因字串相似而比對到 notexample.com。

FINAL,DIRECT 表示前面的規則都未命中時使用 DIRECT。規則依序檢查,由最先命中的規則決定策略,因此 FINAL 應放在規則末尾。如果前面還有涵蓋範圍更廣的 PROXY 規則,相關請求就不會套用 FINAL;只修改最後一行,無法保證「其餘流量全部直連」。

先備份完整設定檔

在 Config 儲存原設定檔的副本,再修改工作副本。若現有設定含有多個規則區段、規則集參照或複雜策略,請先確認其順序與用途。不要為了套用三行範例,就直接刪除仍需使用的其他設定。

三、如何選擇 DOMAIN-SUFFIX 與 DOMAIN-KEYWORD

已知目標網站的主網域時,優先使用 DOMAIN-SUFFIX。DOMAIN-KEYWORD 是依網域字串進行關鍵字比對,涵蓋範圍通常較廣,並非辨識「網站名稱」。例如使用 example 作為關鍵字,可能也會將包含相同字串、但屬於其他業者的網域送往 PROXY。

規則比對範圍適用情況
DOMAIN,api.example.com,PROXY僅指定的完整網域只調整單一 API 網域
DOMAIN-SUFFIX,example.com,PROXY主網域及其子網域整個相同網域體系一併分流
DOMAIN-KEYWORD,example,PROXY網域中含有指定字串已確認涵蓋範圍的關鍵字規則

若確實需要關鍵字規則,可在 FINAL 前加入以下一行。請勿一次加入許多未經確認的關鍵字,否則一般網站也可能命中 PROXY,之後很難判斷是哪條規則擴大了涵蓋範圍。

DOMAIN-KEYWORD,example,PROXY

規則無法依完整網頁路徑區分同一網域下的頁面。造訪 https://example.com/news 與 https://example.com/account 時,DOMAIN-SUFFIX 看到的目標網域相同;不可把含路徑的 URL 填入這條規則,並期待它只代理其中一個頁面。

四、在 Config 中分五步套用規則

修改時盡量減少變因:使用同一部裝置、同一個網路和同一台已選取的伺服器,每次只修改一組規則。訂閱中的伺服器清單更新與編輯本機規則檔是兩回事;重新整理訂閱不代表已啟用剛修改的 Config。

  1. 備份設定檔

    進入 Config,找到目前使用的設定檔並儲存副本。記下原先選取的檔案,以便發生問題時切回原設定。

  2. 編輯規則

    開啟工作副本的編輯功能,找到 [Rule] 區段。將目標 DOMAIN-SUFFIX 規則放在可能與它衝突的廣泛規則之前;若只需要特定項目例外直連,則將較精確的 DOMAIN,DIRECT 規則排在前面。

  3. 檢查結尾規則

    確認規則末尾為 FINAL,DIRECT,並檢查前面是否仍有涵蓋所有請求或範圍過廣的 PROXY 規則。儲存後,在 Config 中啟用這份工作副本。

  4. 選擇模式

    返回 Home → Global Routing → Config,確認所選伺服器可用,再開啟連線。測試規則是否生效時,請勿停留在 Proxy 或 Direct 模式。

  5. 重新驗證

    關閉舊網頁連線後重新造訪;必要時重新建立 Shadowrocket 連線。在連線記錄中確認目標網域、命中的規則及最終策略,再測試一個未列入規則的網站。

五、驗證分流:查看請求,不只看網頁結果

一個頁面通常會向多個網域發出請求:頁面主體、圖片、指令碼、登入 API 和媒體資源使用的網域未必相同。主頁命中 PROXY,不代表所有依賴資源的請求也會命中同一條規則。若頁面能開啟但圖片未顯示,應先查看失敗資源實際使用的網域,而非立刻將 Global Routing 改為 Proxy 並長期使用。

發出請求 隧道接收 比對規則 選擇策略 連線至目標

這個流程說明兩件事:出現 VPN 圖示,只能表示系統隧道正在運作,無法證明每個請求都經過代理伺服器;DIRECT 請求也可能先進入隧道,再由 Shadowrocket 依規則直連目標。請勿把「連線開關已開啟」當作「所有網站都走代理」的證據。

網域規則也取決於請求中能取得的網域資訊。若 App 直接連線至 IP、使用快取位址或採用特殊解析方式,不要假設一定會命中 DOMAIN-SUFFIX。若要依 IP 分流,請另外確認 IP-CIDR 的網段範圍與順序;GEOIP 是依 IP 位址的地理位置比對,無法據此判斷網站營運者的所在地。

六、無法開啟時:區分 DNS 解析、連線與規則問題

以下是瀏覽器可能顯示的網路錯誤原文,並非 Shadowrocket 固定顯示的提示;不同瀏覽器的呈現方式可能不同。請先確認在哪個步驟發生錯誤,再決定是否修改規則。逾時不一定是規則錯誤,解析失敗也不代表伺服器無法使用。

ERR_NAME_NOT_RESOLVED

原因:瀏覽器無法完成目標網域解析,可能與網域拼寫或目前的 DNS 路徑有關。

解決方式:先確認網域是否正確,再檢查 Config 中現有的 DNS 設定與連線記錄;不要用新增更多 DOMAIN-SUFFIX 取代 DNS 問題排查。

ERR_CONNECTION_TIMED_OUT

原因:目標連線未能在等待時間內完成,可能與直連路徑、所選伺服器或目標網站有關。

解決方式:先確認該請求實際命中的策略,再分別檢查對應的連線路徑;若已命中 PROXY,優先確認 Home 中所選伺服器是否連線正常。

如果所有網站都走 PROXY,先檢查 Global Routing 是否仍設為 Proxy,再確認目標規則前方是否有範圍更廣的規則。如果所有網站都直連,先確認目前模式為 Config、工作副本已啟用,並檢查網域是否誤填成含通訊協定或路徑的 URL。

分別確認規則名稱與策略目標

PROXY 表示選擇代理策略,並非協定名稱。若原設定使用自訂策略組,請確認規則最後一欄所引用的名稱確實存在,並檢查組內實際選取的連線方式。Shadowsocks、VMess、VLESS、Trojan、Hysteria2、WireGuard 等連線協定的設定,不會因修改 DOMAIN-SUFFIX 這一行而變動。

七、指定網站分流常見問題

我只想讓一個子網域走代理,該怎麼寫?

在 [Rule] 中使用 DOMAIN,api.example.com,PROXY,並保留末尾的 FINAL,DIRECT。若前面有涵蓋該網域的 DIRECT 規則,請將這條精確規則移到它前面;不必因此加入整個主網域的 DOMAIN-SUFFIX。

整個網站走代理,但其中一個 API 要直連,怎麼設定?

先寫 DOMAIN,api.example.com,DIRECT,下一行再寫 DOMAIN-SUFFIX,example.com,PROXY。較精確的例外排前面,涵蓋範圍較廣的網域規則排後面,最後才是 FINAL,DIRECT。

更新訂閱後,還需要重新寫規則嗎?

先確認更新的是 Home 中的伺服器訂閱,還是 Config 中的遠端設定。前者通常會更新伺服器清單,後者則可能變更設定內容;更新遠端設定前請先保留本機副本,更新後重新檢查 [Rule]、目前啟用的檔案及策略組名稱,不要假設手動修改一定會保留。

FINAL,DIRECT 能保證其他請求都直連嗎?

它只會處理已進入目前規則流程、且未命中前面規則的請求。請先在 Home → Global Routing 選擇 Config,再檢查先前所有規則及其引用內容。它無法單獨保證整部裝置的所有網路行為,也不會指定 DNS 查詢必須採用哪種路徑。

最後保留一份能說明每條規則用途的設定檔:目標網域清單放前面,必要的精確例外排得更前,FINAL,DIRECT 放在最後。每新增一個網域,就進行一次目標測試和一次直連對照測試,比反覆切換全域模式更容易確認分流是否真正生效。

App Store 正版驗證