適合 v2rayN、v2rayNG 與 v2flyNG 使用者在「更新失敗」或「匯入後清單空白」時逐項檢查。先分辨下載失敗與解析失敗,再檢查連結、回應內容、Base64 和節點欄位;最後匯入單一節點確認問題範圍,避免將訂閱問題誤判為核心或 DNS 故障。
先釐清:請求失敗、解析失敗與連線失敗
訂閱更新包含幾個獨立環節:用戶端向訂閱網址發出請求、伺服器傳回內容、用戶端辨識格式並建立節點,接著由核心依節點設定建立連線。清單空白只表示沒有產生可顯示的項目,不能直接推論伺服器離線。尤其是「更新成功但沒有節點」,也可能是分組篩選、回應內容空白或所有項目都遭到過濾所致。
| 現象 | 優先檢查 | 暫時不要做 |
|---|---|---|
| 逾時、網域解析失敗 | 訂閱網域、目前網路、更新是否經過代理 | 反覆修改節點協定 |
| 收到內容但提示格式錯誤 | 回應內容、編碼方式、用戶端支援的格式 | 將網頁內容當成節點匯入 |
| 更新後清單空白 | 回應內容是否空白、分組與篩選條件、訂閱權限 | 立刻清除所有現有節點 |
| 節點已顯示但無法連線 | 節點參數、核心支援、安全層與伺服器狀態 | 繼續只針對 Base64 排查 |
先備份目前設定,並記下更新時顯示的完整訊息。若已有可用節點,不要為了重試而刪除原有分組。建立測試分組更方便比對結果,也能避免異常更新影響日常使用。
確認連結完整:訂閱網址不是單一節點分享連結
訂閱網址通常以 https:// 開頭;單一節點分享連結則可能以 vmess://、vless:// 或 trojan:// 開頭。前者應加入訂閱分組後執行更新,後者則應透過用戶端的分享連結匯入功能處理。若將節點連結填入訂閱網址欄位,用戶端可能直接拒絕,也可能在請求階段就失敗。
-
重新複製
從服務提供者的訂閱頁面重新複製完整網址,貼到本機純文字編輯器檢查前後內容。移除誤帶的引號、換行與中文標點,不要手動刪除查詢參數。
-
確認操作入口
v2rayN 常見操作路徑為「訂閱分組」→「訂閱分組設定」→「新增」;輸入備註與網址後儲存。不同版本的選項名稱可能略有不同,請選擇編輯訂閱分組的入口,而非單一節點的編輯視窗。
-
單獨更新
回到「訂閱分組」,選擇「更新目前訂閱(不透過代理)」測試一次;若介面顯示「所選」而非「目前」,請先確認已選取剛新增的測試分組。
-
記錄結果
記下更新時間、提示原文,以及節點數量是否有變化。Android 版可在 v2rayNG 的「訂閱分組設定」中確認網址,再從主畫面選單點選「更新訂閱」進行測試。
查詢字串中的 &、=、% 可能是權杖或參數的一部分,不可因為「看起來多餘」就刪除。若從網頁原始碼或轉傳訊息複製後,網址中出現字面上的 &,請回到原始頁面使用複製按鈕重新取得,避免將 HTML 跳脫格式誤當成實際網址。
先檢查回應內容:HTTP 成功不代表訂閱有效
在可信任的本機環境檢查回應時,狀態碼與本文內容都要確認。瀏覽器能開啟登入頁面,只能證明網站可連線;用戶端需要的是可辨識的節點資料。若回應包含網頁驗證、登入重新導向或錯誤訊息,即使狀態碼為 200,也可能無法解析。瀏覽器也可能帶有登入 Cookie,因此瀏覽器能成功開啟,不代表用戶端的請求也會成功。
- 本文以 HTML 標籤開頭:例如
<!DOCTYPE html>,通常表示收到的是網頁,請勿繼續嘗試 Base64 解碼。 - 本文是 JSON 錯誤物件:先閱讀錯誤說明;不要因副檔名或回應類型看起來像資料檔,就認定內容是節點清單。
- 本文長度為零:確認訂閱是否已啟用、方案權限與服務提供者狀態,並檢查回應是否遭網路設備截斷。
- 狀態碼 429:表示請求過於頻繁,請停止連續重新整理,依服務提供者的說明或回應中的等待時間稍後再試。
結論:先確認本文,再處理編碼
如果收到的是登入頁面、存取遭拒或空白內容,重新編碼也無法產生有效節點;應先排除訂閱存取條件的問題,再測試用戶端解析。
Base64 排查:確認編碼層次,別盲目補字元
常見的訂閱格式之一,是將多行分享連結整體進行 Base64 編碼;也有訂閱會直接傳回明文分享連結。VMess 分享連結本身也常包含經 Base64 編碼的 JSON,因此外層訂閱解碼一次後仍看到 vmess://,屬正常情況,並不代表解碼失敗。是否接受特定格式,取決於用戶端的訂閱解析器。
- 標準 Base64:字元集包含
+與/,結尾可能使用=補位。 - URL 安全變體:以
-和_取代上述兩個字元;解析器是否能自動辨識,依實作而異。 - 檢查長度:移除可忽略的空白後,若長度除以 4 的餘數為 2 或 3,可能只是省略了補位字元;餘數為 1 通常代表內容不完整,或格式並非 Base64。
- 解碼成功不代表內容有效:解碼結果仍須是用戶端支援的節點資料。Base64 是編碼方式,不具備保密功能。
不同實作對換行的容許程度不同:有些訂閱解析器會移除空白,有些嚴格解碼介面則不會。先保留原始內容,再以副本進行本機檢查;不要全域取代節點 URI 中的字元,也不要刪除所有 =。若內容在複製時遭到截斷,補位只能改變語法外觀,無法還原遺失的資料。
illegal base64 data at input byte 0
原因:Go 的 Base64 解碼器在輸入開頭遇到不符合目前字元集的內容,例如將以尖括號開頭的網頁當成編碼本文。
處理方式:先檢查回應開頭與原始格式;若確認收到的是網頁,請修正請求入口,不要繼續補位。用戶端可能只會顯示簡化的「解析失敗」訊息。
unexpected end of JSON input
原因:JSON 解析器讀取到空白內容或尚未結束的資料;這種情況可能出現在 VMess 分享資料解碼後的欄位解析階段。
處理方式:重新取得完整內容,確認解碼結果是否完整;不要自行補上括號猜測節點設定。
協定相容性:解碼成功,也可能無法建立節點
訂閱格式相容性與核心支援的協定是兩回事。圖形介面用戶端會先將訂閱轉換成自己的節點設定,再交由核心執行。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心;v2rayN 則須確認目前實際使用的核心。兩款用戶端都能辨識 VMess,不代表它們支援完全相同的傳輸參數與安全層組合。
| 檢查項目 | 檢查內容 | 常見影響 |
|---|---|---|
| 伺服器連接埠 | 須為 1–65535 的整數;443 只是常見設定,並非固定值 | 缺少連接埠或數值超出範圍,可能導致匯入失敗 |
| 驗證憑證 | VMess、VLESS 請確認 UUID;其他協定則依其格式確認密碼 | 憑證錯誤可能不影響匯入,但會導致驗證失敗 |
| 傳輸參數 | 傳輸類型、WebSocket 路徑、Host 等欄位須與伺服器設定相符 | 不支援的欄位可能遭到忽略;欄位填錯則會造成連線失敗 |
| 安全層 | TLS 的 serverName;REALITY 的公鑰、shortId 與相關設定 | 須同時獲得用戶端解析器與核心支援 |
REALITY 是安全層機制,不是獨立的出站協定。只將節點名稱改成「REALITY」,並不代表已完成相容設定。若服務提供者有依用戶端區分的訂閱入口,請選擇明確適用於目前用戶端的格式;結構化設定檔也不能一概當成分享連結清單匯入。
- 在測試分組中保留原訂閱,並單獨匯入服務提供者提供的一條完整分享連結。
- 若單一節點可以匯入,但整份訂閱失敗,請優先檢查外層編碼、訂閱回傳格式與內容是否遭到截斷。
- 若只有特定類型的節點消失,請確認該協定與傳輸欄位是否受支援;不要刪除必要參數來勉強匯入。
- 若節點已顯示,但啟動核心時出現錯誤,請改查核心設定與記錄,分辨是「不支援設定」還是「網路連線失敗」。
訂閱有效期限與更新路徑:最後進行一次受控測試
訂閱連結失效與節點無法連線,兩者不一定同時發生。重設權杖可能使舊連結立即失效,但先前快取的節點仍會顯示;方案到期後,也可能收到空清單、說明文字或拒絕存取,實際情況視服務提供者而定。確認帳戶有效期限、剩餘使用權限與最新網址,比一再匯入同一條舊連結更有效。
也要分開確認訂閱請求使用的網路路徑。「透過代理更新」依賴目前代理可正常使用;若正在使用的節點已失效,更新可能陷入相互依賴的循環。反之,若無法直接連上訂閱網域,而手邊有已確認可用的節點,透過代理更新才有幫助。每次只切換一個條件,才能判斷是哪個設定造成差異。
- 測試直連一次:在 v2rayN 的「訂閱分組」中選擇不透過代理的更新方式,記下提示,不要連續點選。
- 測試代理一次:先確認所選節點可以建立連線,再選擇「更新目前訂閱(透過代理)」;選單名稱請以實際版本為準。
- 確認系統時間:日期明顯錯誤可能導致 HTTPS 憑證有效期限判斷失敗;請恢復系統自動校時,不要停用憑證驗證。
- 檢查顯示範圍:切換至正確分組,清除搜尋文字與篩選條件;清單沒有顯示,不一定代表資料未匯入。
結論:依失敗階段提供資訊
仍無法解決時,請提供服務提供者用戶端名稱與版本、更新時間、請求狀態及已遮蔽敏感資訊的錯誤訊息;說明直連與透過代理更新的結果差異,但不要傳送完整訂閱權杖或節點憑證。
重新測試成功後,再確認節點欄位是否完整、核心能否啟動,以及實際連線是否正常。這三個步驟分別確認「訂閱可解析」、「設定可執行」與「線路可連線」,不要只看到更新成功提示就停止檢查。需要整理匯入步驟時,可繼續參閱訂閱使用教學;若要轉換格式,請先閱讀訂閱轉換注意事項,避免將存取憑證交給不可信任的服務。