Shadowrocket(小火箭)只讓指定網站走代理,需同時符合三個條件:Global Routing 設為 Config、目前使用的設定檔包含目標網域的 PROXY 規則,並以 FINAL,DIRECT 處理其餘請求。本文適合已有服務商與可用連線資料的使用者,依序說明準備設定、加入規則及檢查命中記錄,並區分「規則未匹配」與「匹配後連線失敗」。
一、先選擇 Config,再檢查目前設定
規則設定正確卻未生效時,請先檢查 Home → Global Routing。本文要依網域決定流量去向,因此需選擇 Config。只修改 Config 中的檔案,卻讓 Global Routing 維持 Proxy,無法驗證「指定網站走代理、其他網站直連」的效果。
以下僅比較與本次操作直接相關的三種選項,並非 Global Routing 的完整選項清單。Config 決定使用設定檔中的規則;規則中的 PROXY 則決定將請求交由代理策略處理。兩者名稱相近,但並非同一項設定。
Config
建議依目前生效設定檔中的規則處理請求。目標網域可走 PROXY,其他請求則可由 FINAL,DIRECT 直連。
適用情境:只讓明確列出的網域經過代理。
Proxy
將接管的請求交由代理處理,而非依本文的網域清單區分流量去向。暫時使用後,請切回 Config 再測試分流。
適用情境:暫時確認現有代理連線能否存取目標網站。
Direct
將接管的請求設為直連,不會因設定檔中有 PROXY 網域規則就自動改走代理。
適用情境:確認目標網站在目前網路下的直連狀況。
結論:先固定測試條件
開始修改前,記下目前的設定檔名稱、所選連線及 Global Routing 選項。之後每次只修改一項規則,否則無法判斷結果是由切換設定檔、更換連線還是規則本身所造成。
二、四個步驟建立最精簡的規則設定
先在 Home 確認已選取可用連線,再前往 Config 編輯設定。現有訂閱用於管理連線資料,並不代表已啟用本文所需的網域分流規則。請分別確認連線清單已更新,以及設定檔規則已修改。
-
備份設定檔
前往 Config,記下目前選取的檔案,並透過可用的分享或匯出功能保留原始內容。修改現有設定檔時,尤其要保留原有的 DNS、Host 與策略設定,避免為了新增網域而覆寫整份檔案。
-
編輯規則
在 Config 開啟準備使用的設定檔並進入編輯畫面,於既有的
[Rule]區段中加入下方範例。若原檔案已包含此區段,請直接編輯原有區段,不要再新增第二個同名區段。 -
啟用設定檔
儲存後返回 Config,確認選取的是剛才編輯的檔案,而非名稱相似的其他設定檔。僅儲存檔案,不代表已切換至該檔案。
-
選擇模式
返回 Home → Global Routing → Config,確認 Home 中仍選取目標連線,再開啟或重新建立連線。接著以新的請求檢查規則結果,不要只憑已開啟的頁面判斷。
三、使用 DOMAIN-SUFFIX 列出代理網域
以下網域僅為語法範例,並非連線服務位址。請替換成實際需要存取的網站網域。規則中的網域不含 https://、連接埠或路徑;例如目標頁面位於 https://www.example.com/account,需要比對的是 www.example.com。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.org,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 會匹配 example.com 本身及其子網域,例如 www.example.com 和 api.example.com。這不是「網域中含有 example 就會匹配」,因此不會把 notexample.com 視為該網域的子網域。
若只想讓某個主機名稱經過代理,而不包含該網域下的其他主機,請使用範圍較窄的 DOMAIN 規則。例如下方規則只匹配 api.example.com;存取 www.example.com 時不會命中這一行,而會繼續往下比對其他規則。
[Rule]
DOMAIN,api.example.com,PROXY
FINAL,DIRECT
DOMAIN 與 DOMAIN-SUFFIX 無法區分同一網域下的網頁路徑。若希望同一網站的 /video 走代理、/news 直連,不能在 DOMAIN-SUFFIX 後方加上路徑來達成。請先確認需求是依網域區分,還是依頁面內容區分,再判斷是否適用本文方法。
四、檢查規則順序與 FINAL 的位置
規則會依序比對,命中後通常不會繼續比對後續規則。範圍較窄的例外規則應放在範圍較大的規則前面。FINAL 是處理其餘請求的兜底規則,不應放在待比對的網域規則之前,也不要把多份設定檔中的 FINAL 原封不動地堆在同一個規則區段。
[Rule]
DOMAIN,account.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
此範例會讓 account.example.com 優先命中 DIRECT;同屬 example.com 的其他主機仍可命中後面的 PROXY 規則。若對調前兩行,範圍較大的 DOMAIN-SUFFIX 會先匹配,前述直連例外就無法如預期運作。
- 檢查原有代理規則:若設定檔中還有其他 PROXY 規則,未列入新清單的網站仍可能經過代理。「只代理這些網域」代表必須檢查整個生效中的規則區段,而不只是新增的兩行。
- 檢查規則集引用:外部規則集或其他策略也可能影響請求。排查時,可先備份設定,再使用獨立的最精簡設定檔進行驗證,接著逐項還原原有規則。
- 區分網域與 IP:GEOIP 依據 IP 歸屬資料庫進行匹配,IP-CIDR 則依據 IP 網段匹配;兩者都不等同於網站網域清單。
- 檢查共用位址:多個網站可能共用服務位址。不要只因某個 IP 出現在目標網站的連線記錄中,就新增範圍過大的 IP-CIDR 代理規則。
五、透過連線記錄確認分流結果
頁面能開啟,只能代表這次存取成功,無法證明流量採用了預期策略。請同時檢查目標主機名稱、命中的規則及實際策略。驗證時,先分別對目標網站及清單以外的網站送出新的請求,降低既有連線與頁面快取對判斷的影響。
- 確認 Home → Global Routing 仍設為 Config,Config 中仍選取剛修改的檔案,並確認連線已開啟。
- 重新存取目標網站,並在 App 內的連線記錄中尋找對應主機名稱,確認是否命中預期的 DOMAIN 或 DOMAIN-SUFFIX 規則,以及是否交由 PROXY 處理。
- 存取一個未列入代理清單的網站,確認相關請求是否由 FINAL 處理並交由 DIRECT。不要以同一網站的另一個子網域作為對照。
- 若有重新導向、登入或圖片載入問題,請分別檢查新增請求的主機名稱。將頁面主網域與其依賴的資源網域分開記錄,不要只看網址列。
| 觀察到的現象 | 優先檢查項目 | 下一步處理 |
|---|---|---|
| 目標請求命中 FINAL,DIRECT | 網域範圍與生效中的設定 | 檢查記錄中的實際主機名稱,確認是否符合已設定的網域後綴。 |
| 目標命中 PROXY,但請求逾時 | 所選連線與伺服器連線狀況 | 維持規則不變,檢查現有連線資料與連線測試結果。 |
| 未列入清單的網站也走 PROXY | Global Routing 與其他代理規則 | 確認目前不是 Proxy,並檢查排序較前的規則或規則集引用。 |
| 網頁文字顯示,但圖片或登入失敗 | 資源與驗證網域 | 找出失敗請求的主機名稱,依實際需求補上範圍較窄的規則。 |
以上是用來判讀連線記錄的預期現象,並非適用於所有網路環境的測速結論。若記錄已顯示正確命中 PROXY,重複新增相同網域並無幫助;此時應改為檢查連線參數、伺服器狀態或目標網站的存取限制。
六、處理資源網域、DNS 與自動連線的影響
一個網頁可能同時向主站、登入介面、圖片網域及獨立的內容傳遞網域發出請求。為主站新增 DOMAIN-SUFFIX,不代表頁面所需的所有資源都使用相同網域後綴。請先從失敗記錄確認網域用途,再決定是否新增規則,避免為了修復單一資源而代理過大的公用網域範圍。
- 分開檢查 DNS 與策略:網域解析失敗時,請求可能尚未進入後續連線流程。請先確認是否取得解析結果,不要把所有失敗都歸因於 FINAL,也不要在同一次測試中同時更換 DNS 與規則。
- 另行檢查直接使用 IP 的請求:若記錄中只有目標 IP,沒有可供匹配的網域,就不能假設 DOMAIN-SUFFIX 一定會命中。請先確認請求來源,再評估是否確實需要使用 IP-CIDR。
- On Demand 會影響連線狀態:請前往 Settings → On Demand 檢查自動連線設定。這項設定負責依條件建立連線,不能取代 DOMAIN-SUFFIX 或 FINAL。若要手動中斷連線進行對照,也請留意是否會再次自動連線。
- 新請求比舊頁面更可靠:已建立的長連線或 App 內快取可能繼續顯示舊結果。儲存規則並重新連線後,請重新送出目標請求,再檢查對應記錄。
若排查時暫時調整了 On Demand,驗證完成後請還原原本需要的設定。不要以「連線開關一直開著」取代實際策略檢查;連線狀態只能說明流量接管是否已建立,規則記錄才能判斷個別請求的去向。
七、保留可還原的規則清單
驗證通過後,請保留一份可正常運作的設定檔,並記錄每個新增網域的用途。之後若某項功能失效,先確認它是否新增了請求網域,再進行小範圍調整。維護的目標是讓規則符合實際需求,而不是不斷擴大代理範圍。
- 每次修改前先備份;每次只新增或調整一組相關網域。
- 每次儲存後,確認 Config 中選取的檔案,以及 Home → Global Routing → Config 的設定。
- 每次測試都要檢查一個應走 PROXY 的請求,以及一個應走 DIRECT 的請求。
- 更新連線資料後,確認所選連線仍可使用;網域規則正確,不代表連線資料永遠有效。
Shadowrocket 是閉源商業 App,買斷用戶端 ≠ 線路方案。本文假設使用者已有自己的服務商與連線資料。App 主要供 iPhone、iPad 使用,Mac、Apple TV 與 Apple Vision 的相容性請查看 App Store 頁面;系統需求及購買適用性以 App Store 頁面標示為準,唯一取得管道是 App Store。