V2Ray 订阅格式说明:Base64 订阅、原生 JSON 配置与分享链接互转

解释 Base64 订阅、原生 JSON 配置和 vmess:// vless:// 分享链接的结构差异,以及在 v2rayN 中导入和互相转换的方法。

本文速览

先判断拿到的是订阅地址、单条分享链接,还是内核运行配置,再选导入入口。本文适合需要迁移节点、排查订阅格式错误的用户:读完可以区分 Base64 编码与协议参数,完成 v2rayN 订阅导入和节点导出,并识别 JSON 转分享链接时不能保留的路由、DNS 与多出站设置。

先分清:订阅地址、分享链接与运行配置

先看文本开头,不要先改扩展名。以 https:// 开头的地址可能是订阅入口,也可能只是账户网页;以 vmess:// 或 vless:// 开头的内容通常是单节点分享链接;以大括号开始、含有 inbounds 和 outbounds 的 JSON,则可能是内核运行配置。判断仍要结合内容,不能只凭文件名。

订阅地址

推荐

客户端请求这个地址,获取服务方当前提供的节点集合。节点变动后可再次更新,但返回格式仍需与客户端兼容。

适合:长期使用、接收节点与参数更新。

单节点分享链接

把服务器地址、身份信息和传输参数打包成一条文本。导入后是独立节点,不会因为原提供方修改参数而自动变化。

适合:临时测试、迁移少量节点、逐项核对参数。

原生 JSON 配置

直接描述内核如何运行,可能包含监听端口、DNS、路由和多个出站。必须同时确认对应内核与配置语法。

适合:需要保留完整运行逻辑、由维护者提供定制配置。

这里推荐订阅地址,是针对需要持续更新的日常使用场景,不代表它比 JSON 更完整。订阅通常负责分发节点,完整配置负责描述运行行为,两者解决的问题不同。

Base64 订阅:编码的是节点列表,不是加密隧道

常见的传统 V2Ray 订阅,会把多条分享链接按行拼接,再对整段文本做 Base64 编码。解码后可能看到一行 VMess、一行 VLESS,也可能全部是同一种协议。Base64 只是字节到可打印字符的编码方式,不会让节点凭据变得保密,也不会改变连接时使用的协议。

3 → 4
标准 Base64 每 3 字节映射为 4 字符
1 行
传统列表中通常承载 1 条分享链接
443
后文 TLS 节点示例使用的服务端口

“订阅返回的是一长串字符”不等于内容损坏。相反,“浏览器能打开订阅网址”也不等于格式正确:如果服务器返回的是登录页面、到期提示或访问验证页面,客户端同样无法把它解析成节点。

VMess 与 VLESS 分享链接分别装了什么

传统 VMess 分享格式常见结构是 vmess:// 加 Base64 编码的 JSON,JSON 内使用 add、port、id、net 等字段。这里的 JSON 是“分享信息”,不是含有入站和路由的内核完整配置。分享内容中的 v 常表示分享格式版本,不是 v2rayN 的程序版本。

VLESS 分享链接通常采用 URI 结构:身份信息放在地址前,传输和安全选项放进查询参数,备注放在 # 后。下面是教学样本,使用示例域名与演示 UUID,不提供实际连接服务。

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=node.example.com&path=%2Fgateway&sni=node.example.com#format-demo
字段样本值核对重点
服务器与端口node.example.com:443指向服务端监听地址;不等于本机代理端口。
encryptionnone表示 VLESS 协议层的加密设置;本例另由 TLS 提供传输保护。
security 与 snitls、node.example.com决定传输安全及 TLS 服务器名称,必须与服务端要求匹配。
type 与 pathws、%2Fgateway选择 WebSocket;路径解码后是 /gateway。
hostnode.example.com本例用于 WebSocket 的 Host;不能在所有部署中都机械复制为服务器地址。

不要只复制服务器、端口和 UUID。丢失 SNI、传输路径或 Host 后,节点仍可能成功导入,却在握手阶段失败。REALITY 等配置还涉及公钥、短标识等参数;需要按原链接保留,并确认所选内核支持,不能只把 security 的值改掉就当作完成转换。

在 v2rayN 中按来源选择导入入口

先保留原始文本,再导入。以下使用 v2rayN 中文界面的常见菜单名称;不同版本可能把命令放在顶栏菜单或右键菜单中。如果文字略有调整,按“订阅分组”“剪贴板批量导入”“自定义配置”这三个用途寻找,不要把不同入口混用。

  1. 导入订阅地址:打开「订阅分组」→「订阅分组设置」,新增分组,填写备注和订阅地址并保存。随后在「订阅分组」中执行「更新当前订阅(不通过代理)」。需要经已有可用代理访问订阅服务器时,再选择「更新当前订阅(通过代理)」。
  2. 导入分享链接:复制完整的 vmess:// 或 vless:// 文本,打开「服务器」→「从剪贴板导入批量URL」。导入多条时让每条独占一行,不要混入聊天时间、编号或说明文字。
  3. 导入完整 JSON:先确认配置对应 Xray 还是 V2Fly,再使用「服务器」中的「添加自定义配置服务器」入口选择配置文件,并核对核心类型。不要把完整 JSON 粘进订阅地址栏。
  4. 验证结果:先核对列表中的节点数,再打开节点编辑窗口检查地址、端口、传输与安全参数;选中一个节点设为活动服务器,观察日志是否有配置解析或握手错误。

