导入

Chute 可以导入为其他客户端编写的代理配置。它接受两类输入:单节点的分享链接ss://vmess:// 等),以及 Clash/mihomo YAML 或 sing-box JSON 格式的完整配置文件。两者都会被转换成原生的 Chute 配置——你最终得到的是一份带有 [Proxy][Proxy Group][Rule] 段的普通 Chute 配置文件,而不是一个由 Chute 持续解释执行的外部文件。

http://https:// 地址永远不会被当作分享链接。它们是订阅地址:内容会先被下载下来,再根据正文的实际内容进行导入。


协议头 生成的策略类型 默认端口
ss:// ss 8388
vmess:// vmess 443
vless:// vless 443
trojan:// trojan 443
hysteria2://hy2:// hysteria2 443
tuic:// tuic 443
anytls:// anytls 443
socks5://socks:// socks5 1080
ssh:// ssh 22

大多数链接采用 userinfo@host:port?query#name 的形式。有两个例外:vmess:// 承载的是一个 base64 编码的 JSON 对象(v2rayN 格式,字段名为 add / ps / scy / net / aid),而 ss:// 同时接受 SIP002(base64(method:password)@host:port)和更早的整体编码形式 base64(method:password@host:port)。Base64 负载可以不带填充,也可以使用 URL 安全字母表。

trojan://[email protected]:443?sni=example.com&alpn=h2,http/1.1#Tokyo%20Node

会转换为:

[Proxy]
Tokyo Node = trojan, example.com, 443, password=password, tls=true, sni=example.com, alpn=h2|http/1.1

# 之后的文本会经过百分号解码,成为策略名称;vmess:// 则改为从 ps 字段取名。没有名称的链接以 host:port 命名。配置格式保留的字符——=,[]"、制表符和换行符——在名称中会被替换成空格。

Trojan、Hysteria2、TUIC 和 AnyTLS 都是仅支持 TLS 的协议,因此即使链接中没有写明,也会补上 tls=true

多条链接。 一份内容可以是多条以换行分隔的分享链接,外层还可以再套一层 base64。每一行只要能解析就会生成一个策略,重复的名称会加上 23 …… 后缀,这样规则和策略组仍然可以逐个指向每个节点。无法解析的行会以警告形式报告,内容中的其余部分照常导入;只有在完全没有任何内容能被转换时,导入才会失败。

协议头不在上表中的链接不会被识别为分享链接。协议头已知但缺少必填字段的链接会被拒绝,并给出指明该协议头的提示信息。

只有下列查询参数会被读取;链接中的其他内容都会被忽略。

