V2Ray 訂閱格式完整解析:Base64、原生 JSON 與分享連結互轉方法

Base64 訂閱、原生 JSON 設定,以及 VMess、VLESS 分享連結並不是同一種資料。先判斷外層容器與節點協定,再進行解碼、拆分或匯入,可減少格式錯誤與欄位遺失。

本文速覽

本文適合需要匯入、遷移或排查 V2Ray 訂閱的使用者,說明 Base64 文字、原生 JSON 與分享連結的結構差異,提供從格式辨識到客戶端匯入的完整流程,並整理轉換時最容易遺失的傳輸、TLS、路由與訂閱更新資訊。

先區分訂閱、分享連結與執行設定

「訂閱」通常是指一個可定期請求的網址。客戶端存取該網址後,伺服器會回傳一組節點資料,再將這些節點寫入本機資料庫。訂閱網址本身不等於節點,更接近持續更新的資料入口;同一個網址今天回傳 8 個節點,下次更新時可能變成 10 個。

「分享連結」則代表單一節點。常見格式以 vmess://vless:// 開頭,連結中帶有伺服器位址、連接埠、使用者識別碼、傳輸方式與 TLS 參數。多個分享連結可以逐行排列,再整體編碼成訂閱回應,但單一連結本身不具備自動更新能力。

「原生 JSON」通常是 V2Ray 或 Xray 核心可讀取的執行設定。它包含 inboundsoutboundsroutingdns 等物件,描述的不只是遠端節點,也包括本機監聽連接埠、流量入口與路由行為。將完整執行設定當成一般訂閱匯入,客戶端不一定能解析出節點清單。

訂閱回應

資料數量
通常包含多個節點
常見外層格式
Base64 文字
更新方式
依訂閱網址重新請求
主要用途
批次管理節點

重點是節點集合與後續更新,不負責儲存客戶端的完整設定。

單一節點連結

資料數量
每條連結代表一個節點
常見前綴
vmess 或 vless
更新方式
重新匯入連結
主要用途
分享與快速遷移

適合遷移少量節點,無法保留訂閱群組的遠端更新關係。

原生 JSON

頂層物件
inbounds 與 outbounds
本機連接埠
可包含 10808、10809
路由規則
可完整表達
主要用途
核心執行設定

匯入前要確認客戶端支援以完整設定執行,而不只是解析節點。

客戶端本機資料

節點記錄
來自訂閱或手動新增
群組資訊
由客戶端管理
系統代理伺服器
屬於本機設定
路由模式
可能獨立於訂閱

遷移節點不等於遷移本機連接埠、路由模式與系統代理狀態。

結論:先確認資料層級再進行轉換

需要定期更新時保留訂閱網址;只遷移單一節點時使用分享連結;需要複製本機入站、DNS 與路由行為時,才考慮完整 JSON 設定。

如何辨識與解碼 Base64 訂閱

傳統 V2Ray 訂閱回應通常會先將多條分享連結以換行符號串接,再對整段 UTF-8 文字執行 Base64 編碼。使用瀏覽器直接開啟訂閱網址時,看到的內容可能是一長串由字母、數字、加號、斜線與等號組成的文字。解碼外層後,才會出現逐行排列的 vmess://vless:// 連結。

判斷時不能只看字串是否「看起來像 Base64」。一般文字、壓縮資料與某些 URL 安全編碼也可能有相似外觀。可靠的方法是先讀取回應的內容類型與前幾個字元,再嘗試解碼;解碼結果應是有效的 UTF-8 文字,而且每個非空行都應有可辨識的協定前綴。若解碼後仍是一段編碼文字,應檢查是否發生重複編碼,而不是持續盲目解碼。

取得回應 判斷容器 解碼文字 逐行解析 寫入群組

外層解碼後的典型結構

vmess://編碼後的單一節點資料
vless://使用者識別碼@node-a.example:443?encryption=none&security=tls&type=ws&path=%2Fedge#A-WS
vless://使用者識別碼@node-b.example:443?encryption=none&security=reality&type=tcp&flow=xtls-rprx-vision#B-TCP

