本文重點

已有自己的服務資訊與訂閱連結時,先在 Home 手動重新整理,確認錯誤出在連結存取、內容解析,還是伺服器連線;再前往 Settings → Subscribe 設定 Update on Open。本文說明單次更新、開啟時自動更新與 Update via Proxy 的差異;更新失敗時,先保留現有清單,不要立刻刪除重建。

先分清訂閱更新與伺服器連線

Shadowrocket(小火箭)的訂閱更新,是向已儲存的訂閱網址取得內容,並將可辨識的伺服器資訊加入清單。開啟 Home 的連線開關,則是使用目前選取的伺服器建立連線。這是兩個不同的流程:現有伺服器能使用,不代表訂閱網址仍有效;訂閱取得成功,也不代表回傳的每一台伺服器都能連線。

本文假設你已持有自己的訂閱。開始排查前,記下訂閱群組名稱、錯誤訊息原文、發生時間與目前的網路類型。若清單中有自行修改過的項目,請先保存必要資訊;訂閱重新整理可能依遠端內容重建項目,不應將手動修改視為會永久保留。

分為 2 個階段
取得訂閱內容 → 解析並更新清單
401 / 403
HTTP 身分驗證或存取權限問題的線索
443
HTTPS 未明確指定連接埠時的預設連接埠

這裡的連接埠是指訂閱網址的 HTTPS 請求,不是伺服器連線連接埠。例如,訂閱網址使用 HTTPS 預設連接埠 443,其中列出的伺服器仍可使用服務資訊指定的其他連接埠。訂閱更新失敗時,不要因此把所有伺服器連接埠都改成 443。

在 Home 手動更新訂閱

手動更新適合在首次匯入後驗證,也適合服務資訊變更後單次檢查。先觀察一次完整結果,再決定下一步;不要連續快速下拉。頻繁重複請求可能觸發訂閱端的存取頻率限制,也會讓不同請求的錯誤混在一起。

  1. 確認項目

    前往 Home,確認已有 Subscribe 類型的訂閱及對應群組。若原本只手動新增一台伺服器,清單中沒有訂閱網址,就沒有可用來重新整理整組伺服器的來源。

  2. 檢查網址

    開啟目標訂閱的編輯資訊,確認 URL 是否完整。不要把帳戶登入頁面、購買紀錄頁面或單台伺服器的分享 URI 當成訂閱 URL;也不要在截圖或公開紀錄中顯示完整 token。

  3. 下拉重新整理

    回到 Home,在清單中向下拉動以觸發更新,並等待這次請求完成。若有多個訂閱,請分別確認各群組的結果;不要因為其中一組有變化,就認定所有訂閱都已成功更新。

  4. 確認結果

    檢查提示、群組內容與預期變化。伺服器數量不變不代表更新失敗,遠端可能回傳了相同內容;清單有變化也不能取代連線測試,還需要選取要使用的伺服器並確認能否存取。

開啟時自動更新:Update on Open

手動重新整理成功後,再前往 Settings → Subscribe → Update on Open,開啟啟動應用程式時更新。這項設定會在開啟應用程式時觸發訂閱更新,不是持續輪詢伺服器,也不是交由能保證準時執行的背景計時器處理。

首次驗證時,先手動成功重新整理一次,再開啟 Update on Open;離開應用程式後重新開啟,並觀察更新結果。只從其他頁面返回 Home,不能可靠證明已觸發一次「開啟時更新」;網路是否可用及應用程式當時的執行狀態,也會影響請求能否完成。

Settings → On Demand 管理的是連線觸發條件,與訂閱更新並非同一項設定。開啟 On Demand 不等於開啟 Update on Open;關閉開啟時更新,也不代表停用既有的連線觸發條件。排查時應分別記錄這兩項設定,避免同時變更後無法判斷原因。

逾時與網路受限:何時使用 Update via Proxy

先確認目前網路本身可正常使用,再判斷訂閱網域是否能透過目前路徑存取。若一般網頁也無法開啟,優先處理 Wi-Fi 認證、行動網路權限或網路切換問題。若只有訂閱網址請求逾時,再考慮存取路徑差異,不要立刻更換連結。

若訂閱網址無法透過目前的直連網路存取,但現有伺服器仍可使用,可先建立可用連線,再前往 Settings → Subscribe → Update via Proxy 開啟此選項,然後回到 Home 手動重新整理。此設定只會改變訂閱更新請求的存取方式,無法修復過期憑證、錯誤 URL 或不相容的回傳內容。

觀察到的狀況優先處理方式判斷範圍
一般網頁與訂閱請求都逾時檢查基本網路,切換 Wi-Fi 或行動網路後再試目前無法判定訂閱連結已失效
直連請求失敗,但現有連線可用建立連線後測試 Update via Proxy成功只代表這次請求的存取路徑可用
透過現有連線仍回傳 401向自己的服務提供者確認訂閱憑證改變網路路徑通常無法修復憑證問題
所有現有伺服器都無法使用先確認基本網路與訂閱端狀態無法依賴失效的連線完成代理更新

