本文適合遇到訂閱更新失敗、匯入後節點數量為 0、舊節點仍可使用但無法重新整理等問題的使用者。排查時先確認故障發生在下載、解析或節點連線階段,再檢查連結、回應內容、用戶端設定與網路環境,最後得到可執行的修復結論。
先判斷失敗發生在哪個環節
「訂閱無法使用」並非單一故障。用戶端更新訂閱時,至少要依序完成讀取訂閱網址、建立 DNS 與 TLS 連線、下載回應本文、辨識編碼、解析節點欄位、寫入本機設定六個環節。只有節點寫入清單後,才會進入伺服器連線與協定交握階段。
如果按下更新後立即出現網址格式錯誤,應優先檢查訂閱連結;等待數秒後顯示逾時,應檢查網路、DNS 與伺服器回應;若顯示更新成功但節點數為 0,則要檢查回傳內容與解析格式;節點正常顯示但延遲測試全部失敗,問題已不在訂閱解析階段,應改查節點參數、伺服器狀態與本機路由。
| 可見現象 | 故障邊界 | 優先檢查項目 |
|---|---|---|
| 按下更新後立即出錯 | 連結讀取階段 | 連結開頭與結尾、協定前綴、空格與換行 |
| 等待約 10 至 30 秒後逾時 | 網路請求階段 | DNS、TLS、系統時間與代理方式 |
| 顯示成功但新增 0 個節點 | 內容解析階段 | 回應本文、Base64 編碼與用戶端版本 |
| 節點存在但延遲測試失敗 | 節點連線階段 | 網址、連接埠、協定參數與伺服器狀態 |
結論:先記錄節點數量與錯誤時間
更新前後節點數量完全不變且很快出錯,先查連結;節點被清空或更新後顯示 0 個,先查回應內容。尚未確認解析成功前,不要反覆修改本機 SOCKS 連接埠。
檢查訂閱連結是否完整且可請求
複製訂閱網址時,最常見的問題是連結結尾被聊天視窗截斷、開頭多出說明文字,或中間混入全形字元。有效網址通常以 https:// 開頭,也可能包含較長的路徑、查詢參數與存取權杖。查詢參數中的問號、等號與連接符都屬於連結內容,不能只保留網域部分。
先將連結貼到純文字編輯器,確認開頭與結尾沒有引號、空格或換行。不要把訂閱網址提交到公開的線上解碼頁面,因為網址中的存取權杖可能直接決定訂閱的讀取權限。需要查看回應時,應在可信任的網路環境中使用本機瀏覽器或用戶端記錄。
核對原始網址
從訂閱來源重新複製完整網址,確認開頭為
https://,結尾沒有句號、右括號或空格。單獨開啟連結
在本機瀏覽器開啟網址。正常情況可能會顯示一長段編碼文字、下載文字內容,或回傳結構化訂閱資料;登入頁面與驗證頁面都不是節點訂閱本文。
檢查狀態回應
若顯示 401 或 403,表示存取權杖已失效或請求受到限制;404 表示路徑不存在;429 表示短時間內請求次數過多,應暫停更新後再試。
重新儲存訂閱
在 v2rayN 7.x 中進入「訂閱分組」→「訂閱分組設定」,刪除舊網址後重新貼上,再執行「訂閱分組」→「更新全部訂閱」。
錯誤:The remote server returned an error: (403) Forbidden
原因與解法:伺服器拒絕目前的訂閱請求,常見原因包括權杖過期、存取來源受限或請求頻率過高。重新取得有效網址,等待限制解除後再更新。
錯誤:Invalid URI: The hostname could not be parsed
原因與解法:連結缺少協定前綴、網域不完整或混入空格。重新複製完整網址,並在純文字編輯器中清理開頭與結尾的字元。
錯誤:The operation has timed out
原因與解法:用戶端未能在限定時間內取得完整回應。先測試瀏覽器是否能開啟,再檢查 DNS、系統代理與目前網路。
辨識回應內容與編碼格式
傳統訂閱通常會將多條節點連結逐行排列,再對整段文字進行 Base64 編碼。解碼後通常能看到以 vmess://、vless:// 開頭的記錄。另一類訂閱則直接回傳 JSON 或用戶端專用結構。用戶端只有辨識相應格式,才能將本文轉換為節點清單。
瀏覽器能開啟訂閱網址,只能證明下載階段基本可用,不能證明內容一定能由目前的用戶端解析。若回傳 HTML 登入頁、錯誤提示 JSON、空白本文或遭截斷的 Base64 字串,用戶端可能仍顯示 HTTP 請求成功,但最後匯入 0 個節點。
可解析的逐行內容示意:
vless://[email protected]:443?encryption=none&security=tls&type=ws#Example-VLESS
需要繼續檢查的回應:
<html><title>Sign in</title>...</html>
{"error":"subscription expired"}
空白本文或長度僅數十位元組的提示文字
- 解碼後每個節點都應有明確的協定前綴,而且一筆記錄通常獨占一行。
- VMess 連結中的主體通常還包含一層 Base64 編碼,解碼後的 JSON 必須符合完整語法;欄位引號或結尾括號缺失,都會導致解析失敗。
- VLESS 連結依靠 URI 參數表示傳輸與安全設定,網址中的
&分隔符、百分比編碼與片段名稱不能被富文字編輯器替換。 - 如果回應標示為 JSON,實際卻回傳網頁內容,應處理存取驗證或訂閱來源設定,而不是手動改寫節點協定。
- 回應本文大小突然從數十 KB 降至不足 1 KB,通常表示回傳的是錯誤說明,而非完整節點集合。
錯誤:Failed to parse subscription content
原因與解法:本文已下載,但無法辨識為支援的訂閱結構。檢查是否回傳 HTML、錯誤 JSON 或不完整編碼,並使用目前仍在維護的用戶端重新解析。
錯誤:Invalid character in a Base-64 string
原因與解法:編碼文字混入空格、網頁標籤或複製過程產生的不可見字元。重新下載原始回應,不要從經過排版的頁面再次複製。
錯誤:Unexpected end when deserializing object
原因與解法:JSON 內容在結尾前中斷,可能是回應未完整下載或來源資料產生失敗。再次請求並比較回應長度,若持續異常,請重新產生訂閱。
核對用戶端版本、分組與更新方式
同一份訂閱在一個用戶端可匯入、在另一個用戶端卻顯示為空,通常與支援的協定欄位、核心分支或用戶端解析器版本有關。v2rayN 用於桌面環境;v2rayNG 使用 Xray 核心;v2flyNG 使用 v2fly 核心。三者的訂閱入口與設定相容範圍並不完全相同,不能只憑應用程式名稱判斷解析結果應該一致。
排查時先記錄用戶端完整版本號與核心版本。若裝置仍停留在 v2rayN 6.x,而另一台裝置使用 7.x,應先在相同大版本上重新測試;Android 端也應區分 v2rayNG 1.9.x 與 v2flyNG 1.8.x。版本號用於比對解析能力,不應只寫「最新版」而忽略實際安裝版本。
記錄目前版本
開啟用戶端的「關於」或版本資訊頁面,記錄用戶端版本、Core 類型與核心版本,避免只比較節點名稱。
確認訂閱分組
在 v2rayN 7.x 中進入「訂閱分組」→「訂閱分組設定」,確認網址位於已啟用的分組中;分組名稱不是判斷有效性的依據。
切換更新方式
先執行一般更新;若目前網路必須透過既有節點才能讀取網址,再使用用戶端提供的代理更新方式。兩種方式不要連續快速重複請求。
檢查篩選條件
清除節點清單中的關鍵字篩選,查看全部伺服器。訂閱雖已寫入,但若遭名稱篩選,清單也可能顯示為空。
重新啟動目前核心
更新成功後儲存設定並重新啟動目前核心,再檢查節點數量與記錄。只關閉設定視窗不一定會重新載入執行中的設定。
| 用戶端 | 建議記錄 | 重點檢查 |
|---|---|---|
| v2rayN 7.x | 用戶端版本、Core 類型、訂閱分組 | 分組是否啟用、更新方式、關鍵字篩選 |
| v2rayNG 1.9.x | 應用程式版本、Xray 核心版本 | 訂閱分組、背景網路權限、解析記錄 |
| v2flyNG 1.8.x | 應用程式版本、v2fly 核心版本 | 協定欄位是否符合目前核心 |
排查 DNS、TLS 與系統網路環境
訂閱網域必須先解析為可存取的 IP 位址,接著建立 TLS 連線。DNS 回傳錯誤位址、裝置時間偏差過大、憑證鏈無法驗證,或目前網路攔截請求,都會讓用戶端在取得本文前停止。此時修改 VMess 或 VLESS 節點欄位沒有作用,因為節點內容尚未下載。
先比較同一裝置上瀏覽器與用戶端的結果,再比較同一份訂閱在不同網路下的結果。例如家用網路持續逾時、行動網路約 2 秒回傳,表示故障較接近目前的網路路徑;所有網路都回傳 403,則較接近訂閱權限問題;瀏覽器正常而用戶端失敗,應檢查用戶端的代理更新方式與系統憑證環境。
錯誤:No such host is known
原因與解法:訂閱網域沒有取得有效的 DNS 結果。切換至穩定的 DNS 解析服務,清除系統 DNS 快取後重新啟動用戶端。
錯誤:The SSL connection could not be established
原因與解法:TLS 交握或憑證驗證失敗。先校正系統日期、時間與時區,再檢查目前網路是否替換憑證或中斷加密連線。
錯誤:connection reset by peer
原因與解法:連線建立後遭遠端或中間網路重設。切換網路重新測試,並降低連續更新頻率,以排除暫時性限制。
- 校正系統日期、時區與自動校時狀態。時間偏差達到數分鐘時,憑證有效期判斷可能失敗。
- 關閉重複執行的代理程式,確認本機監聽連接埠沒有衝突。v2rayN 常見 SOCKS 連接埠為 10808、HTTP 連接埠為 10809,實際值以「設定」→「參數設定」中的本機連接埠為準。
- 一般更新失敗時,確認是否需要透過目前代理更新;代理更新失敗時,也要測試不經代理的一般請求。
- 分別在兩種網路環境測試一次,記錄請求耗時、HTTP 狀態與回應大小,不要只記錄「能開」或「不能開」。
- 每次修改後只執行一次更新,並等待完整結果。連續按下更新可能觸發 429 限制,使原始問題與頻率限制疊加。
結論:瀏覽器正常不代表用戶端連線正常
瀏覽器可能使用獨立 DNS、既有登入狀態或不同的代理路徑。只有用戶端記錄顯示已成功取得訂閱本文並解析出非零節點,才能確認下載與解析兩個環節都已通過。
依結果選擇修復動作
完成前面的檢查後,應將問題歸入連結權限、網路下載、內容編碼、用戶端相容性或節點連線五類之一。每次只修改一個變數,並記錄更新前後的節點數量、回應狀態與錯誤文字。如此可避免同時更換 DNS、用戶端與訂閱網址後,無法判斷真正原因。
如果舊節點仍可連線,但訂閱更新回傳 401、403 或過期提示,應重新取得有效的訂閱網址;如果網址回傳完整內容,但用戶端解析為 0,應升級用戶端並核對格式;如果已解析出節點但延遲測試失敗,應改查節點伺服器、連接埠、傳輸方式、TLS 參數與路由設定。
確認回應狀態
記錄 200、401、403、404、429 或逾時結果。非 200 回應應優先處理權限、路徑與請求頻率問題。
確認本文類型
區分 Base64 文字、逐行節點連結、JSON、HTML 頁面與空白回應,避免將下載成功誤判為解析成功。
確認節點數量
比較更新前後的數量。新增 0 個時檢查編碼與篩選條件;數量正常後再進行延遲測試。
保留關鍵記錄
保存時間、用戶端版本、錯誤原文與回應大小;移除完整訂閱網址、節點網址及存取權杖後,再用於進一步排查。
執行單項修復
每輪只處理一個變數,例如重新複製連結、切換網路、升級用戶端或清除篩選,接著重新測試並記錄結果。
現象:更新成功,節點數量仍為 0
原因與解法:請求成功,但本文為空、格式不相容,或節點遭篩選而隱藏。檢查回應類型、升級用戶端並清除清單篩選條件。
現象:舊節點可用,新訂閱無法更新
原因與解法:執行中的節點連線與訂閱網址讀取是兩條獨立的連線路徑。保留舊設定,同時處理訂閱權杖、網域解析或更新路徑問題。
現象:節點已匯入,延遲測試全部失敗
原因與解法:訂閱解析已完成,故障轉移至節點連線階段。檢查伺服器網址、遠端連接埠、UUID、傳輸類型、TLS 與系統路由。