上述內容僅展示結構,不提供可連線的憑證。實際解析時應依換行符號切分,並相容 Unix 的 LF 與 Windows 的 CRLF。空行可以忽略,但行首與行尾的空白應先清除。若伺服器回傳的文字結尾沒有換行符號,最後一條連結仍必須解析。

Base64 另有標準字母表與 URL 安全字母表之分。標準格式使用加號與斜線,URL 安全格式則使用連字號與底線;結尾的等號填充也可能省略。成熟的客戶端通常能相容這些差異,但手動處理時應先統一字母表並補齊長度。編碼長度除以 4 後餘數為 2 時,需補兩個等號;餘數為 3 時,需補一個等號;餘數為 1 通常表示文字已遭截斷。

VMess、VLESS 分享連結的欄位差異

VMess 與 VLESS 分享連結的編碼方式不同。常見的 VMess 連結會在 vmess:// 後放置一段 Base64 編碼的 JSON,物件中可能包含 addportidnetpathhosttlssni 等欄位。部分舊格式還會出現 vpsaid,其中常見的設定版本值為 2,現代部署中的 aid 通常為 0。

VLESS 分享連結更接近標準 URI:使用者識別碼位於使用者名稱區域,伺服器位址與連接埠位於主機區域,傳輸與安全參數放在查詢字串中,節點備註則放在井字號後的片段中。例如 type=ws 代表 WebSocket,security=tls 代表 TLS,path=%2Fedge 解碼後為 /edge。參數順序通常不影響意義,但參數名稱與值都必須正確進行 URL 編碼。

欄位用途 VMess 常見欄位 VLESS 常見位置 轉換注意事項
伺服器 add URI 主機部分 IPv6 位址需要保留方括號
連接埠 port URI 連接埠部分 必須是 1 至 65535 的整數
使用者識別碼 id URI 使用者資訊部分 複製時不能增加空格
傳輸類型 net type ws、tcp、grpc 不可直接混用
傳輸路徑 path pathserviceName WebSocket 路徑與 gRPC 服務名稱的意義不同
安全層 tls security TLS 與 Reality 所需的參數不同
伺服器名稱 sni sni 不要用節點備註取代伺服器名稱

轉換並非簡單更換前綴

VMess 與 VLESS 是不同協定,不能直接將 vmess:// 改成 vless://。即使伺服器位址、連接埠與傳輸層相同,伺服器端也必須存在相應的協定入站,使用者驗證方式也要相符。所謂「互轉」更準確地說,是在已知伺服器端同時支援目標協定時,將共用連線參數對應至另一種連結結構。

傳輸欄位必須依語意進行對應。例如 VMess JSON 中的 net=ws 可對應至 VLESS 的 type=wspath=/edge 則需要轉為經 URL 編碼的查詢參數;但 Reality 所需的公鑰、短識別碼、指紋與 Flow 並不存在於傳統 VMess + TLS 連結中,轉換工具無法憑空產生這些值。

結論:轉換只能對應現有參數

目標連結缺少公鑰、短識別碼、SNI 或 gRPC 服務名稱時,應向節點提供者取得完整參數;使用預設值補齊,通常只會得到格式正確但無法連線的連結。

如何整理原生 JSON 與分享連結

從原生 JSON 擷取分享連結時,首先定位 outbounds 中協定為 VMess 或 VLESS 的出站,再讀取伺服器、連接埠與使用者欄位。接著還要檢查 streamSettings:其中的 network 決定傳輸類型,security 決定 TLS 或 Reality,具體的 WebSocket、gRPC、TCP 設定則位於相應的子物件中。

反向產生 JSON 時,分享連結只能還原遠端出站及其傳輸參數。它通常無法提供本機 SOCKS 連接埠、HTTP 連接埠、DNS 伺服器、日誌層級與完整路由規則。因此,將分享連結轉換成 JSON 後,仍需要由客戶端或設定產生器補上本機部分。常見的本機組合是 SOCKS 監聽 127.0.0.1:10808、HTTP 監聽 127.0.0.1:10809,實際連接埠應以目前客戶端設定為準。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks"
    }
  ],
  "outbounds": [
    {
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "node.example",
            "port": 443,
            "users": [
              {
                "id": "範例值已隱藏",
                "encryption": "none"
              }
            ]
          }
        ]
      }
    }
  ]
}