結論:一次只變更一項條件

保留同一個訂閱網址,先更換基本網路測試一次,再單獨測試 Update via Proxy;記錄每次結果,避免同時變更 URL、連線模式與更新設定。

Home → Global Routing 中的 Proxy、Direct、Config、Scene 用來選擇流量處理方式,不是四種訂閱格式。Config 模式下的 DOMAIN-SUFFIX、IP-CIDR、GEOIP、FINAL 等規則會影響相關流量的路由,但盲目新增規則無法讓已失效的 token 恢復有效。需要檢查規則時,應先確認這次請求實際使用的存取路徑。

依錯誤訊息判斷連結失效或格式問題

以下列出網路回應或系統錯誤中可能出現的原文。實際介面可能只顯示狀態碼、簡短說明或本地化提示,請以這次記錄為準。狀態碼只能協助判斷問題類別,不能單憑一個數字斷定帳戶已到期或伺服器永久停用。

錯誤:401 Unauthorized

原因:請求未提供訂閱端接受的身分憑證,URL 中的 token 可能遺漏、失效或已重設。

解決方式:在自己的服務管理頁面確認目前的訂閱網址,完整複製後取代原網址,再手動更新一次;不要只複製問號前的部分。

錯誤:403 Forbidden

原因:訂閱端拒絕這次請求,可能與帳戶權限、存取來源或伺服器端政策有關。

解決方式:記下發生時間與狀態碼,向自己的服務提供者確認存取條件;更換路徑只能用於判斷問題,不能保證解除權限限制。

錯誤:404 Not Found

原因:請求路徑不存在,常見原因包括舊入口已停用、網址複製不完整或路徑遭到誤改。

解決方式:確認網域、路徑與查詢參數,使用自己帳戶中目前有效的訂閱網址,不要嘗試猜測新路徑。

錯誤:The request timed out.

原因:請求未能在限定時間內完成,可能發生在網路連線、訂閱端回應或中間存取路徑。

解決方式:先確認基本網路正常,再依照上一節分別測試切換網路與 Update via Proxy,不要直接把逾時判定為連結過期。

另一種情況是 HTTP 請求已完成,但回傳內容無法解析。狀態碼 200 只代表 HTTP 層級的請求成功,不保證正文是有效的訂閱內容。登入頁面、網路認證頁面、服務維護通知,甚至 HTML 錯誤頁,都可能以 200 回傳。

檢查 URL 是否完整及敏感資訊

訂閱 URL 通常同時作為存取憑證。以下僅示範網址結構,網域與 token 都是範例,不能用於實際訂閱。排查時可以比對自己網址的結構,但不要將真實連結貼到公開網頁或截圖中。

https://example.com/sub?token=xxxx

排查紀錄通常只需包含群組名稱、時間、網路類型、錯誤訊息原文,以及是否開啟 Update via Proxy。若需聯絡自己的服務提供者,請使用既有的支援管道,先提供已去識別化的資訊;對方能否查看請求記錄,則以其實際能力為準。

常見問題:更新後的清單與自動更新行為

已開啟自動更新,為什麼重新開啟後仍是舊清單?

先前往 Home 手動重新整理,確認請求是否成功,再到 Settings → Subscribe 確認 Update on Open。若手動更新也失敗,先處理連結或網路錯誤;若遠端回傳相同內容,即使更新成功,清單也可能沒有明顯變化。

訂閱能更新,選取的伺服器卻不能使用?

更新成功只代表已取得並解析訂閱內容。回到 Home 確認目前選取的伺服器,檢查 Global Routing 與既有服務參數,再實際測試存取;不要把「更新成功」當成所有伺服器都可使用的報告。

更新失敗後,要刪除原訂閱再重新新增嗎?

先保留原項目,檢查 URL 與錯誤訊息原文。刪除會失去可供比對的資訊,也無法修復逾時或權限問題。確實需要更換網址時,先記下群組與必要設定,再編輯原訂閱,避免反覆匯入造成清單重複。

多個訂閱中只有一個群組更新失敗,怎麼辦?

先單獨確認失敗群組的網址與回傳狀態。其他訂閱能成功,只表示部分請求可存取,不能證明這個網域、路徑與 token 都有效;不要因此批次修改所有群組的設定。

購買 Shadowrocket 後,會自動取得訂閱嗎?

購買用戶端 ≠ 購買連線服務方案。Shadowrocket 是透過 App Store 取得的閉源商業應用程式,訂閱內容來自使用者已有的服務資訊;應分別確認應用程式購買狀態與訂閱網址是否有效。