本文適合已在 Shadowrocket(小火箭)設定好可用代理連線,並希望只代理指定網站的使用者。先確認 Global Routing 設為 Config,再將網域名單放在規則前段,最後以 FINAL,DIRECT 作為兜底。下文提供可併入現有設定檔的規則片段、儲存與啟用步驟,以及驗證方式,並說明如何區分規則未命中與代理連線失敗。
先確認 Config:名單分流的必要條件
「只讓指定網站走代理」包含兩個獨立條件:指定網域符合規則時使用 PROXY,其他請求預設使用 DIRECT。只新增網域規則還不夠;如果 Global Routing 目前設為 Proxy,請求會依全域代理模式處理,無法用來驗證這份名單的分流結果。
在 Home 開啟 Global Routing,選擇 Config;接著在 Config 確認目前使用的設定檔。Home 中選取的代理連線也必須可用。本文假設你已備妥自己的服務商與訂閱或連線參數,不涉及如何取得連線服務。
| 模式 | 處理方式 | 本文中的用途 |
|---|---|---|
| Config | 依據目前設定檔中的規則決定連線策略。 | 驗證名單分流的必要條件。 |
| Proxy | 全域代理模式,不依本文的網域名單決定分流。 | 可用來確認代理是否可用,測試後切回 Config。 |
| Direct | 全域直連模式。 | 用於直連對照,無法驗證 PROXY 規則。 |
| Scene | 依據已設定的情境條件套用相應的路由設定。 | 排除問題時,先明確切換至 Config,減少情境切換造成的干擾。 |
On Demand 負責依條件建立或恢復連線,不能取代網域規則。若測試期間連線自動變動,可在 Settings → On Demand 檢查現有條件,記下原設定後暫時改為手動控制連線;不要同時修改隨選連線、DNS 和規則,否則難以判斷是哪項變更造成影響。
最精簡規則:DOMAIN-SUFFIX 搭配 FINAL,DIRECT
以下是規則片段範例,並非包含所有連線參數的完整設定檔。example.com 是示範網域,不代表實際需要代理的網站。使用時請換成要分流的網站網域,並併入現有設定檔的 [Rule] 區段,不要用這段內容覆蓋整份檔案。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 會匹配 example.com 本身,以及 www.example.com、api.example.com 等子網域。此規則依網域層級匹配,不會因為 notexample.com 結尾也包含相同字母,就將其視為相同的網域後綴。
FINAL,DIRECT 表示前面的規則都未命中時採用直連。規則會依序檢查,由最先命中的規則決定策略。因此,若名單前方還有較寬泛的規則,或 FINAL 提前出現,請求可能根本不會執行到新增的那一行。
DOMAIN、DOMAIN-SUFFIX 與 DOMAIN-KEYWORD 的差異
名單的精準度取決於匹配關鍵字。若網站的主網域及其子網域都需要代理,優先使用 DOMAIN-SUFFIX;只處理單一主機名稱時,使用 DOMAIN。DOMAIN-KEYWORD 會匹配網域中的字串,涵蓋範圍較廣,不適合直接取代網域後綴規則。
| 規則寫法 | 匹配範圍 | 適用情況 |
|---|---|---|
DOMAIN,api.example.com,PROXY | 只匹配 api.example.com,不包含其下層子網域。 | 只代理一個明確的 API 網域。 |
DOMAIN-SUFFIX,example.com,PROXY | 匹配 example.com 及其子網域。 | 以網站網域為單位維護名單。 |
DOMAIN-KEYWORD,example,PROXY | 匹配網域中含有 example 的請求,可能涵蓋不相關的網域。 | 確實需要以關鍵字匹配,且能檢查誤匹配時使用。 |
規則中的網域不要包含 https://、連接埠、路徑或查詢參數。例如只填 example.com,不要填 https://example.com/account。這類網域分流規則無法依 HTTPS 網頁路徑區分同一主機上的不同頁面。
若要讓某個子網域直連,而同一主網域下的其他請求走代理,請將更精確的例外規則放在後綴規則之前。以下順序會讓 status.example.com 直連,其餘符合該後綴的網域則走代理。
[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
儲存與啟用:每次只修改一組規則
先保留原設定檔的副本,再對本機設定檔進行最小幅度修改。遠端設定檔更新可能會覆蓋本機編輯內容;Home 中連線訂閱的更新,也和 Config 中設定檔的更新不同。排除問題時,請分別記錄目前的連線與設定檔,避免將連線清單變動誤認為規則已載入。
-
備份設定檔
進入 Config,確認目前使用的設定檔並保留副本。先記下原有的 FINAL 策略與規則集引用,避免修改後無法還原。
-
編輯規則
在 Config 開啟要使用的本機設定檔並進入編輯,將名單加入 [Rule] 區段。該區段只保留一個有效的最終兜底規則,並將 FINAL,DIRECT 放在名單之後。
-
儲存並選取
儲存後返回 Config,確認選取的是剛修改的檔案,而非名稱相似的其他設定檔。若出現解析錯誤,先檢查英文逗號、關鍵字拼寫,以及每行欄位數量。
-
切換模式
返回 Home → Global Routing → Config,並確認已選取可用的代理連線。必要時先中斷連線再重新連線,讓測試使用目前的設定。
-
重新測試
關閉目標網頁後重新開啟,觸發新的連線,再檢查資料記錄中的網域、命中規則及實際策略。不要只觀察修改前已建立的長連線。
從其他設定檔複製規則時,也要檢查策略名稱是否存在。自訂群組名稱並非通用內建關鍵字;原檔案中名為某個群組的策略,在新檔案中不一定有對應定義。若目標只是實作本文的名單分流,請先用 PROXY 與 DIRECT 驗證,再考慮新增策略群組。
驗證分流:檢查命中規則,不只看網頁能否開啟
網頁能正常開啟,只能表示某條連線路徑可用,無法單憑此事確認流量是否經過代理。請在 Shadowrocket 的資料記錄中核對本次請求的網域、規則與出站策略;若未啟用記錄,先到 Settings 檢查資料記錄設定,再重新發出請求。只保留必要記錄,分享前移除網域以外的敏感資訊。
- 名單內:將範例替換為實際目標網域後,造訪其主站及一個子網域,預期會命中 DOMAIN-SUFFIX,策略為 PROXY。
- 名單外:造訪一個你確認可直連且未列入名單的網域,預期會命中 FINAL,策略為 DIRECT。
- 例外項目:若使用前文的精確網域例外規則,請單獨造訪該主機名稱,預期會先命中 DOMAIN,而非後面的後綴規則。
同一網頁可能會同時連線至主站、登入介面、靜態資源與媒體網域。主站命中 PROXY,但圖片請求命中 DIRECT,並不矛盾。若頁面文字正常,但圖片或登入失敗,請先找出失敗請求的實際網域,再決定是否加入名單;不要直接加入過短的 DOMAIN-KEYWORD 擴大匹配範圍。
GEOIP 依目標 IP 的地理資訊匹配,IP-CIDR 則依 IP 網段匹配,兩者都不是用來判斷網站所屬網域的方式。同一網站可能使用多個 IP,也可能與其他網站共用 IP。若要嚴格依名單分流,不要為了省事加入寬泛的 IP 代理規則,否則名單外的請求也可能走代理。直接連線至 IP 的請求,也不保證會命中網域規則。
連線失敗:先區分規則問題與出站問題
如果記錄已顯示命中 PROXY,但請求仍失敗,通常不必再調整 DOMAIN-SUFFIX。以下列出連線診斷中可能出現的底層錯誤片段;實際顯示文字取決於協定與失敗環節,不代表每次都會出現完全相同的完整訊息。
錯誤:connection refused
原因與處理方式:目標端或中間設備拒絕連線,並不代表網域規則未生效。先確認記錄中的實際出站策略,再核對現有連線的位址、連接埠與伺服器監聽狀態;連接埠應以自己的設定為準,不要因目標網頁使用 HTTPS 就將代理連接埠改為 443。
錯誤:i/o timeout
原因與處理方式:某個網路讀寫階段逾時,單憑這段文字無法判斷問題出在本機網路還是代理路徑。保持規則不變,分別透過 Wi-Fi 與行動網路發出新請求,並比較同一代理連線的測試結果。
錯誤:certificate has expired
原因與處理方式:TLS 驗證涉及的憑證可能已過有效期限,也可能是裝置時間設定錯誤。先檢查 iPhone 的設定 → 一般 → 日期與時間,再向自己的服務商確認憑證狀態;不要透過停用憑證驗證來掩蓋問題。
如果記錄顯示 DIRECT,但你預期應為 PROXY,請回到規則層檢查:目前使用的檔案是否正確、Global Routing 是否設為 Config、實際請求是否使用了其他網域,以及名單前方是否有更早命中的規則。依據這些線索修正,比反覆重寫整份設定檔更容易找出原因。
常見問題:新增網域、更新與還原
只想讓一個網站走代理,需要列出每個子網域嗎?
同一主網域通常只需一條 DOMAIN-SUFFIX。先填入主網域,再檢查資源請求;如果網站使用不同主網域的登入或資源服務,請依實際記錄分別新增,不要將整段 URL 填入規則。
新增規則後,所有網站仍然都走代理,該怎麼檢查?
先到 Home → Global Routing 確認已選擇 Config,再到 Config 核對目前使用的檔案。接著檢查是否仍有 FINAL,PROXY、其他範圍較廣的代理規則或代理規則集;嚴格名單模式下,名單外的請求最終應套用 FINAL,DIRECT。
更新自己的連線訂閱後,需要重寫名單嗎?
只更新 Home 中的連線清單,通常不必重寫 Config 內的網域規則,但應重新確認選取的連線。若更新的是遠端設定檔,本機編輯內容可能會被覆蓋;更新後請開啟目前使用的設定檔檢查 [Rule],再測試名單內外的請求。
修改後連線異常,如何還原原設定?
在 Config 重新選取先前保留的設定檔,再返回 Home 確認原有的 Global Routing 模式,然後重新連線。恢復正常後,請在副本中一次只新增一條規則;不要同時還原設定檔、更換代理連線並修改 DNS,以免失去排查線索。
完成後只需確認三項:Config 正在生效、名單內的請求命中預期規則、其他請求使用 DIRECT。若想進一步了解設定檔結構,請參閱本站技術參考;若要確認路由模式的差異,可查看代理模式說明。