已有自己的訂閱時,先在 Home 手動重新整理並確認清單有效,再前往 Settings → Subscribe 開啟 Update on Open。更新失敗時,先判斷請求是否抵達訂閱網址,再檢查回應內容能否解析;不要把訂閱重新整理、連線測試和 Config 更新混為一談。本文依序說明操作、驗證與排解方式。
訂閱更新的範圍:重新整理清單,不是更新 App
Shadowrocket(小火箭)的訂閱更新,是重新讀取自己已有的訂閱網址,並據此更新 Home 中對應群組的連線項目。遠端調整名稱、網址、連接埠或其他連線參數後,本機通常需要重新取得資料,才能看到這些變更。本文以使用者已持有自己的服務商帳戶與訂閱為前提。
在這個流程中,成功取得回應與成功解析出項目是兩個獨立條件。訂閱伺服器回傳登入頁面,即使網路請求成功,也不代表取得了有效訂閱;清單已更新,也不代表其中每條連線都能正常使用。連線是否可用,還取決於遠端服務狀態、驗證參數與目前網路。
- Home:查看現有連線與訂閱群組、重新整理清單,並核對更新後的項目。
- Settings → Subscribe:管理訂閱相關設定,包括開啟 App 時自動更新的選項。
- Config:管理設定檔;其中的規則或遠端設定更新,不應與 Home 的訂閱清單重新整理混淆。
- App Store:負責取得及更新 App 本身,不會重新整理你的訂閱內容。
手動重新整理:先確認網址,再檢查群組
首次匯入或更新異常時,先手動重新整理。這樣可以直接查看此次操作的結果,不必等待自動觸發。操作前記下目標群組名稱、目前項目數量,以及一個準備核對的連線名稱,方便前後比較;不必記錄或公開訂閱憑證。
-
確認訂閱類型
前往 Home,找到現有的訂閱群組。首次新增時,點選 Home 右上角的「+」→ Type → Subscribe,填入自己的訂閱網址並儲存。單一分享連結不是可持續重新整理的訂閱清單。
-
確認完整網址
開啟該訂閱的編輯項目,檢查 URL。確認查詢參數完整,前後沒有多出的空格、換行或說明文字;只檢查自己的網址,不要將完整內容貼到公開討論區。
-
下拉重新整理清單
返回 Home,在清單區域向下拉動後放開,觸發訂閱重新整理。等待操作完成,留意失敗提示;若有多個訂閱,請分別確認目標群組的結果。
-
檢查更新結果
比較目標群組名稱、項目數量及已知有變更的項目。若遠端已明確修改某條連線,進入該項目的編輯資訊,核對網址或連接埠,再進行連線測試。
以下只展示網址結構,無法用於連線。範例中的 token 是查詢參數;實際網址可能使用其他參數名稱,也可能將憑證放在路徑中。請勿依照範例替換自己網址中的欄位。
https://example.com/sub?token=xxxx
開啟時自動更新:在 Subscribe 中設定
手動重新整理成功後,再前往 Settings → Subscribe → Update on Open,開啟 App 時更新。此設定會在開啟 App 時觸發訂閱資料擷取,並非固定間隔的背景排程。只讓連線維持運作、沒有開啟 App,不能據此認定訂閱已重新整理。
- 先確認手動操作成功:若網址本身已失效,開啟自動更新只會反覆遇到同一問題,無法修復遠端憑證。
- 開啟後返回 Home:下次開啟 App 時,檢查目標群組及已知變更的項目,不要只憑開關狀態判斷更新是否成功。
- 確認有變更時手動重新整理:若要立即取得遠端更新,請主動重新整理並核對結果,比等待下次開啟 App 更容易確認。
- 控制排解變因:比較兩次重新整理結果時,可暫時關閉自動更新,完成驗證後再視需要恢復。
Update on Open 與 On Demand 的用途不同。前者控制取得訂閱資料的觸發時機,後者用於按需觸發連線。修改 Settings → On Demand 無法修復訂閱網址,也不能取代清單更新;排解訂閱問題時不必同時調整這兩項設定。
| 操作或設定 | 觸發方式 | 核對重點 |
|---|---|---|
| 在 Home 下拉重新整理 | 由使用者手動操作 | 此次操作的提示、目標群組及已知項目變化 |
| Update on Open | 開啟 App 時觸發 | 實際取得資料的結果,而不只是開關是否開啟 |
| On Demand | 依連線條件觸發 | 連線狀態,不可作為訂閱已更新的證明 |
結論:手動成功後再開啟自動更新
先完成一次可重現的成功重新整理,再開啟 Update on Open。之後若發生問題,就能分辨是網址失效還是自動觸發未完成,無須同時修改多項設定。
更新失敗排解:分別檢查連結、網路與格式
先記下畫面上顯示的完整提示,再依以下三類原因排查。不同系統語言或請求階段可能出現不同文字;錯誤訊息只能提供線索,不能只憑一句通用提示就斷定訂閱已過期。
錯誤:Failed to load subscription
原因與解法:這是訂閱載入失敗的概括提示,可能與網址授權、請求失敗或回應格式異常有關。先向自己的服務商確認網址是否有效,再分別檢查網路連線與回應內容。
錯誤:The request timed out.
原因與解法:請求未能在等待時間內完成,可能與目前網路、請求路徑或訂閱伺服器回應有關。分別在 Wi-Fi 與行動網路下手動重新整理,比較是否只有其中一種網路失敗。
錯誤:A server with the specified hostname could not be found.
原因與解法:無法解析訂閱網址中的主機名稱。先確認網域名稱是否複製完整,再切換網路重試;若網域已變更,請向自己的服務商確認目前使用的網址。
第一類:連結失效或授權變更
服務商重設憑證後,舊網址可能仍保留在 Home 中,卻已無法取得內容。若回應為 HTTP 401 或 403,優先檢查授權狀態與存取限制;若回應為 404,則檢查路徑是否已變更。這些狀態不一定代表某一種特定帳戶問題,仍須根據自己的服務資訊判斷。
- 前往自己的服務商管理頁面重新複製訂閱網址,並逐項比對本機儲存的內容。
- 確認複製的是訂閱網址,而不是帳戶首頁、登入頁或單一連線的分享文字。
- 更換網址後,只重新整理目標訂閱並檢查結果;不要持續重試已確認失效的舊網址。
第二類:網路無法連線或請求路徑異常
若 Wi-Fi 失敗但行動網路成功,應優先檢查兩種連線環境的差異,而非立即重建訂閱。先完成網路切換比對,再檢查目前連線是否影響請求。Global Routing 中的 Proxy、Direct、Config、Scene 是路由模式;變更這些設定可能影響網路存取,但不會改變訂閱憑證的有效性。
- 每次只變更一項條件,例如只從 Wi-Fi 切換至行動網路,並保持訂閱網址不變。
- 若要比較目前連線開啟與關閉時的結果,先記下原本狀態,測試結束後再恢復。
- 不要為了解決一次逾時就同時修改 DNS、路由及所有連線參數,否則無法判斷是哪項變更造成影響。
第三類:回應內容無法辨識
HTTP 200 僅表示請求收到成功回應,不保證內容是有效的連線清單。伺服器可能回傳登入頁面、維護通知或其他文字。瀏覽器能顯示頁面,也不代表 Shadowrocket 能將其解析為訂閱內容。
- 確認遠端提供的是適用於 Shadowrocket 的訂閱內容,而不是必須手動登入閱讀的網頁。
- 若請求已完成但項目仍為空,請向自己的服務商確認該網址目前應回傳的項目數量與內容類型。
- 不要自行對整段內容新增編碼、刪除欄位或替換協定名稱;這可能掩蓋原始問題,並破壞連線參數。
重新整理後沒有變化:透過項目欄位驗證
訂閱可能已成功重新整理,但看起來完全沒有變化:若遠端沒有修改內容,名稱與數量自然會維持原樣。反過來說,數量相同也不能證明沒有更新,因為伺服器網址、連接埠或驗證參數可能已經變更。驗證時應選擇一個已知有變更的項目,而不只是查看清單長度。
| 觀察到的情況 | 需要核對的事項 | 下一步 |
|---|---|---|
| 名稱與數量都沒有變化 | 遠端是否確實修改內容,以及查看的是否為正確群組 | 核對一條已知有變更的連線欄位 |
| 清單已變更,但連線失敗 | 遠端可用性、驗證參數與目前網路 | 轉而排解連線問題,不要反覆重新整理清單 |
| 只有部分項目缺失 | 遠端回傳的項目數量、項目格式與參數完整性 | 向自己的服務商確認缺少的項目是否仍包含在訂閱中 |
| 開啟 App 後仍是舊內容 | Update on Open 是否已開啟,以及此次請求是否完成 | 手動重新整理一次,並記下提示 |
例如,遠端明確通知某條連線的連接埠從 443 改為 8443,重新整理後就核對該項目的連接埠,而不只查看名稱。這裡的數字僅用來說明驗證方法,並非建議任何現有連線使用的連接埠;實際參數必須與使用者已有的設定一致。
回報問題前:保留狀況,隱藏憑證
完成上述比對後若仍失敗,請整理最精簡的排錯紀錄,讓對方能分辨「無法取得內容」與「已取得但無法解析」,同時避免洩露可存取訂閱的完整網址。訂閱憑證可能位於查詢參數或路徑中,因此不能只遮蔽名為 token 的欄位。
- 觸發方式:說明是在 Home 下拉重新整理時失敗,還是只有開啟 Update on Open 後才沒有看到變化。
- 連線環境:記錄 Wi-Fi 與行動網路各自的結果,以及測試時連線是否開啟。
- 原始提示:完整抄錄錯誤文字;若有 HTTP 狀態碼,也一併記下。
- 影響範圍:說明是所有訂閱都失敗、只有一個群組失敗,還是部分項目缺失。
- 隱私保護:遮蔽完整訂閱網址、密碼、UUID 及其他驗證欄位,只保留必要的狀況描述。