在 Shadowrocket(小火箭)中設定「僅讓指定網站走代理」,請將 Global Routing 設為 Config,並在目前生效設定的 [Rule] 中先加入目標網域的 PROXY 規則,最後以 FINAL,DIRECT 結尾。本文適合已匯入自己的服務商資料且能正常連線的使用者,重點說明規則適用範圍、儲存與啟用方式、請求驗證及誤判排查。
一、先確認 Config 模式與代理出口
先檢查目前的運作模式,再編輯規則。Home → Global Routing 會決定流量的處理方式;只修改 Config 檔案,但 Home 仍設為 Proxy 或 Direct,無法達到本文所述的網域分流效果。伺服器資料與規則設定也是兩回事:伺服器能連線,不代表目前使用的設定已包含正確網域規則。
| 介面選項 | 作用 | 本文的處理方式 |
|---|---|---|
| Proxy | 以代理模式處理流量,不依本文所述的網域白名單分流。 | 切換為 Config 後再測試規則。 |
| Direct | 以直連模式處理流量。 | 無法用此模式驗證 PROXY 規則。 |
| Config | 依目前選取的設定檔處理流量。 | 本文使用此選項。 |
| Scene | 依場景設定決定運作方式。 | 排查時先使用 Config,減少切換場景造成的變因。 |
本文範例中的 PROXY 是代理策略,不是伺服器位址,也不是要填入伺服器 Address 的文字。使用預設代理策略時,請先在 Home 確認選取的伺服器可正常使用;若現有設定使用自訂策略群組,也要檢查該群組目前選取的項目。DIRECT 表示目標連線直接連線,不經過代理伺服器。
二、DOMAIN-SUFFIX 與 FINAL,DIRECT 的基本寫法
若要讓 example.com 及其子網域走代理,其餘目標直連,可將以下片段作為規則區段的起點。此網域僅為說明範例,請替換成自己的目標網域;片段只包含 [Rule],並非完整設定檔。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX 會依網域後綴邊界比對。上述規則涵蓋 example.com、www.example.com 和 api.example.com,不會因文字相似而涵蓋 notexample.com。規則參數請填網域本身,不要加上 https://、連接埠、路徑或查詢參數。
DOMAIN-SUFFIX,example.com,PROXY:網域符合此後綴時,使用 PROXY。FINAL,DIRECT:前面的規則都未命中時,使用 DIRECT;此行不需要網域參數。- 規則以英文半形逗號分隔;每條規則各占一行,不要把兩條規則寫在同一行。
- 若只想讓
login.example.com這個主機走代理,可使用DOMAIN,login.example.com,PROXY,避免擴大至整個網站網域。
Shadowrocket 會依規則順序比對,由第一條命中的規則決定該連線使用的策略。若將 FINAL,DIRECT 放在目標網域規則前面,就會提前套用預設規則,後續規則也無法生效。編輯現有設定時,也要檢查前面是否已有涵蓋範圍廣泛的規則;不能只在檔案末尾加上幾行就視為完成。
三、多個網站與 DOMAIN-KEYWORD 的適用範圍
多個不同網站通常逐行列出,較容易維護。同一個頁面可能同時存取登入網域、靜態資源網域和 API 網域,這些網域不一定屬於相同的後綴。請依實際請求補上必要規則,不要只因頁面顯示不完整,就將所有連線都改走代理。
[Rule]
DOMAIN,login.example.com,PROXY
DOMAIN-SUFFIX,example.org,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT
| 寫法 | 比對範圍 | 適用情況 |
|---|---|---|
DOMAIN,login.example.com,PROXY | 完整網域等於 login.example.com。 | 只處理特定主機時使用。 |
DOMAIN-SUFFIX,example.com,PROXY | example.com 及其子網域。 | 處理相同網域體系時使用。 |
DOMAIN-KEYWORD,example,PROXY | 網域中包含 example 字串。 | 比對範圍較廣,須檢查是否誤判。 |
DOMAIN-KEYWORD 不會檢查網站歸屬,也不要求關鍵字位於特定網域層級。例如 DOMAIN-KEYWORD,example,PROXY 可能同時涵蓋 example.com 和 notexample.net。它比對的是網域,不是網頁標題、頁面內容或 URL 路徑;無法用來設定「同一網域只有特定頁面走代理」。
結論:先列出網域,再擴大比對範圍
只處理少數網站時,優先使用 DOMAIN 或 DOMAIN-SUFFIX。只有確認多個目標網域確實需要符合相同關鍵字條件時,才使用 DOMAIN-KEYWORD,並以含有相同關鍵字的非目標網域測試比對範圍。
四、儲存、啟用與驗證的五個步驟
修改規則後,請同時確認檔案已儲存、設定檔已選取、運作模式正確,而且已產生新的請求。舊連線可能仍沿用原有工作階段;只查看瀏覽器中已開啟的頁面,無法判斷新規則是否生效。
-
檢查出口
在 Home 點選自己已有的伺服器,使用 Connectivity Test 檢查是否可連線。測試結果只反映相應測試目標的連線狀況,不能取代指定網站的規則驗證。
-
編輯規則
前往 Config,開啟準備使用的設定選單並選擇 Edit Config,檢查 [Rule]。請在現有規則區段中調整內容,不要再加入第二個 [Rule];目標網域規則須放在 FINAL,DIRECT 前面。
-
選取設定檔
儲存後返回 Config 清單,選取剛修改的檔案。接著前往 Home → Global Routing,選擇 Config,避免仍使用其他設定檔或運作模式。
-
建立新請求
重新連線後造訪目標網站,再造訪一個未列入清單的網站。必要時先關閉舊頁面再重新開啟,降低瀏覽器快取和持續連線對判斷的影響。
-
檢查記錄
在 App 內的請求記錄中,檢查這次連線的目標網域、命中的規則及實際使用的策略。預期結果是目標請求命中網域規則並使用 PROXY,非目標請求則套用 FINAL 並使用 DIRECT。
驗證時一次只修改一項。例如目標網站首頁能開啟,但圖片未顯示,應先查看圖片請求的網域與策略,再決定是否新增該資源網域。不要同時更換伺服器、DNS 和整份規則,否則難以判斷是哪項變更影響結果。
五、如何處理既有的 GEOIP、IP-CIDR 與 DNS 設定
要讓「其餘流量一律 DIRECT」成立,前提是其他流量沒有先命中代理規則。既有設定中的 GEOIP、IP-CIDR 或遠端規則集也可能參與比對;最後一行即使寫了 FINAL,DIRECT,也不代表前面的代理規則會被略過。
- 檢查涵蓋範圍廣泛的代理規則:若前面有涵蓋大量位址的 PROXY 規則,未列入網域清單的連線也可能走代理。請先在副本中移除與目標無關的規則,再逐條恢復確實需要的內容。
- 分開處理網域與 IP:直接連線至 IP 位址時,不一定有可供 DOMAIN-SUFFIX 比對的網域。只有確實需要固定位址時才考慮使用 IP-CIDR,不要隨意讓共用位址上的所有流量都改走代理。
- 了解 no-resolve:
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve是語法範例;no-resolve 表示這條 IP 規則不會主動觸發網域解析來完成比對,並不代表整份設定停用 DNS。 - 了解 GEOIP 規則的適用範圍:GEOIP 依 IP 地理歸屬進行比對,而非逐一比對網域;它無法取代精確的目標網域清單。
192.0.2.0/24 是文件中的示範網段,不應直接複製為實際目標。對使用動態位址、共用主機或 CDN 的網站,優先維護網域規則;將某次解析取得的 IP 固定寫入規則,可能在位址變更後失效,也可能影響使用相同位址的其他網域。
六、依現象區分規則問題與連線錯誤
先確認請求是否如預期命中規則,再檢查命中後的連線能否完成。以下是連線診斷時可能遇到的英文錯誤,實際呈現方式以 App 內記錄為準;錯誤本身無法證明某條網域規則寫錯。
Connection refused
原因:目標端或中間設備明確拒絕連線,常見情況是該位址的連接埠沒有服務接受連線。解決方式:若記錄顯示使用 PROXY,請核對 Home 中所選伺服器的 Address、Port 是否與現有資料一致;若使用 DIRECT,請檢查網站目標與連接埠,不要先修改 FINAL。
Connection timed out
原因:連線未能在等待期限內完成;單憑逾時無法判斷問題出在出口、目標端或網路路徑。解決方式:先確認這次請求命中的策略,再使用 Connectivity Test 檢查選取的伺服器,並分別測試目標網域和一個非目標網域。
若沒有連線錯誤,但所有網站都走代理,請優先檢查 Home → Global Routing 是否仍設為 Proxy,以及 [Rule] 前段是否還有涵蓋範圍廣泛的 PROXY 規則。若只有一個網站未依預期分流,請先核對實際請求使用的網域,不要只根據瀏覽器網址列判斷。
- 目標命中 FINAL:核對網域拼寫、設定檔是否已選取,以及是否直接使用 IP 存取。
- 目標命中 PROXY 但仍失敗:檢查所選出口是否可連線,以及網站是否還有其他必要網域須使用不同路徑。
- 非目標也命中 PROXY:檢查 DOMAIN-KEYWORD 的範圍是否過廣,或前面是否還有其他代理規則。
- 儲存後行為沒有改變:確認編輯的是目前使用的設定檔,並重新建立連線後再查看新請求。
七、指定網站分流常見問題
我只想讓一個子網域走代理,該怎麼寫?
使用 DOMAIN,api.example.com,PROXY,並將規則放在 FINAL,DIRECT 前面。若要讓 api.example.com 及其下層網域都走代理,再改用 DOMAIN-SUFFIX,api.example.com,PROXY;不要直接指定整個 example.com 後綴。
網站可以開啟,但登入和影片卻失敗?
查看操作期間產生的新請求,找出登入 API 或媒體資源實際使用的網域。確認這些網域屬於需要代理的連線流程後,再逐行新增規則;瀏覽器網址列中的主網域不代表頁面所有請求都使用該網域。
更新伺服器訂閱會改掉規則嗎?
伺服器訂閱用來更新伺服器資料,Config 中的規則檔案則是另一項內容。請先確認更新的是伺服器訂閱還是遠端設定檔;後者可能會取代本機編輯內容,因此修改前應先保留副本,更新後再檢查 [Rule]。
啟用 On Demand 後,還需要這些規則嗎?
需要。Settings → On Demand 管理的是按需連線條件,不會取代 [Rule] 的目標比對。若排查期間連線狀態自動變化,請先記錄 On Demand 設定,在可控制的連線狀態下驗證 Config 規則,再恢復所需的自動連線條件。
可以依網址中的路徑分流嗎?
DOMAIN、DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 都不是路徑比對規則。不要將 example.com/video 填入網域欄位;本文的方法以網域或主機為界線,無法用這三種規則區分同一主機下的不同頁面路徑。