本文適合需要匯入、遷移或排查 V2Ray 訂閱的使用者,說明 Base64 文字、原生 JSON 與分享連結的結構差異,提供從格式辨識到客戶端匯入的完整流程,並整理轉換時最容易遺失的傳輸、TLS、路由與訂閱更新資訊。
先區分訂閱、分享連結與執行設定
「訂閱」通常是指一個可定期請求的網址。客戶端存取該網址後,伺服器會回傳一組節點資料,再將這些節點寫入本機資料庫。訂閱網址本身不等於節點,更接近持續更新的資料入口;同一個網址今天回傳 8 個節點,下次更新時可能變成 10 個。
「分享連結」則代表單一節點。常見格式以 vmess:// 或 vless:// 開頭,連結中帶有伺服器位址、連接埠、使用者識別碼、傳輸方式與 TLS 參數。多個分享連結可以逐行排列,再整體編碼成訂閱回應,但單一連結本身不具備自動更新能力。
「原生 JSON」通常是 V2Ray 或 Xray 核心可讀取的執行設定。它包含 inbounds、outbounds、routing、dns 等物件,描述的不只是遠端節點,也包括本機監聽連接埠、流量入口與路由行為。將完整執行設定當成一般訂閱匯入,客戶端不一定能解析出節點清單。
訂閱回應
- 資料數量
- 通常包含多個節點
- 常見外層格式
- 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 通常表示文字已遭截斷。
- HTTP 狀態應是成功回應;跳轉至登入頁或錯誤頁時,不要將 HTML 當成訂閱內容。
- 解碼結果應使用 UTF-8;節點備註包含中文時,錯誤的字元集會造成名稱亂碼。
- 每行只放一條分享連結;不要在連結中間插入人工換行。
- 訂閱更新後節點數量從 12 變成 0 時,先保留原有群組,再檢查回應內容是否為空。
- 訂閱網址屬於需要謹慎保存的資料,不應貼到公開網頁或不受控的轉換服務。
VMess、VLESS 分享連結的欄位差異
VMess 與 VLESS 分享連結的編碼方式不同。常見的 VMess 連結會在 vmess:// 後放置一段 Base64 編碼的 JSON,物件中可能包含 add、port、id、net、path、host、tls 與 sni 等欄位。部分舊格式還會出現 v、ps、aid,其中常見的設定版本值為 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 |
path 或 serviceName |
WebSocket 路徑與 gRPC 服務名稱的意義不同 |
| 安全層 | tls |
security |
TLS 與 Reality 所需的參數不同 |
| 伺服器名稱 | sni |
sni |
不要用節點備註取代伺服器名稱 |
轉換並非簡單更換前綴
VMess 與 VLESS 是不同協定,不能直接將 vmess:// 改成 vless://。即使伺服器位址、連接埠與傳輸層相同,伺服器端也必須存在相應的協定入站,使用者驗證方式也要相符。所謂「互轉」更準確地說,是在已知伺服器端同時支援目標協定時,將共用連線參數對應至另一種連結結構。
傳輸欄位必須依語意進行對應。例如 VMess JSON 中的 net=ws 可對應至 VLESS 的 type=ws,path=/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 的欄位。正確做法是分別遷移節點與路由:節點透過分享連結匯入,路由規則則透過客戶端的備份、匯入功能或手動設定復原。
- 檢查 JSON 頂層是否包含
outbounds,並確認目標出站的協定名稱。 - 讀取伺服器位址、連接埠與使用者參數,不要複製範例或已失效的記錄。
- 從
streamSettings擷取傳輸、安全層、SNI、路徑與服務名稱。 - 依目標協定產生分享連結,並對路徑、備註與查詢參數進行 URL 編碼。
- 匯入客戶端後開啟詳細資訊頁面,逐項核對連接埠、傳輸、TLS、SNI 與使用者識別碼。
- 先測試單一節點,再批次加入訂閱回應,避免錯誤參數擴散至整個群組。
三款客戶端的匯入範圍與具體操作
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 核心的支援範圍 |
匯入後必須核對的六項參數
- 位址與連接埠:連接埠應是有效整數,常見的 TLS 入口為 443,但不能因此自動改寫其他連接埠。
- 使用者識別碼:檢查前後是否有空格,避免通訊工具換行造成截斷。
- 傳輸方式:TCP、WebSocket 與 gRPC 必須與伺服器端一致。
- 路徑或服務名稱:WebSocket 路徑通常以斜線開頭;gRPC 使用服務名稱,不應強行加上斜線。
- 安全參數:TLS、Reality、SNI、指紋與 Flow 應逐項對應,不能只看連結前綴。
- 本機代理連接埠:在 v2rayN 中開啟「設定」→「參數設定」,確認本機 SOCKS 與 HTTP 連接埠未被其他程式占用。
轉換失敗、訂閱為空與亂碼的排查方法
轉換失敗通常發生在三個階段:取得訂閱回應、解碼外層容器、解析單一節點。排查時應依照這個順序進行,不要一開始就修改協定參數。若訂閱請求已回傳錯誤頁,後續的 Base64 解碼與節點匯入都不會產生有效結果。
可以先記錄三個具體數值:HTTP 狀態、回應位元組數與解碼後的非空行數。例如狀態正常、回應為 18 KB、解碼後得到 24 行,表示訂閱取得與外層解碼基本完成;若客戶端最後只顯示 20 個節點,應繼續檢查其餘 4 行的協定前綴或欄位格式。
訂閱更新後顯示零個節點,該怎麼辦?
先不要刪除原有群組。將訂閱網址複製到受控環境中檢查回應類型;若內容以網頁標籤開頭,通常表示請求被重新導向至提示頁。確認網址完整後,在客戶端重新儲存並更新。
Base64 解碼提示長度不正確,該怎麼辦?
先刪除換行與前後空白,再確認使用的是標準還是 URL 安全字母表。長度除以 4 餘 2 時補兩個等號,餘 3 時補一個;餘 1 時應重新取得原文。
匯入成功但節點名稱全是亂碼,該怎麼辦?
確認訂閱回應與解碼結果以 UTF-8 讀取。若只有井字號後的備註出現亂碼,請重新對 URI 片段執行百分比解碼;不要將整條連結重複解碼。
VLESS 連結匯入後缺少路徑,該怎麼辦?
查看原始連結是否包含 type=ws 與 path=。路徑中的斜線應編碼為 %2F;若使用 gRPC,應核對 serviceName,而不是填寫 WebSocket 路徑。
為什麼同一條連結在不同客戶端的表現不同?
先比較客戶端核心家族與版本,再開啟節點詳細資訊核對未辨識的參數。連結解析成功只代表結構可讀,不代表目前核心已實作相應的傳輸與安全組合。
使用日誌定位欄位層級錯誤
若節點能夠啟動但無法建立連線,先查看客戶端核心日誌。DNS 解析失敗通常指向網域或 DNS 設定;連線逾時更可能是位址、連接埠或網路路徑問題;TLS 交握失敗應重點檢查 SNI、系統時間與安全層;啟動階段直接回報設定欄位錯誤,則需要檢查 JSON 層級或目前核心是否認得該欄位。
本機連接埠衝突也會造成「匯入正確但無法使用」。例如 SOCKS 連接埠設定為 10808,而另一個執行個體已監聽相同連接埠,核心可能無法啟動。在 v2rayN 中進入「設定」→「參數設定」核對連接埠,並關閉重複執行的執行個體;Android 端則先停止目前連線,再重新啟動目標設定。
安全遷移與長期維護建議
訂閱網址可能具備存取節點清單的能力,應依敏感設定進行管理。儲存時使用客戶端的訂閱群組,不要在截圖、公開文件與聊天記錄中展示完整網址。需要跨裝置遷移時,優先透過客戶端本身的設定匯出功能傳遞,完成後清理暫存檔案。
不要依賴線上轉換頁面處理真實訂閱。Base64 只是編碼,不提供保密能力;任何能讀取原文的服務都能取得其中的節點參數。需要檢查結構時,可以在本機複製一份,先移除使用者識別碼與訂閱查詢參數,再進行格式分析。
長期維護應將「節點來源」與「本機策略」分開。訂閱負責更新節點,客戶端負責系統代理、TUN、DNS 與路由分流。如此即使訂閱清單發生變化,本機的直連網域、阻斷規則與監聽連接埠也不會隨節點一起被意外覆蓋。
- 為不同來源建立獨立的訂閱群組,不要將所有節點合併成一個無法追蹤的清單。
- 更新前記錄節點數量,更新後比較新增、刪除與名稱變更。
- 保留一份已驗證可用的節點副本,避免訂閱暫時異常導致所有設定都無法使用。
- 每次轉換後至少抽查一條 VMess 與一條 VLESS 節點,核對傳輸層欄位。
- 客戶端升級後,先驗證訂閱更新、節點啟動與本機連接埠,再恢復自動更新排程。
結論:分開維護節點格式與本機策略
訂閱只負責更新節點集合,分享連結只負責遷移單一節點,JSON 才能表達完整的執行結構。依這三個層級儲存資料,日後更換客戶端或核心時,更容易定位相容性問題。