訂閱連結格式詳解base64原生 JSON分享連結的差異與互轉

解析三種常見訂閱格式與適用客戶端,說明如何還原 base64 內容、理解原生 JSON 欄位,以及轉換分享連結與完整訂閱的方法。

在 v2rayN、v2rayNG 或 v2flyNG 中新增伺服器時,使用者拿到的內容可能是一個以 https:// 開頭的訂閱網址,也可能是一串看不出結構的 base64 文字,或是以 vmess://vless:// 開頭的單節點分享連結。這些格式都能承載連線資訊,但更新方式、可攜性與匯入入口各不相同。

本文速覽

本文適合需要辨識訂閱內容、排查匯入失敗,或在桌面端與 Android 裝置間轉移節點的使用者。讀完即可掌握三種格式的界線、安全還原 base64 內文、讀懂 V2Ray JSON 的關鍵欄位,並依客戶端類型選擇正確的匯入方式。

先判斷拿到的是訂閱網址、編碼內文還是分享連結

「訂閱連結」常被用來泛指多種內容。嚴格來說,訂閱網址是可重複請求的網路入口,客戶端存取後才會取得節點清單;base64 是伺服器回傳節點清單時常用的編碼包裝;分享連結通常只描述單一節點。原生 JSON 更接近完整設定檔或結構化介面回應,不一定就是可更新的訂閱。

最快的辨識方式是查看開頭字元。以 https:// 開頭且路徑較長的內容,通常是遠端訂閱網址;由連續英文字母、數字、加號、斜線或底線組成的長文字,可能是 base64 或 URL-safe base64;以 vmess://vless:// 開頭的內容則是協定分享連結;以左大括號開頭且包含成對欄位名稱的內容,通常是 JSON。

3 類
常見內容形式
443
HTTPS 訂閱常用連接埠
10808
常見本機 SOCKS 連接埠
10809
常見本機 HTTP 連接埠

遠端訂閱網址

推薦

客戶端會定期請求同一個網址,伺服器可新增、刪除或調整節點,適合長期維護。

適合:日常使用、多裝置同步節點清單

單節點分享連結

一個連結對應一個 VMess 或 VLESS 節點,複製方便,但不會自動取得後續節點變更。

適合:臨時匯入、單節點轉移與故障測試

原生 JSON 設定

可同時描述入站、出站、DNS、路由與記錄,結構完整,但依賴核心的欄位規範。

適合:設定備份、精細路由與技術排障

結論:先看更新能力,再看文字外觀

只有能由客戶端儲存並再次請求的網址,才具備訂閱更新能力。解碼後的節點清單、單一分享連結與本機 JSON 檔案即使都能匯入,也不會自動變成遠端訂閱。

如何還原與檢查 base64 訂閱內文

base64 是編碼方式,不是加密協定。它會將原始位元組轉換成方便文字傳輸的字元,因此看到一大段不可讀的文字,不代表內容已被保密處理。常見的 V2Ray 訂閱會先將多個分享連結以換行分隔,再對整段文字進行 base64 編碼。解碼後通常是一行一個 vmess://vless:// 網址。

標準 base64 常見字元包括大小寫英文字母、數字、+/,以及結尾的填充字元 =。URL-safe 變體會將 + 換成 -,將 / 換成 _,也可能省略結尾填充。客戶端通常相容於兩種變體,但手動檢查時需先還原字元與填充。

  1. 確認目前內容是伺服器回傳的內文,而不是仍以 https:// 開頭的遠端網址。
  2. 移除複製過程中帶入的空格與前後換行,但不要刪除內文中可能存在的有效字元。
  3. 將 URL-safe base64 的 -_ 還原為標準字元,並將長度補至 4 的整數倍。
  4. 解碼後檢查每一行是否有明確的協定標頭、節點名稱是否出現亂碼,以及連接埠是否介於 1 至 65535。
  5. 如果解碼結果仍是一段 base64,請先判斷它是否為 VMess 分享連結內部的第二層編碼,不要無條件重複解碼。

以下瀏覽器主控台程式碼只會處理目前裝置上的文字。執行後會跳出輸入框,再將解碼結果輸出到主控台。訂閱內文通常包含伺服器位址、使用者識別碼與傳輸參數,應避免將真實內容提交至不明的線上轉換頁面。

const encoded = prompt("貼上 base64 訂閱內文").trim();
const normalized = encoded.replace(/-/g, "+").replace(/_/g, "/");
const padded = normalized.padEnd(
  Math.ceil(normalized.length / 4) * 4,
  "="
);
const bytes = Uint8Array.from(
  atob(padded),
  character => character.charCodeAt(0)
);
console.log(new TextDecoder().decode(bytes));

原生 JSON 設定包含哪些關鍵欄位

V2Ray 或 Xray 核心使用的原生 JSON 是一棵設定樹,不只是伺服器位址。一個可執行的設定通常至少包含本機入站 inbounds 與遠端出站 outbounds;依需求還會加入 routingdnslog 與策略欄位。訂閱服務回傳的自訂 JSON 節點陣列,可能使用完全不同的欄位名稱,需要客戶端明確支援;不能因為內容是 JSON,就直接當成核心設定匯入。