這段 JSON 僅用於說明層級。實際設定還需要與節點相符的 streamSettings,並可能需要額外的直連與阻斷出站。若直接匯入缺少傳輸設定的設定,而伺服器實際使用 WebSocket + TLS,核心會以不相符的預設傳輸嘗試連線,日誌中通常只能看到連線遭關閉或交握失敗。

從完整設定匯出單一節點連結時,還會遇到路由資訊無法表達的問題。網域分流、GeoIP、GeoSite、程序規則與 DNS 查詢策略屬於執行設定,不是單一節點 URI 的欄位。正確做法是分別遷移節點與路由:節點透過分享連結匯入,路由規則則透過客戶端的備份、匯入功能或手動設定復原。

  1. 檢查 JSON 頂層是否包含 outbounds,並確認目標出站的協定名稱。
  2. 讀取伺服器位址、連接埠與使用者參數,不要複製範例或已失效的記錄。
  3. streamSettings 擷取傳輸、安全層、SNI、路徑與服務名稱。
  4. 依目標協定產生分享連結,並對路徑、備註與查詢參數進行 URL 編碼。
  5. 匯入客戶端後開啟詳細資訊頁面,逐項核對連接埠、傳輸、TLS、SNI 與使用者識別碼。
  6. 先測試單一節點,再批次加入訂閱回應,避免錯誤參數擴散至整個群組。

三款客戶端的匯入範圍與具體操作

v2rayN 是桌面客戶端,可管理訂閱群組、單一節點連結與自訂設定。以 7.x 系列介面為例,新增訂閱網址可進入「訂閱群組」→「訂閱群組設定」,建立新群組後填入訂閱網址並儲存,再執行「訂閱群組」→「更新全部訂閱」。若剪貼簿中有多條分享連結,可使用「伺服器」→「從剪貼簿匯入批次 URL」。

v2rayNG 使用 Xray 核心處理常見的 VMess 與 VLESS 節點。在 Android 端新增訂閱時,可開啟左上角選單,進入「訂閱群組設定」,使用右上角的新增按鈕儲存網址,再回到主畫面執行更新。單條或多條分享連結可先複製到剪貼簿,再透過右上角「+」選擇「從剪貼簿匯入」。不同小版本的文字可能略有差異,但入口仍以訂閱群組與新增按鈕為主。

v2flyNG 使用 v2fly 核心,適合以 VMess 與 V2Ray 核心相容設定為主的情境。其訂閱與剪貼簿匯入流程接近 Android 端常見版面,但協定辨識範圍取決於核心能力。若訂閱包含僅由另一個核心實作的安全方式或傳輸組合,連結可能可以解析並顯示,但執行時仍可能失敗。

客戶端 主要平台 Base64 多節點訂閱 分享連結 完整 JSON
v2rayN 7.x 桌面端 可依訂閱群組更新 支援剪貼簿批次匯入 可作為自訂設定使用,但需核對核心
v2rayNG 1.10.x Android 可儲存網址並更新 支援剪貼簿與檔案匯入 匯入能力取決於設定結構與 Xray 核心
v2flyNG 1.x Android 可管理訂閱群組 適合 V2Ray 相容連結 需符合 v2fly 核心的支援範圍

匯入後必須核對的六項參數

轉換失敗、訂閱為空與亂碼的排查方法

轉換失敗通常發生在三個階段:取得訂閱回應、解碼外層容器、解析單一節點。排查時應依照這個順序進行,不要一開始就修改協定參數。若訂閱請求已回傳錯誤頁,後續的 Base64 解碼與節點匯入都不會產生有效結果。

