本文適合已在 Shadowrocket(小火箭)匯入自己的連線資料,並希望只讓指定網站走代理的使用者。依照下文保留原有設定、加入網域規則、切換至 Config 並驗證連線,即可建立「清單內走代理、清單外直連」的設定。範例網域僅用於說明語法,並非可用的連線服務;本站不提供、不販售也不推薦節點或訂閱。
先確認目標:依網域分流,而非依網頁按鈕分流
「只代理指定網站」可拆解為兩個判斷:哪些請求屬於目標網站,以及未符合規則的請求要如何路由。Shadowrocket 會依序比對設定中的規則;本例將需要代理的網域放在前面,並將 FINAL,DIRECT 放在最後。未符合前面規則的請求,就會採用直連策略。
一個網頁通常不只連線至網址列中的網域。圖片、登入、影片及靜態指令碼可能來自不同網域,因此「首頁能開啟但圖片沒顯示」不一定代表規則未生效,也可能是相關網域未列入清單。不要只為了完整載入某個頁面,就加入涵蓋範圍過大的通用網域後綴。
這裡的 PROXY 代表代理策略,不是伺服器位址,也不會自動建立可用連線。開始前請確認 Home 中已有自己的可用伺服器,並已選取這次要用來驗證的連線。購買用戶端與購買線路服務是兩回事。
最簡規則:DOMAIN-SUFFIX 在前,FINAL,DIRECT 在後
以下是規則片段範例,不是完整的連線設定。請將它作為編輯現有設定的參考,不要用這幾行覆蓋整份檔案,否則可能會遺失 DNS、通用設定及其他必要內容。實際使用時,請將範例網域換成要比對的真實網域。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.org,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 會比對 example.com 本身,以及 www.example.com、media.example.com 等子網域;但不會比對 notexample.com。網域欄位不要填入通訊協定、路徑、連接埠或萬用字元星號;https://example.com/video 並不是此欄位適用的格式。
| 寫法 | 比對範圍 | 適用情境 |
|---|---|---|
DOMAIN,login.example.com,PROXY | 僅限該完整主機名稱 | 只代理登入入口 |
DOMAIN-SUFFIX,example.com,PROXY | 根網域及其子網域 | 代理整個網域體系 |
FINAL,DIRECT | 先前所有規則都未比對到的請求 | 讓其他請求直連 |
結論:先用最小網域範圍驗證
只需比對單一主機名稱時,先使用 DOMAIN;確實需要涵蓋根網域及所有子網域時,再使用 DOMAIN-SUFFIX。驗證成功後再逐步加入相關網域,避免一次擴大範圍,導致無法確認是哪條規則改變了結果。
在 Config 儲存設定,再到 Home 選擇 Config
編輯前請先保留原設定副本,以便還原。若現有設定包含其他網域規則、規則集或範圍較廣的代理規則,只在末尾加上一條 FINAL,DIRECT,並不代表「只代理指定網站」:已符合前面規則的請求不會繼續往下比對。請檢查整段規則,而不只是最後一行。
-
保留原設定
進入 Config,找到目前使用的設定,先保留副本或匯出備份。確認這次編輯的是之後要選用的檔案,不要同時修改多份設定。
-
編輯規則區段
開啟該設定的編輯介面,檢查 [Rule]。將目標 DOMAIN 或 DOMAIN-SUFFIX 規則放在 FINAL 前面,並核對逗號、網域及策略名稱。
-
檢查預設規則
將 FINAL,DIRECT 設為最後一條規則,並確認前面的規則不會將其他網站導向 PROXY。儲存後,在 Config 選取這份設定。
-
切換模式
返回 Home → Global Routing,選擇 Config。回到 Home 確認目前選取的伺服器,並啟用連線;首次連線時,請依系統提示允許加入 VPN 設定。
-
重新發送請求
關閉舊頁面後重新開啟,分別造訪清單內與清單外的網站。修改設定前已建立的連線不能用來驗證新規則,必要時請中斷連線後再重新連線。
此處要設定的是 Home → Global Routing → Config,而不只是「在 Config 頁面看到檔案」。前者決定目前是否依規則處理流量,後者則用來管理設定。檔案已儲存、已選取檔案、模式選擇正確,是三個不同的檢查項目。
Global Routing、規則順序與 On Demand 的分工
如果所有網站都走代理,請先檢查模式,再檢查規則。Global Routing 的 Proxy 與 Direct 是整體路由模式,不會像本文的網域清單一樣進行分流。Scene 用於依情境選擇設定;初次驗證時,請直接選擇 Config,減少切換情境造成的變因。
| 設定項目 | 主要功能 | 本例處理方式 |
|---|---|---|
| Global Routing → Config | 依目前設定中的規則決定策略 | 選擇此項目驗證清單 |
| Global Routing → Proxy | 整體採用代理路由模式 | 不適用於驗證清單外直連 |
| Global Routing → Direct | 整體採用直連路由模式 | 不適用於驗證清單內代理 |
| Global Routing → Scene | 依情境設定選擇路由行為 | 先排除情境切換造成的影響 |
| Settings → On Demand | 管理隨選連線條件 | 與網域比對分開檢查 |
On Demand 負責決定何時建立連線,不會取代 DOMAIN-SUFFIX 對網站網域的判斷。若手動中斷連線後又自動連上,請前往 Settings → On Demand 檢查條件;若某個網站採用錯誤策略,則應檢查 Config 中的規則及目前的路由模式,兩者不可混為一談。
GEOIP依目標 IP 的地理位置比對,不代表網站所屬公司所在地或網頁語言;本文使用明確的網域清單,不需要靠它來區分。IP-CIDR用於比對 IP 位址範圍。共用伺服器或內容傳遞網路的位址可能同時承載多個網站,因此依位址範圍代理的涵蓋面會比依網域更廣。FINAL是最後的預設規則。若將它放在目標網域規則之前,後續規則就無法處理已由它預設處理的請求。
驗證結果:分辨規則比對、DNS 與伺服器可用性
網頁能開啟,不代表一定經過代理;網頁無法開啟,也不代表規則未比對到。驗證時請維持相同網路、伺服器及設定,每次只更動一項。可透過連線記錄中的目標主機、比對到的規則及策略資訊確認連線路徑;實際顯示欄位以目前介面為準。DNS 查詢所使用的路徑,也不能直接等同於網頁連線採用的策略。
- 測試清單內網站:重新開啟目標網站,確認請求主機是否符合設定的網域後綴,以及策略是否為 PROXY。也要檢查重新導向後的主機名稱。
- 測試清單外網站:選一個未加入規則的一般網站,確認其新請求採用 DIRECT。若仍走代理,請檢查前面的其他規則。
- 測試連線:在 Home 使用 Connectivity Test,協助判斷伺服器是否可連線。測試有回應,不代表所有目標網站及其資源都能使用。
- 測試相關網域:若文字可見,但圖片載入或登入失敗,請檢查相關資源實際使用的主機名稱,再決定是否加入規則,不要只依頁面外觀猜測網域。
以下是網路請求可能回傳的系統錯誤原文,不是規則編輯器的語法提示,也不代表每次都會以相同形式顯示在 Shadowrocket 中。遇到這些錯誤時,請先確認是哪個請求失敗、採用了哪項策略,再調整設定。
錯誤:The request timed out.
原因與處理方式:請求未能在時限內完成,可能與網路、目標網站或代理連線有關;請先確認該請求是否符合預期策略,再使用 Home → Connectivity Test 檢查所選伺服器,避免直接擴大代理清單。
錯誤:A server with the specified hostname could not be found.
原因與處理方式:主機名稱解析失敗或網域拼寫錯誤;請先核對造訪位址及設定中的網域,再檢查目前設定的 DNS。DOMAIN-SUFFIX 本身無法修復解析失敗。
若 App 直接連線至 IP、重用既有連線,或實際請求的主機與預期不同,網域規則可能沒有取得預期的比對條件。此時請根據連線記錄找出原因,不要為了「強制符合規則」就任意加入大範圍的 IP-CIDR。若要進一步檢查 DNS,請參閱技術參考中的 DNS 說明。
常見問題:子網域、訂閱更新與還原設定
只想代理單一子網域,該怎麼寫?
例如只處理 login.example.com,可寫成 DOMAIN,login.example.com,PROXY,並保留末尾的 FINAL,DIRECT。若使用 DOMAIN-SUFFIX,example.com,PROXY,根網域及其他子網域也會納入代理範圍。
為什麼加入規則後,所有網站還是都走代理?
先到 Home → Global Routing 確認選擇的是 Config,而不是 Proxy;再回到 Config 確認已選取修改後的檔案。最後由上往下檢查是否有更早符合的廣泛代理規則或規則集。
更新訂閱會修改這些規則嗎?
連線訂閱與設定檔應分開看待。更新伺服器訂閱不能取代編輯 [Rule];若更新的是遠端設定,本機修改可能會被新內容覆蓋。請保留自己的設定副本,並在每次更新遠端設定後重新檢查規則及選取狀態。
清單外採用 DIRECT,是否代表 VPN 已關閉?
不是。DIRECT 是連線啟用時採用的路由策略,不等於關閉系統 VPN 設定。若要停止這次連線,請在 Home 關閉連線,並檢查 Settings → On Demand 是否設定了自動連線條件。
修改後無法正常使用,該如何還原?
回到 Config 選取先前保留的設定,再依照原本的 Global Routing 設定重新連線。還原後先確認原有網站能正常使用,再逐一加入目標網域;每次只修改一項,方便找出造成變化的規則。
最後檢查四個項目即可:目前使用正確的檔案、Global Routing 設為 Config、目標網域規則位於前面,以及 FINAL,DIRECT 位於末尾。接著再逐一檢查網頁依賴的網域,才能在維持清單範圍明確的同時,避免將頁面載入問題誤判為整體分流失效。