欄位路徑 用途 檢查重點
inbounds[].port 客戶端在本機監聽的代理連接埠 避免與其他程式使用的 10808、10809 等連接埠衝突
outbounds[].protocol 指定 VMess、VLESS 等出站協定 必須與伺服器端協定一致
settings.vnext[].address 遠端伺服器網域或位址 不要附帶協定標頭與路徑
settings.vnext[].port 遠端伺服器連接埠 HTTPS 類傳輸常見為 443,但應以實際設定為準
streamSettings.network 指定 TCP、WebSocket 等傳輸方式 必須與路徑、請求標頭等傳輸參數搭配
streamSettings.security 描述 TLS 等傳輸安全層 啟用 TLS 時同時檢查伺服器名稱
routing.rules 依網域、IP 或入站標籤執行分流 規則由上到下判斷,最先符合的規則生效

以下是一個用於理解欄位層級的 VLESS 與 WebSocket 範例。範例網域僅供文件說明使用,重點是觀察 outbounds 中的協定參數與 streamSettings 中的傳輸參數如何分工。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "edge.example.net",
            "port": 443,
            "users": [
              {
                "id": "d342d11e-d424-4583-b36e-524ab1f0afa4",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "wsSettings": {
          "path": "/gateway"
        },
        "tlsSettings": {
          "serverName": "edge.example.net"
        }
      }
    }
  ]
}
  • address 只放主機名稱,WebSocket 路徑則單獨放在 wsSettings.path
  • VLESS 使用者項目中的 encryption 通常寫成 none,傳輸層是否啟用 TLS 則由 streamSettings.security 決定。
  • 本機 SOCKS 入站監聽 127.0.0.1,表示只接受本機連線;若要與區域網路分享,還需另行評估監聽位址與存取控制。
  • 完整設定也可能包含直連、阻斷等多個出站,並透過 tag 與路由規則建立關聯。

VMess 與 VLESS 分享連結的內部差異

VMess 分享連結常見形式是在 vmess:// 後接一段 base64 內容。解碼後通常會得到 JSON 物件,其中可能包含位址、連接埠、使用者識別碼、傳輸類型、TLS 狀態、WebSocket 路徑與節點備註。這裡的 JSON 是單節點分享格式,不等同於核心可直接執行的完整設定,因為通常不包含本機入站、DNS 與路由等部分。

VLESS 分享連結更接近標準 URI:使用者識別碼位於 @ 前方,伺服器與連接埠位於後方;傳輸、安全層、伺服器名稱與路徑等參數放在查詢字串中,節點名稱則放在 # 後方。簡化後的結構如下所示。

vless://[email protected]:443?encryption=none&security=tls&sni=edge.example.net&type=ws&path=%2Fgateway#Example-WS
d342d11e-d424-4583-b36e-524ab1f0afa4
使用者識別碼,匯入時應完整保留字元與連字號。
edge.example.net:443
伺服器位址與連接埠,連接埠前使用半形冒號。
security=tls
傳輸安全層參數,不代表協定欄位本身有所變更。
type=ws
使用 WebSocket 傳輸,必須與伺服器端設定一致。
path=%2Fgateway
經過 URL 編碼的路徑,解碼後為 /gateway
#Example-WS
客戶端顯示名稱,不參與伺服器驗證。

三種格式如何互轉而不遺失參數

最常見的轉換是「將訂閱內文轉成分享連結清單」。如果遠端回應是 base64,先以 UTF-8 解碼,再按換行拆分;取得的每一行通常已是可匯入的分享連結。反向操作則是以換行符號連接多個分享連結,再將整段內容進行 base64 編碼。這個過程只會改變包裝方式,不會讓靜態文字具備遠端更新能力。

「分享連結轉原生 JSON」需要進行欄位對應。以 VLESS 為例,URI 中的使用者識別碼對應至 settings.vnext[].users[].id,主機與連接埠對應至 addressport,查詢參數中的 type 對應 streamSettings.networksecurity 對應傳輸安全層,sni 與路徑則放入各自的傳輸設定。之後還需補齊本機入站與必要出站,才能構成可執行的設定。

推薦方案:訂閱負責同步,分享連結負責單節點轉移

桌面端 v2rayN
  • 儲存遠端訂閱網址並設定更新間隔
  • 臨時節點使用剪貼簿批次匯入
  • 複雜路由留在客戶端設定中維護
Android 端 v2rayNG 或 v2flyNG
  • 使用同一個遠端訂閱,維持節點一致
  • 單一節點透過分享連結或 QR Code 匯入
  • 更新後重新選取目前使用中的節點

