V2Ray 訂閱格式解析:base64、原生 JSON 與分享連結的差異與轉換

base64 訂閱、原生 JSON 與 vmess/vless 分享連結處於不同的資料層級。理解它們的結構,才能判斷用戶端是否能直接匯入,以及轉換過程會遺失哪些設定。

本文速覽

本文適合需要在 v2rayN、v2rayNG 與 v2flyNG 之間遷移節點,或正在排查訂閱格式錯誤的使用者。重點說明三類格式的實際結構、辨識方式、用戶端匯入流程,以及哪些轉換能直接完成、哪些必須由伺服器端提供相應的協定參數。

三類格式不在同一個設定層級

「訂閱」經常被當成所有設定檔的統稱,但嚴格來說,訂閱是一種批次分發機制,分享連結是單一節點的便攜表示方式,原生 JSON 則是核心在執行時讀取的完整設定。三者可能包含部分相同欄位,卻不能只依檔案副檔名判斷是否等價。

常見的 base64 訂閱回應,會先將多條 vmess、vless 等分享連結逐行排列,再把整段 UTF-8 文字編碼為 base64。用戶端更新訂閱時,會先下載回應、解碼文字,再逐行解析節點。base64 只改變文字的表示方式,不負責加密,也不會自動補齊協定欄位。

訂閱網址

推薦

由固定網址持續回傳節點清單,適合統一維護、批次更新與多端同步。

適合:日常使用、節點較多、參數會定期調整

vmess/vless 分享連結

一條連結通常代表一個出站節點,方便複製,但不會承載完整的 DNS 與路由設定。

適合:單一節點遷移、臨時匯入、逐項核對參數

原生 JSON

可描述入站、出站、DNS、路由、日誌與策略,欄位最完整,但取決於特定核心的語法。

適合:自訂設定、複雜分流、核心層級部署

vmess 分享連結本身也經常包含一段 base64。經典格式是在 vmess:// 後放入編碼後的 JSON 物件,其中可能包含位址、連接埠、使用者識別碼、傳輸方式、TLS 設定與備註。這裡的 base64 只作用於單一節點物件,與「整份訂閱再次編碼」的外層 base64 並非同一層。

vless 分享連結通常使用 URI 查詢參數直接表示設定,例如伺服器位址、連接埠、加密標記、傳輸類型、TLS 或 REALITY 參數。它更接近可讀的鍵值結構,但路徑、主機名稱與備註中的特殊字元必須進行 URL 編碼。

格式 典型開頭 主要內容 能否表示完整路由
base64 訂閱 通常沒有固定協定標頭 多條分享連結或節點紀錄 通常不能
VMess 分享連結 vmess:// 單一 VMess 出站節點 不能
VLESS 分享連結 vless:// 單一 VLESS 出站節點 不能
原生 JSON { 核心完整執行設定 可以

辨識 base64、分享連結與 JSON 的操作方式

判斷格式時,應先查看解碼前後的第一層結構,不要只依檔名判斷。訂閱介面即使以 .txt 結尾,也可能回傳 base64;沒有副檔名的網址也可能直接回傳逐行分享連結。正確流程是確認回應為文字,再檢查協定標頭、JSON 結構與換行方式。

UTF-8
訂閱文字常用字元編碼
1 行
通常對應一條分享連結
10808
v2rayN 常見本機 SOCKS 連接埠
10809
v2rayN 常見本機 HTTP 連接埠
  1. 先查看明文前綴。若以 vmess://vless:// 開頭,通常可以按照單一節點分享連結處理。
  2. 再查看 JSON 頂層欄位。出現 inboundsoutboundsroutingdns 時,通常更接近 Xray 或 V2Fly 核心的原生設定。
  3. 確認是否為可解碼文字。若內容主要由字母、數字、加號、斜線與結尾等號組成,可嘗試依標準 base64 解碼,再檢查結果是否為逐行連結。
  4. 確認回應未被網頁包裝。若開頭是 <html、錯誤訊息或登入頁面,表示取得的不是可匯入訂閱資料。

以下是解碼後可能出現的逐行結構。範例網域與使用者識別碼僅用於說明欄位位置,不能用來連線。

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.com&path=%2Fws#Example-VLESS
vmess://eyJ2IjoiMiIsInBzIjoiRXhhbXBsZS1WTWVzcyIsImFkZCI6Im5vZGUuZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIn0=

第一行是可直接閱讀的 VLESS URI。問號前是使用者識別碼、伺服器與連接埠,問號後是傳輸與安全參數,井號後是節點備註。第二行的 VMess 資料仍需再解碼一次;這正是外層訂閱編碼與內層節點編碼可能疊加的情況。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks"
    }
  ],
  "outbounds": [
    {
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "node.example.com",
            "port": 443
          }
        ]
      }
    }
  ]
}

