本文速覽

本文適合需要判斷訂閱內容、遷移單一節點或排查匯入失敗的 v2rayN、v2rayNG 與 v2flyNG 使用者。讀完即可分辨聚合訂閱、完整設定與分享連結,了解三者能轉換到什麼程度,並依用戶端入口完成匯入與驗證。

三種格式各自解決不同問題

「訂閱」常被當作泛稱,但實際取得的內容可能分屬三個層級。base64 聚合訂閱是多條分享連結的封裝;VMess 或 VLESS 分享連結通常只描述一個出站節點;原生 JSON 則可能是包含入站、出站、DNS、記錄與路由規則的完整執行設定。先判斷層級,再選擇匯入方式,比反覆嘗試不同按鈕更有效。

在瀏覽器開啟訂閱網址後看到一長串英文字母、數字和少量等號,不代表內容已損壞。它可能是整份文字經過 base64 編碼的結果。解碼後若每行以 vmess://vless:// 開頭,就是常見的聚合訂閱。這裡的編碼只是用來封裝文字,不等於加密,也不會改變節點本身的參數。

base64 聚合訂閱

推薦

一個網址可回傳多個節點,用戶端更新時能一次替換整份伺服器清單,適合持續維護。

適合:日常更新訂閱、同步多台裝置的節點清單

VMess 或 VLESS 分享連結

一條連結描述一個節點,方便臨時匯入、複製到另一台裝置,或比對參數差異。

適合:遷移單一節點、手動測試、核對參數

原生 JSON 設定

可同時描述入站監聽、多個出站、DNS 與路由,結構最完整,但取決於核心欄位的相容性。

適合:精細分流、伺服器端設定、進階排錯