不要用解碼後的靜態節點清單覆寫原有訂閱網址;保留遠端入口,後續更新才不會中斷。

  1. 先備份原始內容,區分遠端網址、回應內文與單節點連結。
  2. 列出必須保留的欄位:協定、伺服器、連接埠、使用者識別碼、傳輸方式、安全層、伺服器名稱、路徑與備註。
  3. 完成解碼或結構轉換後,逐項比較欄位,不要只確認節點名稱是否出現。
  4. 先匯入一個節點測試記錄與連線,再批次處理其餘節點。
  5. 確認客戶端中的訂閱記錄仍保留原始 https:// 網址,並執行一次手動更新。

結論:轉換格式不等於轉換協定

base64 與 URI 只是資訊包裝,VMess 與 VLESS 才是協定選擇。轉換包裝方式時,應維持協定與傳輸參數不變;若同時變更協定,必須由伺服器端提供對應設定,客戶端無法單方面完成。

在 v2rayN、v2rayNG 與 v2flyNG 中正確匯入

v2rayN 7.x 的訂閱入口通常位於「訂閱群組」→「訂閱群組設定」。新增群組時填入遠端網址,儲存後使用「訂閱群組」→「更新全部訂閱」取得節點。單一節點分享連結則可先複製到剪貼簿,再使用伺服器匯入相關入口。不同小版本的選單文字可能略有調整,但「訂閱群組」與「伺服器匯入」是兩條獨立路徑。

連線後若系統應用程式沒有流量,請進入「設定」→「參數設定」檢查本機連接埠。常見設定會使用 SOCKS 連接埠 10808 與 HTTP 連接埠 10809,實際值應以目前設定頁面為準。連接埠被其他程式占用時,核心記錄通常會出現監聽失敗;此時請改用閒置連接埠,並同步修改瀏覽器或系統代理設定。

  • v2rayN:適合桌面端訂閱群組、批次節點管理與自訂路由。匯入後先更新訂閱,再選取使用中的伺服器,最後設定系統代理模式。
  • v2rayNG:Android 端使用 Xray 核心,適合匯入 VMess、VLESS 分享連結與遠端訂閱。更新後請確認目前選取的節點仍然存在。
  • v2flyNG:Android 端使用 v2fly 核心,適合以 VMess 等相容設定為主的使用環境。遇到擴充參數時,應先確認核心是否能識別對應欄位。

貼上訂閱網址後,為什麼一個節點都沒有?

先確認貼上的是以 https:// 開頭的完整網址,再執行一次手動更新。若回應內容能在瀏覽器中開啟,但客戶端沒有節點,請檢查回傳的是 base64 節點清單、原生 JSON,還是客戶端無法識別的自訂結構。

base64 解碼後仍是一串編碼文字,該怎麼辦?

先檢查結果是否以 vmess:// 開頭。VMess 分享連結本身可能還包含一層 base64 JSON,這是正常的兩層包裝;第一層是訂閱清單,第二層是單節點內容。

分享連結匯入成功,為什麼連線仍然逾時?

逐項檢查伺服器位址、連接埠、傳輸類型、TLS 狀態、伺服器名稱與 WebSocket 路徑。匯入成功只代表格式能被解析,不代表所有欄位都與伺服器端一致。

同一個訂閱在桌面端和 Android 端的節點數量不同?

先在兩端記錄更新時間並重新更新。若數量仍不同,請檢查客戶端核心是否支援訂閱中的所有協定與擴充參數,同時查看是否啟用了群組篩選或隱藏無效節點。

更新訂閱時顯示逾時,應該先改格式嗎?

不要立即轉換。先確認網路能存取訂閱網域,再嘗試在客戶端選擇透過目前代理更新。只有在成功取得回應但解析失敗時,才需要檢查 base64、JSON 或分享連結格式。

訂閱維護與排障的固定順序

格式問題與網路問題很容易混在一起。訂閱請求逾時發生在「取得內容」階段,base64 字元異常或 JSON 欄位錯誤發生在「解析內容」階段,節點連線逾時則發生在「使用設定」階段。依階段查看記錄,可以避免網路無法存取時反覆修改格式,也能避免參數錯誤時盲目更換本機代理連接埠。

建議保留遠端訂閱網址、最近一次成功更新時間與客戶端版本記錄。節點異常時先手動更新,再測試一個明確可用的節點,最後查看核心記錄。v2rayN 中可同時核對訂閱群組狀態與記錄面板;Android 端則應檢查目前設定是否在更新後被切換或刪除。

  1. 取得階段:檢查訂閱網域、HTTPS 連線與回應狀態,確認客戶端確實收到內文。
  2. 解析階段:判斷內文屬於 base64、JSON 還是分享連結清單,檢查換行、填充與字元編碼。
  3. 匯入階段:核對客戶端是否新增節點,以及節點數量與群組名稱是否符合預期。
  4. 連線階段:檢查位址、連接埠、使用者識別碼、傳輸方式、安全層、伺服器名稱與路徑。
  5. 代理階段:檢查使用中的伺服器、系統代理模式,以及 10808、10809 等本機連接埠是否正常監聽。
  6. 路由階段:連線正常但特定網域行為異常時,再檢查 routing.rules 的順序與出站標籤。
下載 V2Ray 客戶端 Windows、macOS、Android、Linux