這類 JSON 已包含本機入站與遠端出站的層級,不應當成一般訂閱逐行解析。完整可執行設定還需要合法的使用者參數與相符的傳輸設定;範例只展示結構辨識方式。

v2rayN、v2rayNG 與 v2flyNG 的匯入差異

用戶端是否支援某種協定,與能否辨識某種文字格式是兩個問題。用戶端可能成功解碼訂閱,卻因目前核心不支援節點使用的傳輸或安全特性而無法連線。排查時應分別確認「解析成功」與「核心可用」。

以 v2rayN 7.x 介面為例,批次訂閱通常透過「訂閱群組」→「訂閱群組設定」新增。儲存網址後返回主介面,再執行更新訂閱。單一分享連結可先複製,再使用從剪貼簿匯入伺服器的功能。匯入後應核對位址、連接埠、傳輸類型、TLS、SNI 與路徑,而不是只看節點名稱。

推薦方案:訂閱負責節點,用戶端負責本機策略

桌面版 v2rayN
  • 透過訂閱群組維護節點清單
  • 依本機需求設定系統代理伺服器與路由
  • 使用日誌確認 10808、10809 等本機連接埠狀態
Android 版 v2rayNG 或 v2flyNG
  • 匯入同一個相容的訂閱網址
  • 更新後重新選擇有效節點
  • 依用戶端核心能力篩選協定與傳輸方式

訂閱用於同步遠端節點參數,本機 DNS、分應用程式規則與系統代理狀態仍應分別設定。

v2rayNG 使用 Xray 核心,適合匯入由該核心支援的 VMess、VLESS 及相關傳輸設定。常見流程是開啟訂閱群組設定,新增訂閱網址並執行更新;單一連結則可透過右上角的新增入口,從剪貼簿匯入。v2rayNG 1.9.x 不同小版本的選單文字可能略有調整,但訂閱群組與剪貼簿匯入是兩個獨立入口。

v2flyNG 使用 V2Fly 核心,應優先匯入伺服器端明確標示為 V2Fly 相容的設定。若訂閱中混入僅由其他核心實作的欄位,連結可能會被讀取,但在連線階段仍可能回報不支援的傳輸或安全參數。不能透過修改節點備註或刪除未知欄位來推斷協定相容性。

輸入內容 v2rayN v2rayNG v2flyNG
base64 節點訂閱 可作為訂閱群組更新 可作為訂閱更新 可匯入相容節點
單一 VMess 連結 可從剪貼簿匯入 可從剪貼簿匯入 可匯入相容連結
單一 VLESS 連結 取決於所選核心與參數 取決於 Xray 支援情況 取決於 V2Fly 支援情況
完整核心 JSON 按自訂設定處理 不等同於一般節點訂閱 不等同於一般節點訂閱

格式轉換的可行方式與資訊遺失

格式轉換首先要區分「編碼轉換」與「協定轉換」。將 base64 解碼為逐行分享連結只是還原文字,不會改變節點協定;將 VLESS 改寫為 VMess 則涉及伺服器端驗證與協定實作,不能只靠替換連結前綴完成。

將 base64 訂閱轉換為明文連結清單通常是可逆的:依 UTF-8 解碼後保留每一行,再按原順序編碼即可。請注意,標準 base64 與 URL 安全變體對字元的處理不同,錯誤刪除結尾補位符號可能導致解碼失敗。

  1. 將 base64 訂閱轉為分享連結清單:解碼外層文字、統一換行符號、移除空行,再逐一辨識協定標頭。這個過程一般不會遺失節點欄位。
  2. 將分享連結匯入用戶端:用戶端解析單一節點參數,並在本機產生相應的出站設定。用戶端自己的 DNS、路由與日誌設定不會來自分享連結。
  3. 將分享連結轉為原生 JSON:可以產生一個出站物件,但仍需補充本機入站、DNS、路由、日誌與策略,才可能成為完整的執行設定。
  4. 從原生 JSON 擷取分享連結:只適用於結構明確的單一出站。多個出站、負載分配、路由規則、DNS 伺服器與策略物件,無法完整裝入一條普通連結。
  5. VMess 與 VLESS 互轉:只有在伺服器端同時提供兩種協定的監聽與驗證參數時,才能分別產生相應連結。用戶端無法自行推導另一種協定設定。

結論:先確定目標層級,再執行轉換

