2026-09-11 · 訂閱管理 · 約 8 分鐘

V2Ray 訂閱格式解析:Base64 訂閱、原生 JSON 與分享連結轉換

認識 Base64 訂閱、原生 JSON 設定與 vmess:// 等分享連結的結構差異,了解如何在用戶端中互相轉換。

本文重點

先辨別拿到的是訂閱網址、分享連結清單,還是完整核心設定,再選擇正確的匯入方式。本文適合想了解「解碼後怎麼還是連結?」、「JSON 為什麼不能直接當成訂閱?」的使用者:從 v2rayN 的訂閱群組與剪貼簿匯入開始,說明 Base64 編解碼、節點匯出與原生 JSON 的轉換限制,並提供本機處理與錯誤排查方法。

三種格式的差異:訂閱負責分發,JSON 負責執行

先分清楚「取得網址」和「回傳內容」。訂閱網址通常是附有存取憑證的 HTTPS URL,必須由用戶端連線後才能取得節點資料。Base64 訂閱是常見的回傳內容格式,不是代理協定,也不代表所有訂閱都採用相同編碼。直接對訂閱網址進行 Base64 解碼,通常不會得到節點。

類型常見結構匯入用途
Base64 訂閱內容多個分享連結逐行排列後,再整份編碼透過更新訂閱一次取得多個節點
分享連結vmess:// 或 vless:// 等協定前綴透過剪貼簿匯入節點參數
原生 JSON 設定inbounds、outbounds、routing 等欄位交由相容的核心執行

分享連結主要描述單一遠端連線的資訊:位址、連接埠、身分憑證、傳輸方式及 TLS 參數。完整 JSON 還能包含本機監聽、DNS、分流規則與多個出站。因此,節點可以匯出成分享連結,不代表整套執行設定都能完整放進連結中。

Base64 解碼:先解開外層,再辨識協定

傳統 Base64 訂閱可視為兩層結構:外層編碼整份連結清單,內層每一行仍採用各自協定的分享格式。移除外層編碼後看到 vmess:// 很正常;不要再用同一種解碼方式處理所有連結。

以下 JavaScript 僅示範本機 UTF-8 編解碼。輸入 節點 時,編碼結果為 6IqC54K5;這只是字元測試,並非可連線的節點。處理實際訂閱時,請只在可信任的本機環境中操作,切勿將含有權杖的內容提交至線上轉換服務。

function decodeBase64Utf8(input) {
  let value = input.trim().replace(/\s+/g, "")
    .replace(/-/g, "+").replace(/_/g, "/");
  value = value.padEnd(Math.ceil(value.length / 4) * 4, "=");
  const bytes = Uint8Array.from(atob(value), char => char.charCodeAt(0));
  return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
}

function encodeBase64Utf8(text) {
  const bytes = new TextEncoder().encode(text);
  let binary = "";
  for (const byte of bytes) binary += String.fromCharCode(byte);
  return btoa(binary);
}

console.log(encodeBase64Utf8("節點"));       // 6IqC54K5
console.log(decodeBase64Utf8("6IqC54K5"));   // 節點

解碼成功只代表編碼層的內容可讀。如果結果是登入頁面、到期通知或其他 HTML,就沒有取得有效的節點清單。此時繼續編碼或更改副檔名都無法修復訂閱,應回頭檢查訂閱網址與存取權限。

v2rayN 匯入:分別處理訂閱網址與剪貼簿內容

若需要持續更新節點,建議新增訂閱群組;如果拿到的是一個或多個分享連結,則使用剪貼簿匯入。以下依 v2rayN 中文介面的選單名稱說明;不同桌面介面上的按鈕位置,以及括號和空格可能略有差異,請以實際選單為準。

  1. 辨別輸入內容

    HTTPS 取得網址應用於訂閱群組;以 vmess://、vless:// 開頭的內容則用於匯入節點。請勿將完整 JSON 貼到訂閱網址欄位。

  2. 新增群組

    開啟「訂閱群組」→「訂閱群組設定」,新增群組並填入備註與訂閱網址,然後儲存。網址中的查詢參數與存取權杖都必須完整保留。

  3. 更新訂閱

    在「訂閱群組」選單中選擇「更新全部訂閱(不通過代理)」。若直連請求失敗,且已有可用的代理連線,再嘗試「更新全部訂閱(通過代理)」,並查看更新記錄中的結果。

  4. 匯入連結

    匯入分享連結時,先複製完整文字,再開啟「伺服器」→「從剪貼簿匯入批量URL」。多個連結請逐行排列;常見桌面介面也可按 Ctrl+V 從剪貼簿匯入。

  5. 檢查參數

    開啟匯入後的節點編輯視窗,核對位址、連接埠、傳輸協定與 TLS 設定。成功匯入不代表連線可用,接著請查看核心記錄,確認是否有欄位不支援或交握失敗的情況。