分享链接、Base64 与 JSON 的互转边界

先确定需要保留哪些信息。把节点列表变成 Base64,通常只改变文本外包装;把完整 JSON 变成单条分享链接,却是在把一个运行方案缩减为一个节点。这两类转换不能混为一谈。

转换方向操作办法可能丢失的信息
分享链接 → Base64 列表按行拼接完整链接,对 UTF-8 文本做 Base64 编码。编码本身不应丢字段,但它不会自动生成可更新的订阅服务。
Base64 列表 → 分享链接在本地解码外层,保留每一行协议前缀与参数。手动换行、截断和字符替换可能破坏链接。
分享链接 → 内核 JSON交给客户端解析,再结合本机入站、DNS 和路由生成运行配置。生成结果受客户端设置影响,不是唯一固定结果。
内核 JSON → 分享链接挑选可表达的单个代理出站,映射到对应分享格式。监听、DNS、路由、多出站关联等通常无法完整保留。

从 v2rayN 导出节点,再用于迁移

在服务器列表中选中目标节点,打开右键菜单,使用「分享服务器」下的「分享URL至剪贴板」;部分版本会把分享命令直接放在右键菜单中。批量分享后先在本地文本编辑器检查行数,再导入目标设备。自定义配置节点不一定支持导出成标准分享链接。

为什么不能把任意 JSON 直接编码成 vmess://

因为“都使用 JSON”不代表字段结构相同。下面是 Xray 配置中的出站片段,不是完整可运行配置,也不是传统 VMess 分享载荷。即使把它编码成 Base64,再加上协议前缀,客户端也不会因此得到正确的分享字段。

{
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": [
          {
            "address": "node.example.com",
            "port": 443,
            "users": [
              {
                "id": "b85a420b-f879-44e5-88eb-7ddc1d26908e",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {
          "serverName": "node.example.com"
        },
        "wsSettings": {
          "path": "/gateway",
          "headers": {
            "Host": "node.example.com"
          }
        }
      }
    }
  ]
}

桌面与安卓迁移:复用来源,分别核对能力

需要在多个设备使用时,优先保存服务方提供的原始订阅地址,再分别导入。v2rayN 是桌面客户端;安卓端的 v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核。订阅能被解析,与其中每个节点都受当前内核支持,是两个独立条件。

迁移方案:普通节点与定制配置分开处理

普通订阅与分享节点
  • 在目标设备重新添加原始订阅地址。
  • 仅迁移少量节点时,导出完整分享链接。
  • 分别设置系统代理、分应用代理或路由。
完整 JSON 与定制路由
  • 先确认目标客户端支持的配置导入方式。
  • 检查内核类型、文件路径与监听端口。
  • 涉及 VLESS、REALITY 等特性时逐项确认内核支持。

共用订阅来源不等于共用全部设置;设备上的入口、DNS 和路由仍需分别验证。

完整配置还可能引用桌面上的绝对文件路径或本地资源。迁移到安卓设备时,这些路径不能照抄。即便两端都是同一种内核,也要检查内核版本与配置字段是否兼容,不要用“文件能打开”代替运行验证。

订阅格式常见问题与处理顺序

订阅更新显示成功,为什么列表还是空的?

先切换到对应订阅分组并清除列表筛选,再查看日志中的有效节点数量。若响应是登录网页、空内容或不支持的配置格式,下载成功也可能没有可导入节点。回到服务方入口重新复制适用于当前客户端的订阅地址。

拿到一大段 Base64,应该粘贴到哪里?

先在本地解码并确认内容。如果结果是一行一条的分享链接,复制解码后的完整列表,再使用「服务器」→「从剪贴板导入批量URL」。若结果是完整 JSON,则按对应内核的自定义配置处理,不要继续套协议前缀。

为什么转完链接能导入,却一直连接失败?

打开原节点与新节点的编辑窗口,逐项比较安全类型、SNI、Host、路径及相关协议参数。特别检查 %2F 是否被重复编码成 %252F,以及聊天软件是否截断了 & 后面的查询参数。

订阅更新会覆盖手动修改的节点吗?

同一订阅分组中的节点可能随更新被替换或重建。需要长期保留修改时,先导出分享链接,再导入独立的手动分组,并在下次更新后确认结果;不要把订阅条目当作稳定的本地配置备份。

把节点列表做成 Base64,就能自动更新了吗?

不能。Base64 只改变文本表示。自动更新还需要客户端可访问的订阅地址,以及该地址返回持续维护的兼容内容。只有本地编码文本时,应按静态节点列表导入,不能期待它接收服务方后续修改。

最后按“来源是否正确 → 返回内容是否兼容 → 字段是否完整 → 内核是否支持”的顺序排查。先处理格式,再处理连接;保留原始订阅和脱敏后的错误记录,比反复尝试不同转换方式更容易定位问题。

下载v2rayN查看平台与安装包