本文快速導覽

Shadowrocket(小火箭)要設定部分網站走代理,需同時符合三個條件:Global Routing 設為 Config、目標網域規則排在兜底規則之前,並以 FINAL,DIRECT 作為最後一條規則。本文適合已匯入自有連線服務的使用者,提供精簡規則範例、設定步驟,以及透過請求記錄驗證的方法;範例網域僅用於說明語法,並非連線服務位址。

一、先分清 Global Routing 與規則策略

「只讓指定網站走代理」並不會在 Home 選取連線後自動生效。Home 的連線選擇決定代理出口,Global Routing 則決定請求如何分流。使用規則時,先將 Global Routing 設為 Config,再確認 Config 選取了實際要使用的設定檔。修改未啟用的檔案,不會改變目前連線的處理方式。

4 種
Global Routing 模式:Proxy / Direct / Config / Scene
3 項
常見網域規則欄位:類型、比對值、策略
最後 1 條
本例以 FINAL,DIRECT 處理未命中的請求

Proxy 用於全域代理,Direct 用於全域直連;只有 Config 會依目前設定檔中的規則逐項判斷。Scene 用於場景設定,並非本文規則的必要條件。排查期間固定使用 Config,避免場景切換影響觀察結果。

二、精簡寫法:DOMAIN-SUFFIX 後接 FINAL

以下範例表示「example.com 及其子網域走 PROXY,其餘請求走 DIRECT」。這是設定檔中的規則片段,不是包含伺服器參數的完整設定檔。若編輯器已顯示獨立的規則清單,請新增兩條規則,不要把區段標題當成規則加入。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
內容用途注意事項
[Rule]標示文字設定中的規則區段。在現有設定檔中找到對應區段,避免重複建立。
DOMAIN-SUFFIX比對指定網域及其子網域。example.com 也會比對 www.example.com。
PROXY將符合條件的請求交由代理策略處理。目前代理出口必須已設定且可連線。
FINAL,DIRECT前面的規則都未符合時,改走直連。FINAL 只有策略欄位,沒有網域欄位。

網域欄位不要填入 https://、路徑、查詢參數或連接埠。例如網址中即使包含 /watch?id=1,規則仍只填網域。DOMAIN-SUFFIX 不必寫成 *.example.com;它會依網域邊界比對,不會因另一個網域只是包含相同字母就符合。

如果只想代理某個完整主機名稱,不涵蓋整個網域及所有子網域,可以使用 DOMAIN,video.example.com,PROXY。這與 DOMAIN-SUFFIX 的涵蓋範圍不同,適合分別處理網頁入口與其他子網域服務。

三、如何選用 DOMAIN-KEYWORD 並安排規則順序

規則會依順序比對;請求一旦符合前面的規則並確定策略,就不會再由後續規則修改。應將明確的例外放前面,涵蓋範圍較大的規則放後面,最後才放 FINAL。以下範例會讓某個子網域直連,其餘 example.com 請求走代理。

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

若將 DOMAIN-SUFFIX 移到第一行,files.example.com 就會先符合該規則,後面的 DOMAIN 直連例外便不會生效。同樣地,FINAL 不能放在目標網域規則前面,否則後續規則不會處理這些請求。

GEOIP 和 IP-CIDR 是位址層級的規則,不能取代網域清單。例如 IP-CIDR,192.0.2.0/24,DIRECT,no-resolve 會依 IP 網段比對;範例網段僅供文件說明。no-resolve 表示這條 IP 規則不會額外觸發網域解析。若現有設定檔在前面以 GEOIP 或涵蓋範圍較大的 IP-CIDR 指定策略,請檢查規則順序,避免它搶先處理原本要交給後續規則的請求。

四、在 Config 中儲存並啟用規則

請先保留一份目前可正常使用的設定檔。訂閱用於更新既有連線資訊,Config 則用來決定流量分流,兩者不可混為一談。本文不需要更換訂閱,也不需要修改 Shadowsocks、VMess、VLESS、Trojan、Hysteria2 或 WireGuard 的伺服器參數。

  1. 確認連線

    在 Home 確認已匯入自己的連線,並選取可用的出口。若連線本身無法使用,請先排除連線問題,再測試規則。

  2. 備份設定檔

    進入 Config,找到目前使用的設定檔,保留副本或匯出原始檔案。不要直接覆寫唯一一份可用的設定檔。

  3. 編輯規則

    開啟該設定檔的編輯畫面,找到規則區段;使用文字編輯時,定位到 [Rule],將目標 DOMAIN-SUFFIX 放在 FINAL 之前,並將兜底規則設為 FINAL,DIRECT。

  4. 啟用設定檔

    儲存變更,返回 Config 確認選取的是修改後的設定檔;再前往 Home → Global Routing,選擇 Config。

  5. 重新建立請求

    重新建立連線,並關閉後重新開啟測試頁面。既有的長連線可能繼續沿用原本的出口路徑,因此不能只重新整理一次就判定規則無效。