Android 端也要區分這兩種匯入方式:v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心。能讀取同一份連結清單,不代表兩者都支援其中的每種傳輸參數。尤其遇到 VLESS、REALITY 等組合時,應先確認目標用戶端與核心是否支援,而非一再修改 Base64 外層。

分享連結與原生 JSON:哪些能轉換,哪些會遺失

分享連結轉成 JSON 的本質是欄位對應,不是在文字外加上一對大括號。用戶端讀取連結後會建立節點資料,再依所選核心產生執行設定。反向匯出時,通常只能取出某個出站對應的連線參數,無法自動包含整套 DNS、路由與本機監聽設定。

保留原始訂閱

推薦

儲存取得網址並透過訂閱群組更新,才能持續接收遠端節點變更。訂閱權杖應視為存取憑證妥善保護。

適用情境:日常管理多個節點,需要持續更新

匯出分享連結

在節點清單中選取項目,透過右鍵選單中的分享 URL 匯出功能複製到剪貼簿。匯出的內容只是節點快照,不會保留原訂閱的更新關聯。

適用情境:臨時移轉少量節點、檢查連線欄位

保留完整 JSON

保留多個出站、路由標籤與 DNS 設定,交由對應的核心讀取。跨核心使用前須核對欄位意義,不能只改檔名。

適用情境:自訂分流、固定本機入站設定

轉換前先備份完整設定

若移轉目的只是保留節點連線,匯出分享連結即可;若還要保留 DNS 與分流設定,請另存原生 JSON,並逐項確認目標核心支援的欄位。不要以匯出連結取代設定備份。

以下是結構示範設定,僅包含監聽 127.0.0.1:10808 的 SOCKS 入站與直連出站,不含遠端代理伺服器,也不應匯入為代理節點。這說明完整 JSON 可能完全沒有可轉換成 VMess 或 VLESS 連結的物件。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

若確實需要載入完整設定,請使用 v2rayN「伺服器」→「新增自訂設定伺服器」等專用入口,依介面選擇設定檔與相符的核心。自訂設定中的監聽連接埠可能與現有執行個體衝突;若記錄顯示位址已被使用,請先停止衝突的執行個體或調整連接埠,而不是修改節點身分資訊。

將連結清單重新編碼為訂閱內容

若已匯出多個分享連結,可將文字整理成「每行一個連結」,再將整份 UTF-8 文字以 Base64 編碼。這會產生傳統訂閱內容,但不會自動建立可更新的訂閱網址。訂閱網址仍須由可信任的 HTTPS 服務提供這份內容。

  1. 保留每個連結的協定前綴、查詢參數與備註,不要手動刪除看似重複的 TLS 或傳輸欄位。
  2. 使用換行符號 \n 分隔各個連結,不要插入項目符號、引號、JSON 陣列括號或表格分隔符號。
  3. 將整份文字編碼一次即可;不要先個別編碼每個完整分享連結,再拼成無法辨識的清單。
  4. 在本機解碼一次,確認能逐行還原原文,再用目標用戶端測試匯入。請核對節點數量與重要欄位,不要只看成功提示。

從完整 JSON 批次擷取連結時,還需要處理多個出站、標籤引用與傳輸欄位對應。目標分享格式無法表達的欄位必須另外記錄。轉換工具產生了連結,只能表示部分序列化已完成,不能證明執行結果與原設定一致。

匯入失敗排查:先檢查內容,再檢查核心

解碼後為什麼還是 vmess://?

這表示外層訂閱編碼已經移除。請將這些連結逐行複製,再使用「伺服器」→「從剪貼簿匯入批量URL」。如果只是要查看 VMess 欄位,請單獨解碼該連結前綴後方的內容,不要連同整行前綴一起解碼。

匯入顯示成功,清單裡卻少了幾個節點?

先比對解碼後非空連結行數與實際匯入數量,再查看失敗項目的協定前綴和欄位。部分記錄可能因重複、格式錯誤或協定不支援而未新增;不要只因數量減少就判定訂閱已損壞。

JSON 可以開啟,為什麼用戶端不接受?

能由 JSON 剖析器讀取,只代表語法有效。請先檢查最上層是否包含 inbounds、outbounds,再確認是否使用自訂設定入口與相符的核心。VMess 分享資料中的 add、id 不能直接當成完整執行設定。

更新訂閱時回傳 403 或逾時,該怎麼處理?

遇到 403 通常應檢查授權、權杖或伺服器存取政策;若發生逾時,則檢查網路與名稱解析。請保留原始網址的所有參數;已有可用節點時,可嘗試「更新全部訂閱(通過代理)」。若實際回應是錯誤頁面,重新編碼該頁面並無幫助。

排錯時請依序確認:先確認訂閱請求取得有效內容,再確認分享連結可正常解析,最後檢查執行核心與連線參數。分別記錄「下載失敗」、「格式不支援」與「連線失敗」,才能避免在錯誤的環節反覆轉換。

下載v2rayN依平台選擇用戶端