Shadowrocket(小火箭)要設定部分網站走代理,需同時符合三個條件:Global Routing 設為 Config、目標網域規則排在兜底規則之前,並以 FINAL,DIRECT 作為最後一條規則。本文適合已匯入自有連線服務的使用者,提供精簡規則範例、設定步驟,以及透過請求記錄驗證的方法;範例網域僅用於說明語法,並非連線服務位址。
一、先分清 Global Routing 與規則策略
「只讓指定網站走代理」並不會在 Home 選取連線後自動生效。Home 的連線選擇決定代理出口,Global Routing 則決定請求如何分流。使用規則時,先將 Global Routing 設為 Config,再確認 Config 選取了實際要使用的設定檔。修改未啟用的檔案,不會改變目前連線的處理方式。
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 不能放在目標網域規則前面,否則後續規則不會處理這些請求。
- 優先使用 DOMAIN:目標是明確的完整主機名稱,且需要最小的比對範圍。
- 通常使用 DOMAIN-SUFFIX:目標是某個網域及其子網域,適合本文介紹的部分網站代理需求。
- 謹慎使用 DOMAIN-KEYWORD:
DOMAIN-KEYWORD,example,PROXY會比對網域中的字串,可能連myexample.net也一併涵蓋。 - 保留一條明確的兜底規則:現有設定檔若已有 FINAL,應調整原本的兜底規則,而不是再於其後新增一條 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 的伺服器參數。
-
確認連線
在 Home 確認已匯入自己的連線,並選取可用的出口。若連線本身無法使用,請先排除連線問題,再測試規則。
-
備份設定檔
進入 Config,找到目前使用的設定檔,保留副本或匯出原始檔案。不要直接覆寫唯一一份可用的設定檔。
-
編輯規則
開啟該設定檔的編輯畫面,找到規則區段;使用文字編輯時,定位到 [Rule],將目標 DOMAIN-SUFFIX 放在 FINAL 之前,並將兜底規則設為 FINAL,DIRECT。
-
啟用設定檔
儲存變更,返回 Config 確認選取的是修改後的設定檔;再前往 Home → Global Routing,選擇 Config。
-
重新建立請求
重新建立連線,並關閉後重新開啟測試頁面。既有的長連線可能繼續沿用原本的出口路徑,因此不能只重新整理一次就判定規則無效。
遠端設定檔更新可能會覆蓋本機修改。若設定檔來源會定期更新,請保留修改記錄,並在更新後確認目標規則與 FINAL 仍然存在。只更新 Home 中的連線訂閱,不代表已更新或啟用 Config 中的規則檔案。
五、依請求記錄驗證,不只看網頁出口
規則處理的是請求,不是瀏覽器中的整個分頁。一個網站可能會從主網域、靜態資源網域、登入網域和媒體網域分別載入內容。若只代理網頁主網域後出現「文字顯示正常、圖片載入失敗」,應先檢查失敗資源使用的網域,不要直接將所有請求改為 Proxy。
- 準備比對:選一個符合規則的目標網域,再選一個明確不在規則範圍內的網域,各發出一次新請求。
- 查看記錄:在請求記錄中核對實際主機名稱、符合的規則及最終策略。目標請求應使用 PROXY,比對用的請求則應使用 FINAL 對應的 DIRECT。
- 分開判斷:若請求符合 PROXY,但頁面仍無法載入,表示分流與連線能力是兩個不同問題;接著檢查代理連線,不要反覆新增相同網域規則。
- 補齊必要依賴:若發現必要資源走了 DIRECT,只新增已確認屬於該頁面請求的網域,再重新測試。
測試查詢出口 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。先讓最精簡的規則穩定生效,再逐項新增網站所需的網域,通常比匯入大量用途不明的規則更容易維護。