遠端設定檔更新可能會覆蓋本機修改。若設定檔來源會定期更新,請保留修改記錄,並在更新後確認目標規則與 FINAL 仍然存在。只更新 Home 中的連線訂閱,不代表已更新或啟用 Config 中的規則檔案。

五、依請求記錄驗證,不只看網頁出口

規則處理的是請求,不是瀏覽器中的整個分頁。一個網站可能會從主網域、靜態資源網域、登入網域和媒體網域分別載入內容。若只代理網頁主網域後出現「文字顯示正常、圖片載入失敗」,應先檢查失敗資源使用的網域,不要直接將所有請求改為 Proxy。

應用程式發出請求 識別網域 依序比對 選擇策略 建立出站連線

測試查詢出口 IP 的網頁,只能說明該查詢頁面的請求如何出站,不能證明所有網站都採用相同策略。瀏覽器快取、連線重用,以及應用程式本身的 DNS 行為也可能影響觀察結果。若記錄中只出現 IP,沒有預期的網域,請先確認請求是否直接使用 IP、應用程式是否採用獨立解析,以及目前的 DNS 設定是否影響網域識別;不宜立刻擴大到整個位址範圍。

六、分開排查連線錯誤與規則錯誤

以下是常見網路錯誤訊息片段,並非規則編輯器固定顯示的提示。發生錯誤時,先確認該請求使用 PROXY 還是 DIRECT,再檢查對應路徑。不要因為一次逾時就同時修改網域規則、DNS 和伺服器連接埠,否則難以判斷是哪項變更造成影響。

錯誤:Connection timed out

原因與處理方式:連線在等待時間內未能建立,可能與代理出口或目標網站的連線狀態有關。先核對請求的最終策略;若為 PROXY,測試目前已有的連線;若為 DIRECT,則檢查本機網路能否直接連線至該目標。

錯誤:Connection refused

原因與處理方式:目標位址拒絕連線,常見原因是連接埠未監聽或連線參數不一致。請核對自己的伺服器位址與連接埠;若代理連線正常,只有單一網站發生錯誤,再檢查該網站。不要將連接埠號填入 DOMAIN-SUFFIX。

錯誤:no such host

原因與處理方式:網域解析未取得可用結果。請確認網域拼寫及目前的 DNS 設定,並檢查是否誤將完整 URL 填入網域欄位;解析恢復後,再驗證策略是否符合預期。

若沒有網路錯誤,但所有請求都顯示 PROXY,優先檢查 Global Routing 是否仍設為 Proxy,以及前面是否有涵蓋範圍過大的規則。若所有請求都顯示 DIRECT,則檢查是否選了 Direct、是否啟用了正確的 Config,以及實際請求網域是否與設定值一致。

七、部分網站代理常見問題

只想代理某個頁面,可以填完整 URL 嗎?

不能用 DOMAIN-SUFFIX 區分同一網域下的不同頁面路徑。它處理的是網域,不會處理 /news 或 /video 這類路徑。請先確認目標能否透過不同子網域區分;若共用同一個主機名稱,本例會對該主機名稱的所有請求套用相同策略。

為什麼網站能開啟,影片卻一直轉圈?

重新播放影片並檢查請求記錄。影片可能來自另一個媒體網域,未涵蓋在主站的 DOMAIN-SUFFIX 規則中。確認該資源網域及其最終策略後,再於 FINAL 前新增相應規則;也請排除目前連線無法處理媒體請求的情況。

開啟 On Demand 後,還需要設定規則嗎?

需要。Settings → On Demand 負責設定按需建立連線的觸發條件,Config 中的規則則負責連線建立後的請求分流。測試本文規則時,先手動保持連線並確認分流正確,再另外驗證 On Demand 的自動連線行為。

新增幾十條規則後,如何確認沒有衝突?

先保留明確的 DOMAIN 例外,再檢查 DOMAIN-SUFFIX 與 DOMAIN-KEYWORD 的涵蓋範圍,最後確認只有一條有效的兜底規則。每次只修改一組網域,分別用一個代理目標和一個直連目標進行對照測試,記錄符合結果後再繼續擴充。

最後確認四件事即可:Config 是否已啟用、目標網域是否正確、規則順序是否由具體到寬泛,以及 FINAL 是否設為 DIRECT。先讓最精簡的規則穩定生效,再逐項新增網站所需的網域,通常比匯入大量用途不明的規則更容易維護。