只是遷移節點時,保留分享連結即可;需要複製整套 DNS 與路由行為時,應遷移原生 JSON,或在目標用戶端重新設定本機策略。將完整 JSON 壓縮成單一連結,必然會捨棄部分執行邏輯。

轉換 VLESS URI 時,還要保留查詢參數的大小寫與值域。例如 type=wssecurity=tlssni=edge.example.compath=%2Fws 分別描述傳輸、安全層、伺服器名稱與路徑。遺漏任何一個關鍵欄位,都可能表現為握手失敗或連線後沒有流量。

VMess 連結的 JSON 欄位存在不同的歷史表示方式,連接埠可能是字串,也可能被解析為數字。處理時應先依用戶端可接受的結構輸出,不應只根據欄位名稱機械拼接。遇到匯入成功但節點參數為空的情況,應重新解碼連結,逐項核對位址、連接埠、使用者識別碼、傳輸類型與 TLS 欄位。

訂閱轉換失敗的常見問題

訂閱更新失敗不一定是格式問題。網路逾時、網址回傳登入頁面、回應被截斷、字元編碼錯誤與用戶端核心不相容,都可能產生相似提示。最有效的排查方式,是先確認下載到的原始內容,再進行節點解析與連線測試。

開啟訂閱網址後只有一長串字元,這樣正常嗎?

如果字元主要由字母、數字、加號、斜線與結尾等號組成,可能是標準 base64。解碼後應出現逐行分享連結;若結果仍是亂碼,請檢查回應編碼與內容是否完整。

連結可以匯入,但更新後節點數量為零,該怎麼辦?

先確認回應不是網頁錯誤頁面,再檢查解碼結果是否包含用戶端可辨識的協定標頭。v2rayN 7.x 可開啟日誌查看訂閱解析提示,並確認訂閱群組沒有啟用錯誤的篩選條件。

為什麼同一個訂閱在兩個用戶端中的節點數量不同?

用戶端可能依核心能力篩除不相容節點,也可能採用不同的備註去重規則。請分別記錄更新前後的節點數量,再比較被忽略連結的協定與傳輸參數。

將原生 JSON 編碼成 base64,就能當成訂閱嗎?

不能直接等同。常見 base64 訂閱的解碼結果是逐行分享連結,而完整 JSON 是單一設定物件。除非接收端明確支援這種回應結構,否則仍會解析失敗。

如果訂閱更新逾時,可以先連線到一個已確認可用的節點,再檢查更新請求是否允許經過目前的代理伺服器。在 v2rayN 中也應核對本機監聽連接埠是否被占用;常見設定使用 10808 作為 SOCKS 連接埠、10809 作為 HTTP 連接埠,但實際值應以「設定」→「參數設定」中的目前設定為準。

建立可維護的訂閱與設定遷移流程

穩定的遷移流程應保留原始訂閱網址、解碼後的節點清單與用戶端本機設定這三類資訊。訂閱網址負責後續更新,節點清單便於定位解析問題,本機設定則包含不會隨分享連結遷移的系統代理、DNS、路由分流與連接埠等內容。

更換用戶端或核心前,先記錄目前可用節點的協定、伺服器連接埠、傳輸類型與安全參數,再使用目標用戶端匯入同一個訂閱。更新完成後不要立即批次修改所有節點,應先選取一個 VMess 或 VLESS 節點進行延遲測試與實際連線,確認日誌沒有協定欄位錯誤。

  1. 記錄訂閱網址所屬群組、更新方式與最近一次成功更新的時間。
  2. 擷取一條已知可用的連結,核對協定、位址、連接埠、使用者識別碼與傳輸參數。
  3. 在目標用戶端新增訂閱,不要覆蓋現有的可用群組。
  4. 執行一次手動更新,並記錄更新前後的節點數量。
  5. 選擇單一節點進行測試,檢查核心日誌、DNS 解析與本機監聽連接埠。
  6. 確認連線正常後,再還原路由分流、自動更新與系統代理設定。

對於只需要在 v2rayN 與 v2rayNG 之間同步節點的情境,優先保留訂閱網址,不必反覆匯出完整 JSON。對於依賴複雜網域分流、多個出站與自訂 DNS 的情境,應將節點遷移與路由遷移拆成兩個步驟,避免誤以為分享連結已包含所有行為。

最終判斷標準不是檔案能否被「匯入」,而是欄位是否完整解析、目前核心是否支援、連線日誌是否正常,以及本機代理與路由是否依預期生效。先辨識資料層級,再選擇相應的匯入口,便能減少大多數訂閱轉換問題。

下載 v2rayN 查看四個平台的安裝包