適合已在 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 中選取的代理連線可正常使用。若目前設定使用自訂策略群組,請確認規則末尾引用的策略名稱確實存在,不要直接貼上其他設定中的群組名稱。
二、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 視為相同的網域後綴。此處比對的是網域,不是網址中的任意文字。
- 網域欄位不需填入
https://、連接埠、路徑或查詢參數。 - 瀏覽
https://www.example.com:443/account時,規則只填網域部分,不要填入/account。 - 每條規則各占一行,欄位以英文逗號分隔,並保留
PROXY、DIRECT等關鍵字原文。 FINAL,DIRECT沒有網域欄位:未命中前面規則的請求會由它兜底直連。
三、依序套用規則,不只是儲存文字
以下依 Home、Config、Settings 的介面架構說明操作流程。各平台的編輯入口可能不同,但都要完成「編輯檔案、儲存、設為目前使用的設定檔、以 Config 模式執行」四個步驟。訂閱提供連線資訊,規則設定是否啟用則是另一件事,兩者需分開確認。
-
備份設定檔
進入 Config,先保留目前檔案的副本或匯出備份。記下正在使用的設定檔,避免修改了另一個檔案,連線時卻仍使用舊設定。
-
整理規則
開啟預計使用的檔案編輯入口,找到
[Rule]。加入需要的 DOMAIN-SUFFIX 規則,檢查既有規則,並將FINAL,DIRECT留在末尾。 -
啟用檔案
儲存修改,並在 Config 中確認該檔案已設為目前使用的設定檔。若檔案來自遠端更新,請先確認後續更新是否會覆寫本機修改。
-
切換模式
返回 Home → Global Routing,選擇 Config,再確認 Home 中選取的代理連線可正常使用並啟動連線。
-
重新建立請求
在可中斷連線的情況下重新連線,關閉原有網頁後再開啟,以產生新的網路請求,接著查看請求記錄中的比對結果。
既有訂閱連結請向你的服務商取得。修改分流規則不需要反覆刪除訂閱,也不要把訂閱網址貼到 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.com | DOMAIN-SUFFIX,example.com | PROXY |
| status.example.com | DOMAIN,status.example.com | DIRECT |
| www.example.org | FINAL | DIRECT |
上表是規則推演,不代表已實際連線測試示範網站。實際驗證時,請改用自己有權存取的真實網域,並逐一建立新連線。瀏覽器可能沿用既有連線,也可能直接顯示快取內容;修改設定後只查看原頁面,未必會產生可用來驗證新規則的請求。
- 先確認模式:Home → Global Routing 必須設為 Config,目前使用的檔案也必須是剛儲存的檔案。
- 再檢查命中規則:目標網域若命中 FINAL,先確認拼字、子網域歸屬,以及網域資訊是否可用。
- 接著檢查策略:若已命中指定規則,但連線出口不符合預期,請檢查策略引用及目前選取的連線。
- 最後檢查回應:確認策略正確後,再檢查代理伺服器連接埠、目標回應和憑證錯誤。
六、網頁只載入一部分或連線錯誤的排查方式
網站頁面可能同時向主站、登入網域、靜態資源網域和影片網域發出請求。主網域走代理,不代表所有資源都使用相同後綴。例如頁面還會連線至 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。之後每新增一個網站,都重複「建立新請求、查看命中規則、檢查策略」的流程。若要了解更多規則類型,請參閱規則參考;術語說明可查閱術語手冊。