可以先記錄三個具體數值:HTTP 狀態、回應位元組數與解碼後的非空行數。例如狀態正常、回應為 18 KB、解碼後得到 24 行,表示訂閱取得與外層解碼基本完成;若客戶端最後只顯示 20 個節點,應繼續檢查其餘 4 行的協定前綴或欄位格式。

訂閱更新後顯示零個節點,該怎麼辦?

先不要刪除原有群組。將訂閱網址複製到受控環境中檢查回應類型;若內容以網頁標籤開頭,通常表示請求被重新導向至提示頁。確認網址完整後,在客戶端重新儲存並更新。

Base64 解碼提示長度不正確,該怎麼辦?

先刪除換行與前後空白,再確認使用的是標準還是 URL 安全字母表。長度除以 4 餘 2 時補兩個等號,餘 3 時補一個;餘 1 時應重新取得原文。

匯入成功但節點名稱全是亂碼,該怎麼辦?

確認訂閱回應與解碼結果以 UTF-8 讀取。若只有井字號後的備註出現亂碼,請重新對 URI 片段執行百分比解碼;不要將整條連結重複解碼。

VLESS 連結匯入後缺少路徑,該怎麼辦?

查看原始連結是否包含 type=wspath=。路徑中的斜線應編碼為 %2F;若使用 gRPC,應核對 serviceName,而不是填寫 WebSocket 路徑。

為什麼同一條連結在不同客戶端的表現不同?

先比較客戶端核心家族與版本,再開啟節點詳細資訊核對未辨識的參數。連結解析成功只代表結構可讀,不代表目前核心已實作相應的傳輸與安全組合。

使用日誌定位欄位層級錯誤

若節點能夠啟動但無法建立連線,先查看客戶端核心日誌。DNS 解析失敗通常指向網域或 DNS 設定;連線逾時更可能是位址、連接埠或網路路徑問題;TLS 交握失敗應重點檢查 SNI、系統時間與安全層;啟動階段直接回報設定欄位錯誤,則需要檢查 JSON 層級或目前核心是否認得該欄位。

本機連接埠衝突也會造成「匯入正確但無法使用」。例如 SOCKS 連接埠設定為 10808,而另一個執行個體已監聽相同連接埠,核心可能無法啟動。在 v2rayN 中進入「設定」→「參數設定」核對連接埠,並關閉重複執行的執行個體;Android 端則先停止目前連線,再重新啟動目標設定。

安全遷移與長期維護建議

訂閱網址可能具備存取節點清單的能力,應依敏感設定進行管理。儲存時使用客戶端的訂閱群組,不要在截圖、公開文件與聊天記錄中展示完整網址。需要跨裝置遷移時,優先透過客戶端本身的設定匯出功能傳遞,完成後清理暫存檔案。

不要依賴線上轉換頁面處理真實訂閱。Base64 只是編碼,不提供保密能力;任何能讀取原文的服務都能取得其中的節點參數。需要檢查結構時,可以在本機複製一份,先移除使用者識別碼與訂閱查詢參數,再進行格式分析。

長期維護應將「節點來源」與「本機策略」分開。訂閱負責更新節點,客戶端負責系統代理、TUN、DNS 與路由分流。如此即使訂閱清單發生變化,本機的直連網域、阻斷規則與監聽連接埠也不會隨節點一起被意外覆蓋。

  1. 為不同來源建立獨立的訂閱群組,不要將所有節點合併成一個無法追蹤的清單。
  2. 更新前記錄節點數量,更新後比較新增、刪除與名稱變更。
  3. 保留一份已驗證可用的節點副本,避免訂閱暫時異常導致所有設定都無法使用。
  4. 每次轉換後至少抽查一條 VMess 與一條 VLESS 節點,核對傳輸層欄位。
  5. 客戶端升級後,先驗證訂閱更新、節點啟動與本機連接埠,再恢復自動更新排程。

結論:分開維護節點格式與本機策略

訂閱只負責更新節點集合,分享連結只負責遷移單一節點,JSON 才能表達完整的執行結構。依這三個層級儲存資料,日後更換客戶端或核心時,更容易定位相容性問題。

客戶端入口 查看各平台下載選項