格式 常見開頭 承載範圍 典型匯入結果
base64 聚合 沒有固定協定標頭 多條分享連結 產生一組伺服器記錄
VMess 分享連結 vmess:// 單一 VMess 節點 產生一筆伺服器記錄
VLESS 分享連結 vless:// 單一 VLESS 節點 產生一筆伺服器記錄
原生 JSON { 完整或局部核心設定 作為自訂設定執行或解析

結論:先辨識承載層級,再決定轉換方式

需要長期更新一批節點時,保留訂閱網址;只遷移一個節點時,使用分享連結;涉及 DNS、入站連接埠和路由規則時,保存原生 JSON。三者並不只是檔案副檔名不同。

base64 聚合訂閱的內部結構

典型聚合訂閱的原始回應是一段 base64 文字。解碼後通常會得到 UTF-8 文字,每行放置一條分享連結,換行符號可能是 LF 或 CRLF。用戶端更新訂閱時,會先請求網址,再解碼文字,接著依協定標頭逐行解析。無法辨識的行通常會被略過,因此「更新成功但節點數量為零」往往表示解碼後的協定不受目前用戶端支援,或伺服器回傳了登入頁面、提示頁面等非訂閱內容。

dmxlc3M6Ly9mNDdhZDQ4YS1hZWMxLTQwZTQtYTgzOC0wNjE2N2VhZDc4OTVA
ZXhhbXBsZS5pbnZhbGlkOjQ0Mz9lbmNyeXB0aW9uPW5vbmUmc2VjdXJpdHk9
dGxzJnR5cGU9d3MmcGF0aD0lMkZhcGkjVExTLVdTLUV4YW1wbGU=

上面的內容只是格式示意。要判斷是否屬於 base64,可以先觀察字元是否主要落在 A-Za-z0-9、加號、斜線和等號的範圍內,再進行解碼。僅憑字元外觀無法確認有效性,因為一般隨機文字也可能符合這些範圍。更可靠的方式是檢查解碼結果是否為可讀文字,以及每行是否具有受支援的協定標頭。

1 行
通常對應一條分享連結
UTF-8
常見的解碼後文字編碼
10808
常見的本機 SOCKS 監聽連接埠範例
2 層
聚合編碼與單一節點編碼可能會疊加

VMess 分享連結本身也常包含一層 base64 編碼,內部通常是描述位址、連接埠、使用者識別碼、傳輸方式和 TLS 參數的 JSON 物件。因此,一份 VMess 聚合訂閱可能先將單一節點 JSON 編碼成 vmess:// 連結,再把多條連結串接後整體編碼。排查時應逐層處理,不能把整份訂閱直接當成單一 VMess 節點解碼。

VMess 與 VLESS 分享連結如何描述節點

分享連結的用途,是讓用戶端重建一個出站節點。VMess 常見形式是在協定標頭後接一段經 base64 編碼的 JSON;VLESS 則更接近標準 URI,使用者識別碼放在使用者資訊部分,伺服器位址和連接埠位於主機部分,傳輸、安全性與流控參數位於查詢字串,井字號後的文字則作為節點名稱。兩種連結都可能包含敏感的連線憑證,不應貼到公開網頁或公開記錄中。

  1. 讀取協定標頭,確認使用 VMess 或 VLESS 解析器。
  2. 擷取伺服器網域、連接埠與使用者識別碼,並確認連接埠是 1 至 65535 的整數。
  3. 讀取傳輸類型,例如 TCP、WebSocket、gRPC,並依類型解析路徑或服務名稱。
  4. 讀取 TLS、伺服器名稱與應用層協定參數,避免只遷移位址和連接埠。
  5. 解碼節點備註,處理百分比編碼後再顯示於伺服器清單中。

VLESS URI 結構示意

以下範例使用無法解析的保留網域,重點在於欄位位置。security=tls 表示傳輸安全設定,type=ws 表示 WebSocket,path 是請求路徑,sni 是 TLS 交握使用的伺服器名稱。參數名稱是否區分大小寫,應依用戶端實作處理,不建議手動改寫未知欄位。

vless://[email protected]:443?encryption=none&security=tls&sni=edge.example.invalid&type=ws&path=%2Fproxy#TLS-WS-Example

VMess 與 VLESS 也不能只替換協定名稱就完成互轉。兩者的驗證模型和參數集合不同,VLESS 的 flow 等欄位沒有可直接對應的 VMess 欄位。只有在伺服器同時提供兩種入站設定時,才能分別產生兩條可連線的分享連結;單純改寫 URI 不會讓伺服器增加另一種協定支援。

原生 JSON 與用戶端訂閱的關係

原生 JSON 面向 V2Ray 或 Xray 核心,頂層常見欄位包括 logdnsinboundsoutboundsrouting。其中,分享連結大多只能對應到某個 outbounds 項目。若 JSON 還包含依網域、IP、連接埠或入站標籤執行的路由規則,匯出為單一節點連結後便無法維持原有行為。

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

桌面版 v2rayN
  • 透過訂閱群組維護伺服器清單
  • 依需求將本機 SOCKS 連接埠設為 10808
  • 另行保存路由規則,並測試規則命中結果
Android 版 v2rayNG 或 v2flyNG
  • 匯入同一個訂閱網址
  • 依用戶端支援範圍解析節點
  • 在裝置端個別設定路由與 DNS

節點參數可以隨訂閱同步;本機監聽、應用程式範圍和路由策略則應由每台裝置分別管理。

最小設定不等於訂閱

以下 JSON 同時定義一個本機 SOCKS 入站和一個 VLESS 出站。即使將出站欄位轉換成分享連結,監聽位址 127.0.0.1、連接埠 10808 與路由行為也不會進入連結。目標用戶端會以自身預設值或現有設定補上這些內容。

{
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "example.invalid",
            "port": 443,
            "users": [
              {
                "id": "f47ad48a-aec1-40e4-a838-06167ead7895",
                "encryption": "none"
              }
            ]
          }
        ]
      }
    }
  ]
}
  • inbounds 決定本機程式如何將流量交給核心。
  • outbounds 決定流量透過哪個遠端協定,或直接連線離開。
  • routing 會依網域、IP、連接埠和標籤選擇出站。
  • dns 決定名稱解析方式,但不會自動成為節點分享參數。

用戶端匯出的 JSON 也可能包含程式產生的標籤、統計策略或特定核心欄位。將其匯入另一款用戶端前,應確認目標用戶端採用的核心及版本是否能辨識這些欄位。v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心;兩者對基礎 VMess、VLESS 與常見傳輸的支援範圍有所重疊,但不應假定新欄位和擴充能力完全一致。

匯入、轉換與更新的實際操作

日常使用時,優先讓用戶端直接讀取訂閱網址,而不是手動解碼後逐條匯入。直接訂閱能保留更新入口;伺服器端調整節點名稱、位址或連接埠後,用戶端可重新取得清單。手動轉換適合檢查內容、遷移少量節點,或找出某筆記錄解析失敗的原因。