参数 适用于 转换为
snipeerservername 全部 sni
alpn(以逗号分隔) 全部 alpn(各值以 `\ ` 连接)
fp 全部 fingerprint(uTLS ClientHello 指纹)
allowInsecureinsecureskip-cert-verify 全部 skip-cert-verify=true
security=tlsxtlsreality 全部 tls=true
pbksid REALITY reality=truepublic-keyshort-id
flow VLESS xtls=trueflow
type/network=ws + pathhost 全部 ws=truews-pathws-headers=Host:…
type/network=grpc + serviceName(或 path 全部 grpc=truegrpc-service-name
type/network=xhttpsplithttp + pathhostmode 全部 xhttp=truexhttp-pathxhttp-hostxhttp-mode
obfsobfs-passwordupdown Hysteria2 同名选项
plugin=… Shadowsocks 见下文

Shadowsocks 的 plugin 值按 name;key=value;… 解析。obfs-local / simple-obfs / obfs 会转换成 obfsobfs_paramv2ray-plugin 在其(默认的)websocket 模式下会转换成 ws=true 以及 ws-pathws-headers。其他插件都会产生警告,并且不会被带过来——生成的策略无法连接到需要该插件的服务器。

注意:非零的 VMess aid(alterId)会以警告形式报告。Chute 只支持 VMess AEAD,仍然要求旧版 MD5 握手的服务器无法通过认证。


配置文件导入

可以识别三种格式:

格式 处理方式
原生 Chute/Surge 配置文件 直接使用,不做转换
Clash / mihomo YAML 转换为原生配置
sing-box JSON 转换为原生配置

格式由内容判定,文件名只作为参考。以 { 开头的内容一律按 sing-box JSON 处理,无论文件叫什么名字(存成 .yaml 的 sing-box 配置照样能按 YAML 解析,所以单靠文件名并不可靠)。除此之外,.conf 扩展名表示原生格式,.json 表示 sing-box,.yaml / .yml 表示 Clash。当没有可用的文件名时——例如订阅返回的正文——由第一行有意义的内容决定:#!MANAGED-CONFIG 或者 [Section] 段头表示原生格式,而 proxies:proxy-groups:rules:proxy-providers:rule-providers: 表示 Clash。其他情况一律按原生格式处理。

如果一份文档能够解析,却不包含任何一个用来定义其方言的段,它会被拒绝,而不是被报告成一次什么都没导入的成功导入:Clash YAML 至少需要 proxiesproxy-groupsrulesproxy-providersrule-providers 之一,sing-box JSON 则需要 outboundsendpointsroute

单个无法转换的条目绝不会导致整次导入失败。 每个代理、策略组和规则都会被独立转换;在 Chute 中没有对应实现的会被跳过并报告出来。转换结果包含转换后的配置、一份警告列表,以及一份被跳过的源字段列表。同样的警告也会以注释的形式写进转换后的文本,紧挨着它们来源的那一段:

[Proxy]
HK 01 = ss, example.com, 8388, aes-128-gcm, password
# KL-CONVERT-WARNING [proxies[3]]: proxy type 'snell' was skipped — Snell is a Surge-proprietary protocol KLNEKit does not implement

最后,转换后的文本会再用 Chute 自己的解析器重新解析一遍。解析器拒绝的行会被注释成 # KL-CONVERT-DROPPED: … 并报告出来,因此一份 95% 可转换的配置文件仍然能够导入并运行。

会破坏配置格式的节点名称会被改写:, 变成空格,= 变成 -,改写之后若与其他名称冲突,则加上数字后缀。策略组成员和规则的目标策略会同步改写,因此每一处引用仍然指向同一个节点。direct 代理/出站会映射到内置的 DIRECTreject / block / dns 则映射到 REJECT

注意:转换得到的配置文件是一份静态快照。Chute 重新下载订阅时会按原生配置文件解析,因此需要经过转换的配置文件在保存时不带自动更新 URL,也不会自行刷新。

Clash / mihomo 转换说明

注意:dialer-proxy 会转换成 underlying-proxy。Chute 会解析并保留该选项,但并未实现代理链——带有该选项的策略会记录一条警告,并直接连接自己的服务器。在 mihomo 下经过链式转发的流量,导入之后不再是链式的。

  • 会被转换的代理类型:ssssrvmessvlesstrojanhttpsocks5hysteria2tuicanytlswireguardssh。Chute 没有实现的类型——snellhysteria(v1)、mierujuicityshadowquictrusttunnelopenvpnsudokuvmess-http——会被跳过,并给出指明该协议的警告。还有两种类型虽然 Chute 支持对应的协议,但同样会被跳过:masque 代理,因为 mihomo 的字段布局不同;以及 tailscale 代理,它在 [Tailscale] 段中统一配置,并通过内置的 TAILSCALE 策略使用。
  • mihomo 的两个 fingerprint 键含义不同,转换时会区分开:client-fingerprint 转换为 fingerprint(uTLS ClientHello 指纹),fingerprint 转换为 cert-fingerprint-sha256(证书固定)。
  • udp: false 转换为 udp-relay=falsetfo 转换为 tfo=true,启用的 smux 块转换为 mux=true
  • 策略组类型 selecturl-testfallbackload-balance 会连同它们的健康检查选项一起转换。relay 组会被跳过——它属于链式转发,而链式转发并未实现。use: 成员会转换成 policy-provider:<name> 引用,include-all / include-all-proxies / include-all-providers 会展开成显式的成员列表。
  • filterexclude-filter 会以带引号的形式保留,但包含逗号或引号的表达式无法在配置行的格式中保存下来,会被丢弃并给出警告。
  • 名称不同的规则类型会被重命名:MATCHFINALDST-PORTDEST-PORTSRC-IP-CIDRSRC-IPREJECT-DROPREJECT-TINYGIF 都归并为 REJECT;目标为 PASSCOMPATIBLE 的规则会被跳过。
  • 内联的 rule-providertype: inline 加上 payload 列表)会展开成等价的具体规则,因为 Chute 的 [Rule Provider] 行无法内嵌 payload。
  • 有对应项的通用键会被映射过来:mixed-port 转换为 HTTP 的 port(SOCKS5 需要单独的 socks-port),allow-lan 转换为 allow-wifi-accesslog-level 映射到 loglevelexternal-controller/secret 转换为外部 HTTP 控制器选项,启用的 sniffer 转换为 sniffing-enabled

sing-box 转换说明

  • 会被转换的出站类型:shadowsocksvmessvlesstrojanhysteria2tuicanytlsshadowtlswireguardhttpsockssshselectorurltest 会转换成 selecturl-test 策略组。
  • detour 会因为与 dialer-proxy 相同的原因产生警告:出站链式转发并未实现,该出站会直接连接自己的服务器。
  • route.rule_set 条目会转换成 [Rule Provider] 行(远程使用 type=http,本地使用 type=file,一律按 classical 形式的 mihomo YAML 规则列表读取)。二进制 .srs 格式的规则集会被拒绝——Chute 只能读取文本形式的规则内容。
  • 路由规则依据 action 键处理:route/bypass 使用其指定的出站,reject 转换为 REJECT,而 hijack-dnssniffresolve 不会生成任何内容,因为 Chute 是通过 [General] 控制这些行为的。
  • multiplex 设置和 dns.rules(按域名的 DNS 路由)没有对应项,会被报告为已丢弃。

限制

  • 代理链并未实现。 mihomo 的 dialer-proxy、sing-box 的 detour 和 Clash 的 relay 组描述的都是链式转发;它们在 Chute 中都不会产生链式流量。
  • 在 Chute 中没有对应项的选项会被丢弃并给出警告,而不是默默忽略:代理级别的 ip-versioninterface-namerouting-markmptcp;策略组级别的 exclude-typedisable-udpinterface-namerouting-markicon;以及通用键 bind-addresstcp-concurrentgeodata-modegeox-urlfind-process-modeunified-delayauthenticationtproxy-portredir-port 等。
  • 没有对应项的规则类型会被跳过:GEOSITEIP-SUFFIXSRC-IP-SUFFIXSRC-GEOIPSRC-IP-ASNDSCPUIDSUB-RULEPROCESS-PATH-REGEXPROCESS-NAME-WILDCARDPROCESS-PATH-WILDCARDIP-ACCEPT。带有 mihomo src 修饰符的规则同样会被跳过,以免匹配到错误的端点。mihomo 的 sub-rules(嵌套规则树)会被丢弃。
  • 由 Chute 自行管理的协议细节不会被带过来:Hysteria2 的端口跳跃(ports)、TUIC 的 heartbeat、AnyTLS 的会话池调优、WireGuard 的 peers 列表(只会配置单个 peer)以及 workers
  • Chute 未实现的传输方式只会被报告,不会被转换:h2http 混淆、httpupgradev2ray-http-upgrade 这种 WebSocket 变体、WebSocket 的 max-early-data,以及 XHTTP 的 extra(XMUX / download-settings)。
  • Clash 的运行 mode 在 Chute 中是一个运行时开关,而不是配置键;处于 globaldirect 模式的配置文件会转换为规则模式,并给出警告。
  • YAML 使用标准解析器读取,因此锚点和 << 合并键都可以使用。写成多行标量的值会被折叠到一行,因为换行符会把它所在的那一行配置切断。
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-08-13 17:01:32

results matching ""

    No results matching ""