Hysteria2 JSON转Mihomo YAML怎么做?很多用户拿到Hysteria2节点、面板导出的JSON配置或第三方客户端配置后,希望转换成Mihomo、Clash Verge Rev可以直接使用的YAML配置,却经常遇到节点不显示、认证失败或Timeout问题。
常见情况包括:
- 手里只有Hysteria2 JSON配置
- Hysteria2 client configuration是JSON
- Mihomo要求YAML配置
- JSON导入Clash提示格式错误
- JSON里有auth,Mihomo里却要求password
- JSON里的tls.sni不知道对应YAML哪个字段
- JSON里的insecure不知道怎么转换
- JSON里的obfs结构无法直接复制
- salamander密码转换后丢失
- Hysteria2 JSON转YAML以后节点Timeout
- 转换后节点能显示但无法连接
- client config.yaml怎么写
- Hysteria2配置里的server和port怎么拆开
- JSON里的bandwidth要不要写进Mihomo
- Hysteria2 URI、JSON和YAML到底有什么区别
这类问题的核心不是:
“把大括号改成缩进”
而是:
把Hysteria2配置里的每个参数,正确映射到Mihomo能够识别的节点字段。
本文会按照:
JSON结构 → 参数含义 → Mihomo YAML字段 → 常见转换错误
一步一步讲清楚。
Hysteria2 JSON配置转成Mihomo YAML后节点不显示、认证失败或一直Timeout,想获取可直接导入常见客户端的稳定节点订阅?
获取稳定订阅线路如果 Hysteria2 JSON 配置已经成功转换成 Mihomo YAML,但导入后出现节点不显示、认证失败、缺少 obfs 参数或一直 Timeout,不要只检查 YAML 语法。下面这张图展示的是客户端正常加载节点后的状态:节点列表完整、不同地区线路能够正常显示延迟。排查时可以重点确认自己的配置是否已经完成“参数转换 → YAML加载 → 节点显示 → 延迟测试 → 实际连接”这几个步骤。