目標操作 建議入口 完成後的檢查
v2rayN 新增訂閱 「訂閱群組」→「訂閱群組設定」→「新增」 更新訂閱後,檢查群組名稱與節點數量
v2rayN 匯入單一節點 複製分享連結後,使用「伺服器」→「從剪貼簿匯入批量 URL」 核對位址、連接埠、傳輸與 TLS 參數
v2rayNG 新增訂閱 開啟側邊選單的「訂閱群組設定」,新增網址後執行更新 確認目前群組已切換至新訂閱
v2rayNG 匯入單一節點 複製連結,點選右上角「+」,選擇「從剪貼簿匯入」 開啟節點詳細資料,檢查伺服器名稱與傳輸方式
v2flyNG 匯入訂閱 進入訂閱群組設定,填寫名稱與完整網址後更新 確認節點協定在 v2fly 核心支援範圍內

選單文案可能會隨用戶端版本調整,但操作順序基本一致:先儲存訂閱網址,再主動更新,最後選擇節點並啟動連線。測試時不要只看「已啟動」狀態,也應檢查核心記錄、實際延遲與目標網頁的存取結果。延遲測試失敗不一定代表節點完全無法使用,也可能是測試網址無法連線或 DNS 解析異常。

訂閱更新成功,為什麼清單還是空的?

先在訂閱群組中確認目前選取的群組,再查看更新結果是否顯示解析出 0 筆記錄。若為 0,將回應內容複製到本機文字工具檢查:base64 解碼後應出現逐行排列的分享連結,而不是登入頁面、錯誤提示或 HTML 原始碼。

複製 VLESS 連結後提示格式錯誤,該怎麼辦?

檢查連結是否以 vless:// 開頭,使用者識別碼、網域和連接埠之間是否完整,以及查詢參數中的 & 是否被聊天工具截斷。重新複製原始純文字,不要手動刪除百分比編碼。

base64 解碼後出現亂碼,是編碼不相容嗎?

先確認輸入內容沒有遺漏結尾字元,再分別嘗試標準 base64 與 URL 安全變體。解碼後的位元組通常以 UTF-8 讀取;若仍無法閱讀,內容可能經過壓縮、採用其他訂閱協定,或回傳的根本不是聚合文字。

可以把完整 JSON 直接貼到訂閱網址欄嗎?

不能把設定正文當成網址。訂閱網址欄需要可請求的 URL;完整 JSON 應透過用戶端提供的自訂設定匯入入口處理,並檢查其中的入站連接埠是否與現有程式衝突。

同一個訂閱在兩個用戶端顯示的節點數量不同?

分別記錄更新後的總數,並檢查被略過節點的協定與傳輸參數。v2rayNG 與 v2flyNG 使用不同核心,遇到只有一方支援的欄位時,解析或執行結果可能不同。不要用改名的方式強行轉換協定。

轉換時需要保留的欄位與安全界線

可靠的轉換應先解析成結構化物件,再依目標格式重新序列化,而不是對字串進行尋找與替換。至少要保留協定、伺服器位址、連接埠、使用者識別碼、傳輸類型、TLS 狀態、伺服器名稱、路徑或服務名稱、流控參數與節點備註。任何連線關鍵欄位缺失,都可能產生「可以匯入但無法連線」的記錄。

  1. 將原始內容複製到本機受控環境,判斷它是訂閱回應、分享連結還是完整 JSON。
  2. 解碼並解析成欄位物件,對連接埠、使用者識別碼和必要參數進行型別檢查。
  3. 依目標用戶端與核心能力篩選可表達的欄位,記錄無法對應的項目。
  4. 產生目標格式後重新解析一次,比較位址、連接埠、安全層與傳輸層是否一致。
  5. 在用戶端中建立獨立測試群組,不要覆蓋仍可使用的原訂閱。
  6. 連線後檢查核心記錄,並分別驗證 DNS、TCP 與所需的 UDP 情境。

結論:轉換前保留原訂閱,轉換後回讀欄位

最穩妥的驗收方式不是看到「匯入成功」,而是再次解析產生的結果並逐項比對。確認位址、連接埠、使用者識別碼、TLS 伺服器名稱和傳輸路徑全部一致後,再進行連線測試。

訂閱網址和分享連結都可能直接包含存取憑證。截圖排錯時應遮蓋完整訂閱 URL、使用者識別碼和驗證欄位;分享記錄時只保留錯誤類型、時間與必要的網路狀態。若訂閱網址已進入公開記錄,應在服務提供者後台更換訂閱憑證,再刪除用戶端中的舊網址並執行一次完整更新。