在 v2rayN、v2rayNG 或 v2flyNG 中新增伺服器時,使用者拿到的內容可能是一個以 https:// 開頭的訂閱網址,也可能是一串看不出結構的 base64 文字,或是以 vmess://、vless:// 開頭的單節點分享連結。這些格式都能承載連線資訊,但更新方式、可攜性與匯入入口各不相同。
本文適合需要辨識訂閱內容、排查匯入失敗,或在桌面端與 Android 裝置間轉移節點的使用者。讀完即可掌握三種格式的界線、安全還原 base64 內文、讀懂 V2Ray JSON 的關鍵欄位,並依客戶端類型選擇正確的匯入方式。
先判斷拿到的是訂閱網址、編碼內文還是分享連結
「訂閱連結」常被用來泛指多種內容。嚴格來說,訂閱網址是可重複請求的網路入口,客戶端存取後才會取得節點清單;base64 是伺服器回傳節點清單時常用的編碼包裝;分享連結通常只描述單一節點。原生 JSON 更接近完整設定檔或結構化介面回應,不一定就是可更新的訂閱。
最快的辨識方式是查看開頭字元。以 https:// 開頭且路徑較長的內容,通常是遠端訂閱網址;由連續英文字母、數字、加號、斜線或底線組成的長文字,可能是 base64 或 URL-safe base64;以 vmess://、vless:// 開頭的內容則是協定分享連結;以左大括號開頭且包含成對欄位名稱的內容,通常是 JSON。
遠端訂閱網址
推薦客戶端會定期請求同一個網址,伺服器可新增、刪除或調整節點,適合長期維護。
適合:日常使用、多裝置同步節點清單
單節點分享連結
一個連結對應一個 VMess 或 VLESS 節點,複製方便,但不會自動取得後續節點變更。
適合:臨時匯入、單節點轉移與故障測試
原生 JSON 設定
可同時描述入站、出站、DNS、路由與記錄,結構完整,但依賴核心的欄位規範。
適合:設定備份、精細路由與技術排障
結論:先看更新能力,再看文字外觀
只有能由客戶端儲存並再次請求的網址,才具備訂閱更新能力。解碼後的節點清單、單一分享連結與本機 JSON 檔案即使都能匯入,也不會自動變成遠端訂閱。
如何還原與檢查 base64 訂閱內文
base64 是編碼方式,不是加密協定。它會將原始位元組轉換成方便文字傳輸的字元,因此看到一大段不可讀的文字,不代表內容已被保密處理。常見的 V2Ray 訂閱會先將多個分享連結以換行分隔,再對整段文字進行 base64 編碼。解碼後通常是一行一個 vmess:// 或 vless:// 網址。
標準 base64 常見字元包括大小寫英文字母、數字、+、/,以及結尾的填充字元 =。URL-safe 變體會將 + 換成 -,將 / 換成 _,也可能省略結尾填充。客戶端通常相容於兩種變體,但手動檢查時需先還原字元與填充。
- 確認目前內容是伺服器回傳的內文,而不是仍以
https://開頭的遠端網址。 - 移除複製過程中帶入的空格與前後換行,但不要刪除內文中可能存在的有效字元。
- 將 URL-safe base64 的
-與_還原為標準字元,並將長度補至 4 的整數倍。 - 解碼後檢查每一行是否有明確的協定標頭、節點名稱是否出現亂碼,以及連接埠是否介於 1 至 65535。
- 如果解碼結果仍是一段 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;依需求還會加入 routing、dns、log 與策略欄位。訂閱服務回傳的自訂 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,主機與連接埠對應至 address 與 port,查詢參數中的 type 對應 streamSettings.network,security 對應傳輸安全層,sni 與路徑則放入各自的傳輸設定。之後還需補齊本機入站與必要出站,才能構成可執行的設定。
推薦方案:訂閱負責同步,分享連結負責單節點轉移
桌面端 v2rayN
- 儲存遠端訂閱網址並設定更新間隔
- 臨時節點使用剪貼簿批次匯入
- 複雜路由留在客戶端設定中維護
Android 端 v2rayNG 或 v2flyNG
- 使用同一個遠端訂閱,維持節點一致
- 單一節點透過分享連結或 QR Code 匯入
- 更新後重新選取目前使用中的節點
不要用解碼後的靜態節點清單覆寫原有訂閱網址;保留遠端入口,後續更新才不會中斷。
- 先備份原始內容,區分遠端網址、回應內文與單節點連結。
- 列出必須保留的欄位:協定、伺服器、連接埠、使用者識別碼、傳輸方式、安全層、伺服器名稱、路徑與備註。
- 完成解碼或結構轉換後,逐項比較欄位,不要只確認節點名稱是否出現。
- 先匯入一個節點測試記錄與連線,再批次處理其餘節點。
- 確認客戶端中的訂閱記錄仍保留原始
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 端則應檢查目前設定是否在更新後被切換或刪除。
- 取得階段:檢查訂閱網域、HTTPS 連線與回應狀態,確認客戶端確實收到內文。
- 解析階段:判斷內文屬於 base64、JSON 還是分享連結清單,檢查換行、填充與字元編碼。
- 匯入階段:核對客戶端是否新增節點,以及節點數量與群組名稱是否符合預期。
- 連線階段:檢查位址、連接埠、使用者識別碼、傳輸方式、安全層、伺服器名稱與路徑。
- 代理階段:檢查使用中的伺服器、系統代理模式,以及 10808、10809 等本機連接埠是否正常監聽。
- 路由階段:連線正常但特定網域行為異常時,再檢查
routing.rules的順序與出站標籤。