一、Hysteria2 JSON配置怎么转Mihomo YAML?
最核心的步骤是:
先读取JSON里的节点参数
然后:
映射成Mihomo的Hysteria2节点格式。
例如JSON里可能包含:
server
port
auth
tls
sni
insecure
obfs
obfs-password
而Mihomo YAML里可能对应:
server
port
password
sni
skip-cert-verify
obfs
obfs-password
注意:
字段名字并不一定完全一样。
所以不能机械复制。
二、JSON和YAML只是格式不同吗?
不完全是。
JSON和YAML确实都是:
结构化数据格式。
但是当它们来自:
不同客户端
不同面板
不同订阅系统
时,
字段名称和层级也可能不同。
所以真正难点是:
字段语义转换。
三、Hysteria2官方客户端一定使用JSON吗?
不一定。
很多Hysteria2原生配置本身更常见的是:
YAML结构。
但一些:
面板
API
订阅接口
第三方客户端
可能输出:
JSON。
所以看到:
Hysteria2 JSON
不代表它一定是官方原生配置格式。
四、Mihomo为什么不能直接导入任意Hysteria2 JSON?
因为Mihomo读取的是:
自己的配置结构。
即使JSON里面包含:
正确的服务器
端口
密码
Mihomo也不一定知道:
这些字段应该怎么解释。
五、JSON和Mihomo YAML最常见的区别是什么?
例如JSON可能写:
“auth”: “abcdef”
而Mihomo节点常见写法:
password: abcdef
虽然两者:
值可能相同
但字段名称:
不同。
六、先看一个简化JSON示例
假设你拿到:
{
“server”: “example.com”,
“port”: 443,
“auth”: “mypassword”,
“sni”: “example.com”,
“insecure”: false
}
这里包含:
服务器
端口
认证密码
SNI
证书校验。
七、转换成Mihomo YAML大概是什么样?
概念上可以写成:
- name: HY2-01
type: hysteria2
server: example.com
port: 443
password: mypassword
sni: example.com
skip-cert-verify: false
这里最明显的转换是:
auth
→
password
insecure
→
skip-cert-verify
八、为什么auth会变成password?
因为不同客户端对:
Hysteria2认证信息
使用的字段名称不同。
原生配置里可能叫:
auth
而Mihomo代理节点配置:
通常使用password表示认证信息。
九、auth和obfs-password是一回事吗?
不是。
这是非常重要的区别。
auth/password:
用于Hysteria2客户端认证。
obfs-password:
用于salamander混淆。
不能混用。
十、JSON里的server怎么转换?
如果JSON是:
“server”: “example.com”
直接对应:
server: example.com
十一、如果JSON里的server包含端口呢?
有些配置可能写:
“server”: “example.com:443”
这时不能简单地把整个字符串都填到:
server:
然后又额外写:
port: 443
要根据目标Mihomo格式:
把主机名和端口正确拆开。
十二、例如server:port怎么拆?
原始:
example.com:443
通常应该拆成:
server: example.com
port: 443
十三、IPv6地址怎么办?
IPv6包含:
多个冒号。
例如:
不要简单按第一个冒号:
切割。
否则会把IPv6地址拆坏。
十四、JSON里的port怎么转换?
如果本身有:
“port”: 443
直接映射:
port: 443
通常使用:
数字。
十五、port要不要加引号?
一般:
不需要。
例如:
port: 443
即可。
十六、JSON里的auth怎么处理?
例如:
“auth”: “abc123”
通常映射为:
password: abc123
十七、密码里有特殊字符怎么办?
YAML对某些字符:
有特殊含义。
如果密码包含:
:
{
}
[
]
&
?
等字符,
建议:
用引号包起来。
例如:
password: “abc#123”
十八、为什么#特别容易出问题?
因为YAML中:
常用于:
注释。
如果不加引号,
后面的内容可能被:
当成注释。
十九、JSON里的tls.sni怎么转?
例如:
“tls”: {
“sni”: “example.com”
}
对应Mihomo常见:
sni: example.com
二十、sni是什么?
SNI用于:
TLS握手时告诉服务器:
客户端希望访问哪个域名。
有些Hysteria2节点:
server
和:
sni
并不相同。
二十一、server和sni必须一样吗?
不一定。
例如:
server: 1.2.3.4
sni: example.com
也是可能的。
所以转换时:
不要擅自把SNI改成server。
二十二、JSON里的insecure是什么意思?
例如:
“insecure”: true
通常表示:
跳过TLS证书验证。
二十三、insecure怎么映射到Mihomo?
一般对应:
skip-cert-verify
逻辑上:
insecure: true
→
skip-cert-verify: true
二十四、insecure: false呢?
对应:
skip-cert-verify: false
二十五、可以为了省事永远写true吗?
不建议。
如果服务器证书正常:
应该优先保持正常验证。
只有原始配置明确:
允许跳过验证
时,
才应保持:
true。
二十六、为什么乱改skip-cert-verify会有风险?
因为它控制:
TLS证书验证。
长期关闭证书验证:
会降低连接验证能力。
二十七、JSON里的obfs怎么转换?
Hysteria2常见混淆:
salamander。
JSON可能出现:
“obfs”: {
“type”: “salamander”,
“password”: “xxxxxx”
}
二十八、转换到Mihomo时怎么写?
常见对应:
obfs: salamander
obfs-password: xxxxxx
二十九、为什么不能直接复制JSON的obfs对象?
因为Mihomo节点配置通常:
不是同样的嵌套结构。
JSON里可能是:
obfs.type
obfs.password
而Mihomo可能要求:
obfs
obfs-password
两个平级字段。
三十、只有obfs没有密码怎么办?
如果服务器确实启用了:
salamander
通常还需要:
obfs-password。
否则可能出现:
missing obfs password
obfs-password required
Timeout。
三十一、上一篇讲过的obfs-password问题在这里为什么很关键?
因为:
JSON → YAML
正是最容易丢:
Hysteria2协议专用参数
的步骤之一。
三十二、JSON里的obfs.password可以直接当认证password吗?
不能。
例如:
auth: login123
obfs.password: salamander456
那么转换以后应该分别是:
password: login123
obfs-password: salamander456
三十三、如果两个密码刚好相同呢?
即使值相同,
仍然应该分别:
映射到正确字段。
三十四、JSON里的bandwidth是什么?
部分Hysteria2配置可能包含:
上传带宽
下载带宽
例如:
“bandwidth”: {
“up”: “20 mbps”,
“down”: “100 mbps”
}
三十五、bandwidth一定要写进Mihomo吗?
不一定。
具体取决于:
Mihomo版本
配置方式
以及该字段是否需要。
不要看到原始JSON里有:
所有字段
就机械复制。
三十六、为什么有些字段可以忽略?
因为原生Hysteria2客户端配置可能还包含:
本地监听
SOCKS5端口
HTTP端口
日志
ACL
这些属于:
客户端本地运行参数。
它们不是:
远程节点参数。
三十七、哪些字段通常属于节点本身?
重点包括:
server
port
auth/password
sni
insecure/skip-cert-verify
obfs
obfs-password
以及部分协议专用参数。
三十八、哪些字段通常不是节点本身?
例如:
socks5.listen
http.listen
log.level
本地监听地址
这些更多是:
客户端运行配置。
三十九、为什么不能把完整client JSON全部塞进一个Mihomo节点?
因为:
原生客户端配置
和:
Mihomo单节点定义
不是同一个层级。
四十、Hysteria2 client config.yaml是什么?
通常指:
Hysteria2客户端配置文件。
它可能包含:
远端服务器参数
TLS参数
认证
本地代理监听
流量控制
所以比一个:
Mihomo代理节点
包含的内容更多。
四十一、Mihomo YAML和Hysteria2原生client.yaml一样吗?
不一样。
虽然都是:
YAML
但Schema:
完全不同。
四十二、什么叫Schema不同?
就是:
字段名字
字段层级
允许的参数
都可能不同。
四十三、所以YAML转YAML也可能不能直接复制?
对。
即使:
两边都叫YAML
也不代表:
结构兼容。
四十四、Hysteria2原生YAML里的auth怎么转?
如果原生配置:
auth: xxxxxx
Mihomo节点通常:
password: xxxxxx
四十五、原生YAML里的tls.sni怎么转?
通常:
tls:
sni: example.com
→
sni: example.com
四十六、原生YAML里的tls.insecure怎么转?
通常:
tls:
insecure: true
→
skip-cert-verify: true
四十七、原生YAML里的obfs怎么转?
例如:
obfs:
type: salamander
salamander:
password: abc123
可能需要展开成:
obfs: salamander
obfs-password: abc123
四十八、为什么这个转换特别容易写错?
因为原生配置:
是多层嵌套。
Mihomo:
可能是平级字段。
四十九、如果直接把嵌套obfs复制过去会怎样?
可能出现:
Unknown Field
Invalid Config
或者:
Mihomo忽略该参数。
五十、Hysteria2 JSON转YAML最重要的是哪些参数?
优先保证:
server
port
password
sni
skip-cert-verify
obfs
obfs-password
正确。
五十一、为什么先保证这些参数?
因为它们直接影响:
连接
认证
TLS
混淆。
五十二、转换后节点能显示就代表参数都对吗?
不代表。
Mihomo能够解析:
节点结构
只能说明:
YAML格式基本正确。
但认证参数:
仍可能错误。
五十三、节点显示但Timeout通常检查什么?
优先:
server
port
password
sni
obfs-password
TLS配置。
五十四、节点完全不显示呢?
优先检查:
type
YAML缩进
Mihomo核心版本
配置是否成功加载。
五十五、type应该写什么?
Mihomo中Hysteria2节点常见:
type: hysteria2
五十六、写成hy2可以吗?
不要默认。
除非:
你当前客户端明确支持这种写法。
最稳妥:
按照Mihomo支持的字段。
五十七、为什么网上有不同字段写法?
原因包括:
不同核心
不同版本
不同转换器
不同客户端
甚至:
旧教程。
五十八、转换时应该优先参考什么?
优先级:
当前Mihomo版本支持的格式
→ 客户端文档
→ 原始节点参数
→ 第三方教程。
五十九、不要只看旧教程吗?
对。
Hysteria2和Mihomo都:
持续更新。
旧配置示例:
可能已经不完全适用。
六十、JSON里的ALPN怎么办?
部分Hysteria2配置可能包含:
ALPN。
如果目标Mihomo版本支持相应字段:
需要按照其支持格式映射。
不要:
自己猜字段名称。
六十一、ALPN一般和什么有关?
主要和:
TLS协议协商
有关。
它和:
obfs-password
不是一类参数。
六十二、JSON里的fingerprint怎么办?
如果配置包含:
TLS指纹
需要确认:
当前Mihomo Hysteria2节点是否支持对应字段。
不要直接套用:
其他协议的fingerprint配置。
六十三、为什么VLESS Reality字段不能套到Hysteria2?
因为:
协议不同。
例如:
public-key
short-id
属于:
Reality相关参数。
不是普通Hysteria2配置字段。
六十四、JSON里出现server_name怎么办?
有些第三方JSON不用:
sni
而使用:
server_name
它在语义上可能对应:
TLS Server Name。
转换时应该确认:
它是否等同于SNI。
六十五、JSON里出现skip_cert_verify怎么办?
如果已经是:
skip_cert_verify
语义通常接近:
skip-cert-verify。
但字段风格:
下划线
和:
连字符
不同。
六十六、为什么JSON常用下划线,YAML示例常用连字符?
这是:
不同程序字段命名习惯。
不能认为:
改格式时字段名会自动转换。
六十七、大小写会影响配置吗?
有可能。
配置字段应该严格按照:
目标程序要求。
六十八、JSON里的true/false转YAML时怎么写?
直接:
true
false
不要写:
“true”
除非目标Schema明确允许字符串。
六十九、为什么字符串”true”可能有问题?
因为:
布尔值
和:
文本字符串
是两种不同类型。
七十、端口也一样吗?
是。
port:
通常应该是:
数字
而不是不必要的字符串。
七十一、YAML缩进要几格?
常见使用:
2个空格。
重点不是:
一定几格
而是:
同一层级保持一致。
七十二、可以用Tab吗?
不建议。
YAML尽量使用:
空格。
七十三、一个节点示例怎么写?
例如:
proxies:
- name: HY2-01
type: hysteria2
server: example.com
port: 443
password: “your-auth-password”
sni: example.com
skip-cert-verify: false
obfs: salamander
obfs-password: “your-obfs-password”
这是:
结构示例。
实际值必须来自:
自己的节点配置。
七十四、为什么不能直接复制示例里的密码?
因为这些只是:
占位符。
真正连接需要:
服务器真实参数。
七十五、只有一个节点时也需要proxies吗?
如果你是在:
完整Mihomo配置
里写节点:
通常会放在:
proxies:
下面。
七十六、如果客户端只让你添加单节点呢?
有些客户端:
提供图形界面
不需要手写:
完整proxies结构。
七十七、为什么有些Mihomo配置没有proxies?
可能使用:
proxy-providers。
节点由:
Provider远程获取。
七十八、JSON节点可以直接转成Proxy Provider吗?
可以构建Provider配置,
但这已经属于:
另一层配置。
普通用户:
没必要为了一个节点故意做Provider。
七十九、什么时候适合Proxy Provider?
当你有:
大量远程节点
并希望:
独立更新节点列表
时。
八十、JSON转YAML后怎么验证格式?
至少检查:
YAML能否被客户端正常加载。
如果出现:
Invalid Config
说明先处理:
格式和字段。
八十一、如果没有Invalid Config但节点Timeout呢?
说明:
语法可能已经通过。
接下来检查:
连接参数。
八十二、最常见的转换错误之一:auth没转成password
表现:
节点显示
但认证失败
或:
Timeout。
八十三、第二个常见错误:insecure逻辑写反
例如:
原始:
insecure: true
却写成:
skip-cert-verify: false
这就:
语义反了。
八十四、第三个常见错误:漏掉SNI
如果服务器证书依赖:
特定域名
漏掉SNI:
可能TLS握手失败。
八十五、第四个常见错误:obfs-password丢失
特别是在:
第三方转换
中非常常见。
八十六、第五个常见错误:server带端口又重复写port
例如:
server: example.com:443
port: 443
这种结构:
可能不符合目标格式。
八十七、第六个常见错误:复制原生client配置的本地监听字段
例如:
socks5.listen
并不是:
Mihomo远程节点参数。
八十八、第七个常见错误:JSON转YAML只换语法不换字段
例如:
auth: abc
直接保留:
auth: abc
但Mihomo需要:
password。
这就是典型的:
格式转换成功
Schema转换失败。
八十九、JSON转YAML和订阅转换有什么区别?
JSON转YAML:
可能只处理:
一个配置或节点。
订阅转换:
通常处理:
一批节点
并生成完整配置。
九十、订阅转换会自动完成这些字段映射吗?
好的转换工具:
可能会。
但不能保证:
所有Hysteria2字段都完整支持。
九十一、为什么Hysteria2比VMess更容易转换失败?
因为:
协议专用字段更多。
例如:
obfs
obfs-password
TLS相关参数
带宽
端口跳跃等。
九十二、如果JSON来自服务商后台,最好的方法是什么?
先看看后台有没有:
Mihomo
Clash Meta
Clash
专用订阅。
如果有:
优先直接使用。
九十三、什么时候才建议自己转JSON?
当:
服务商没有目标客户端格式
并且:
你能确认所有参数含义。
九十四、第三方在线JSON转YAML工具能直接用吗?
普通格式转换:
只能把:
JSON语法
变成:
YAML语法。
它不会自动知道:
auth应该改成password。
九十五、这就是为什么“在线JSON转YAML”经常导入失败吗?
是。
它可能生成:
语法正确的YAML
但:
Mihomo完全不认识字段结构。
九十六、正确的转换是什么?
不是:
JSON → YAML文本。
而是:
Hysteria2 JSON Schema
→
Mihomo Hysteria2 Schema。
九十七、转换完成后第一步测试什么?
先:
加载配置。
确认没有:
YAML错误。
九十八、第二步测试什么?
确认:
节点出现在列表。
九十九、第三步测试什么?
单独测试:
一个节点的延迟。
一百、不要一开始批量测速吗?
对。
先验证:
单节点。
避免把:
批量测试失败
误认为配置整体错误。
一百零一、如果延迟显示-1怎么办?
可能是:
核心
DNS
连接参数
节点本身。
需要进一步排查。
一百零二、如果直接Timeout怎么办?
检查:
server
port
password
sni
obfs-password
网络。
一百零三、如果authentication failed呢?
优先检查:
auth → password
映射。
一百零四、如果出现missing obfs password呢?
检查:
JSON里的obfs.password
是否成功转换成:
obfs-password。
一百零五、如果出现certificate verify failed呢?
检查:
SNI
证书
skip-cert-verify
是否正确映射。
一百零六、如果出现Unknown Field呢?
说明:
字段名字
或者:
核心版本
可能有问题。
一百零七、如果出现Unsupported Proxy Type呢?
优先检查:
当前Mihomo核心是否支持Hysteria2。
一百零八、为什么需要更新Mihomo核心?
旧核心可能:
不支持新字段
或者:
Hysteria2支持不完整。
一百零九、更新核心后还是失败怎么办?
不要继续反复更新。
回到:
原始JSON
和:
转换YAML
逐项对比。
一百一十、最应该逐项对比哪些字段?
建议表格化检查:
JSON server → YAML server
JSON port → YAML port
JSON auth → YAML password
JSON tls.sni → YAML sni
JSON insecure → YAML skip-cert-verify
JSON obfs.type → YAML obfs
JSON obfs.password → YAML obfs-password
一百一十一、参数对照表
| Hysteria2 JSON/原生配置 | Mihomo常见字段 | 说明 |
|---|---|---|
| server | server | 服务器地址 |
| port | port | 服务器端口 |
| auth | password | Hysteria2认证信息 |
| tls.sni | sni | TLS服务器名称 |
| tls.insecure / insecure | skip-cert-verify | 是否跳过证书校验 |
| obfs.type | obfs | 常见为salamander |
| obfs.password | obfs-password | 混淆密码 |
| name | name | 节点名称,可自行设置 |
实际字段仍应以:
当前Mihomo版本支持格式
为准。
一百一十二、不要映射哪些客户端本地字段?
例如:
socks5.listen
http.listen
local port
日志目录
这些不属于:
远程节点本身。
一百一十三、转换后可以删除原始JSON吗?
建议:
先不要。
原始JSON是:
最重要的参数参考。
一百一十四、为什么要保留原始配置?
以后出现:
节点Timeout
SNI错误
obfs缺失
可以随时:
回头对比。
一百一十五、JSON配置里有敏感信息吗?
有可能。
包括:
认证密码
服务器地址
obfs密码
订阅token。
一百一十六、可以把完整JSON发到论坛求助吗?
不建议。
先:
脱敏。
一百一十七、应该遮掉哪些内容?
至少遮:
server
auth/password
obfs-password
token
个人订阅URL。
一百一十八、配置示例能不能使用假参数?
可以。
公开教程应该:
使用example.com
your-password
之类占位内容。
一百一十九、Hysteria2 JSON转Mihomo YAML标准流程
建议按照:
- 保存原始JSON
- 找出server
- 找出port
- 找出auth
- 找出TLS/SNI
- 找出insecure
- 检查obfs
- 检查obfs-password
- 转成Mihomo字段
- 检查YAML缩进
- 更新Mihomo核心
- 加载配置
- 检查节点是否出现
- 单独测试延迟
- 查看错误日志
一百二十、不要做什么?
不要:
只用在线JSON转YAML工具机械转换
不要:
把auth和obfs-password搞混
不要:
自己编一个obfs密码
不要:
漏掉SNI
不要:
为了连接成功直接长期关闭所有证书验证
不要:
在不知道含义的情况下复制所有JSON字段
一百二十一、如果服务商已经提供Mihomo订阅怎么办?
直接使用:
原生Mihomo订阅。
通常没必要:
自己转JSON。
一百二十二、如果只有Hysteria2分享链接呢?
也可以从:
完整HY2 URI
提取节点参数。
很多情况下:
比第三方JSON更容易判断:
核心连接参数。
一百二十三、JSON、URI、YAML哪个最好?
没有绝对最好。
关键是:
目标客户端能否完整理解。
对于Mihomo:
最省事的是:
兼容Mihomo的原生YAML订阅。
一百二十四、为什么减少转换次数很重要?
例如:
Hysteria2 JSON
→ 第三方格式
→ Base64
→ Clash YAML
每多一层:
都可能丢参数。
一百二十五、最容易丢的字段是什么?
Hysteria2场景里重点关注:
obfs-password
SNI
TLS验证
协议专用参数。
一百二十六、怎么判断已经转换成功?
满足:
配置正常加载
节点正常出现
延迟可以测试
实际网页可以访问
日志没有认证/TLS/obfs错误
才算:
真正转换成功。
总结
Hysteria2 JSON配置怎么转Mihomo YAML?
真正要做的不是简单把:
JSON大括号
转换成:
YAML缩进。
而是把原始Hysteria2配置中的参数:
正确映射到Mihomo支持的节点字段。
最关键的几个对应关系通常是:
server → server
port → port
auth → password
tls.sni → sni
insecure → skip-cert-verify
obfs.type → obfs
obfs.password → obfs-password
如果转换以后出现:
节点不显示
优先检查:
YAML格式和Mihomo核心。
如果节点能显示但:
Timeout
优先检查:
server、port、password、SNI和obfs-password。
如果提示:
missing obfs password
说明需要重新检查:
obfs参数是否在转换过程中丢失。
如果提示:
authentication failed
重点检查:
auth是否正确转换成password。
如果提示:
certificate verify failed
重点检查:
SNI和TLS验证设置。
对于普通用户来说,如果服务商已经提供:
Mihomo
Clash Meta
Clash
原生订阅,
应该优先使用原生格式。
只有在没有目标客户端订阅的情况下,才需要自己进行:
Hysteria2 JSON → Mihomo YAML
参数转换。
这样可以最大限度减少:
字段丢失
认证失败
obfs-password缺失
TLS错误
以及节点Timeout问题。
继续阅读:
👉 Hysteria2配置文件怎么写?Mihomo YAML节点配置教程