搜索 K
深色模式
深色模式
直接答案:订阅转换的核心本质是**“跨协议标准的对象反序列化与声明式重构”。早期代理生态以 Base64 编码的单行 URI 链接(如
vmess://、vless://、ss://)为主流,每个链接将节点参数压缩在 URL 查询参数或 JSON 载荷中;而 Clash 采用强类型的树状 YAML 语法。订阅转换器(如 Subconverter)通过拉取远程链接 -> Base64 解码 -> 协议 URI 正则切片 -> 抽取连接属性 -> 按照 Clash 节点规范映射组装 YAML**,完成数据结构的标准化统一。
以下为转换引擎在处理主流节点协议时执行的物理字段映射基准表:
| 节点类型 | 原始 URI 结构特征 | Clash YAML 目标字段映射 | 关键特殊属性映射说明 |
|---|---|---|---|
| Shadowsocks | ss://BASE64(cipher:pass@host:port)#Name | type: ssserver: hostport: portcipher: cipherpassword: pass | 若携带 SIP003 插件(如 v2ray-plugin),转换为 plugin: v2ray-plugin |
| VMess | vmess://BASE64(JSON_PAYLOAD) | type: vmessserver: addport: portuuid: idalterId: aidcipher: auto | JSON 中的 net(ws/tcp/grpc)、tls、host 映射至 network 与 ws-opts |
| VLESS | vless://uuid@host:port?type=ws&security=tls#Name | type: vlessserver: hostport: portuuid: uuidtls: true | URL Query 中的 flow 映射为 flow: xtls-rprx-vision;fp 映射为 client-fingerprint |
| Trojan | trojan://password@host:port?sni=sni_host#Name | type: trojanserver: hostport: portpassword: passwordsni: sni_host | allowInsecure=1 映射为 skip-cert-verify: true |
| Hysteria 2 | hysteria2://pass@host:port?sni=host&insecure=0#Name | type: hysteria2server: hostport: portpassword: passsni: host | mport 映射为多端口;up/down 映射为峰值上下行限制 |
[输入: 用户提供的原始订阅 URL]
|
v
+-----------------------------------------------------------+
| 阶段 1:HTTP 载荷获取与 Base64 解码 |
| 捕获返回体。若是合规 Base64 字符串,解码还原为明文多行 URI |
+-----------------------------------------------------------+
|
v
+-----------------------------------------------------------+
| 阶段 2:逐行协议类型探测与正则提取 |
| 识别每行的 scheme 头 (ss://, vmess://, vless://, trojan://)|
| 将 URL 编码的别名 (如 #%E9%A6%99%E6%B8%AF) 解码为 UTF-8 名称 |
+-----------------------------------------------------------+
|
v
+-----------------------------------------------------------+
| 阶段 3:网络传输层配置装配 (Transport & Security) |
| 提取 WS 路径、gRPC serviceName、TLS SNI、uTLS 指纹、Reality 密钥 |
+-----------------------------------------------------------+
|
v
+-----------------------------------------------------------+
| 阶段 4:目标平台 YAML 模板合成 |
| 将节点注入主配置 proxies 块,并根据规则模板自动追加 |
| proxy-groups 与 rules 分流列表 |
+-----------------------------------------------------------+
|
v
[输出: 可直接供 Clash/Mihomo 解析的完整 YAML]原始链接:
vmess://eyJhZGQiOiAiaGswMS5leGFtcGxlLmNvbSIsICJhaWQiOiAwLCAiaG9zdCI6ICJjZG4uZXhhbXBsZS5jb20iLCAiaWQiOiAiOTU0NDc4MTYtMzU3Mi00MWVlLTg1YzQtODIyMzk2Njc4OTBiIiwgIm5ldCI6ICJ3cyIsICJwYXRoIjogIi92bWVzcy13cyIsICJwb3J0IjogNDQzLCAicHMiOiAiSEstV01lc3MtMDEiLCAidGxzIjogInRscyJ9转换后生成的 Clash YAML 节点:
- name: "HK-VMess-01"
type: vmess
server: hk01.example.com
port: 443
uuid: 95447816-3572-41ee-85c4-82239667890b
alterId: 0
cipher: auto
udp: true
tls: true
servername: cdn.example.com
network: ws
ws-opts:
path: /vmess-ws
headers:
Host: cdn.example.com原始链接:
vless://95447816-3572-41ee-85c4-82239667890b@us01.example.com:443?security=reality&encryption=none&pbk=b_3zD-j10P9_Kk12Lm45No67Pq89Rs01Tu23Vw45Xy6&headerType=none&fp=chrome&type=tcp&flow=xtls-rprx-vision&sni=gateway.icloud.com&sid=0123456789abcdef#US-Reality-01转换后生成的 Clash YAML 节点:
- name: "US-Reality-01"
type: vless
server: us01.example.com
port: 443
uuid: 95447816-3572-41ee-85c4-82239667890b
cipher: auto
tls: true
flow: xtls-rprx-vision
servername: gateway.icloud.com
client-fingerprint: chrome
reality-opts:
public-key: b_3zD-j10P9_Kk12Lm45No67Pq89Rs01Tu23Vw45Xy6
short-id: 0123456789abcdef
network: tcp
udp: trueflow: xtls-rprx-vision 丢失导致连接被重置 read: connection reset by peer。flow 字段,丢失了 flow: xtls-rprx-vision。在没有该参数的情况下,服务端直接拒绝了无流控保护的明文双层 TLS 连接。target=clash.meta。skip-cert-verify) 漏传 x509: certificate signed by unknown authority。skip_cert_verify=true,确保生成 YAML 时携带 skip-cert-verify: true 标记。A: 不能。原生开源版 Clash Premium 早已停止维护,不支持 VLESS 及 Reality 协议。目前能够完美解析并运行 VLESS/Reality/Hysteria2 协议转换结果的只有基于 Mihomo (Clash.Meta) 核心的现代客户端(如 Clash Verge Rev、Mihomo Party 等)。
A: 这通常是由于原始 URI 末尾的 # 标签包含中文或特殊符号,且服务商使用了非常规的双重 URL 编码(如 %25E9%25A6%2599)。转换工具默认只执行了一次 urldecode,导致还原后的节点名依然保留了百分号编码。