AnyTLS 是什么?AnyTLS 协议的设计与客户端支持
AnyTLS 协议是试图缓解“TLS 嵌套 TLS”握手指纹的代理协议:在 TLS 连接内复用多个流,并用可由服务端更新的填充方案控制包长度。官方仓库只是参考实现,日常使用建议选第三方兼容软件。
AnyTLS 资料卡核验于 2026-10-09
- 来历
- 官方仓库 github.com/anytls/anytls-go:README 称它是该协议的参考实现,协议、常见问题与 URI 格式文档在仓库 docs 目录。页面未写明提出者姓名。
- 传输与加密
- 基于 TLS:握手完成后客户端立即发送 sha256(密码) 与随机填充;认证成功进入会话层,帧由命令、流 ID、数据长度和数据组成;认证失败时服务端关闭连接或回落到 HTTP 服务。协议版本号目前为 2。
- 官方文档写明支持的内核
- sing-box(1.12.0 起)、Mihomo、anytls-go(参考实现)、Shadowrocket(2.2.65 起)、Stash、Loon
站内收录的客户端里,文档写明支持 AnyTLS 的
- mihomo
- v2rayN
- sing-box
- Karing
- NekoBox for Android
- Throne
- Shadowrocket
- Quantumult X
- Stash
- Surge
- Loon
- OpenClash
- PassWall
完整对照见协议 × 客户端支持矩阵。
anytls/anytls-go 仓库AnyTLS 协议文档AnyTLS 常见问题(含已知弱点)sing-box 文档:AnyTLSMihomo 文档:AnyTLS
这张卡片的资料来源(6 条)
- README:协议定位、特点、参考实现、示例的不安全默认配置、第三方兼容软件(sing-box、mihomo、Shadowrocket 2.2.65+、Stash、Loon)及其兼容度未经项目验证、URI 格式 v0.0.12 起可用(github.com)
- 协议文档:基于 TLS;sha256(密码)+填充认证;会话帧与命令;paddingScheme 下发机制;版本号 v=2;认证失败关闭连接或回落 HTTP(github.com)
- FAQ:已知弱点列表;默认 PaddingScheme 只是示例;协议名称由来(github.com)
- sing-box 文档:AnyTLS 自 1.12.0 起提供,含 idle_session_* 与 min_idle_session 参数(sing-box.sagernet.org)
- Mihomo 文档含 anytls 代理类型,并声明不支持 AnyTLS+Reality(wiki.metacubex.one)
- Xray 出站协议列表不含 AnyTLS(xtls.github.io)
AnyTLS 协议要处理的是一个很具体的麻烦:用 TLS 包着代理流量时,里面往往还有一层 TLS,两次握手叠在一起,包长度和握手往返都会露出特征。官方仓库把它描述为一个试图缓解“TLS 嵌套 TLS”握手指纹问题的代理协议,办法是在 TLS 之上复用连接,再用一套可由服务端更新的分包与填充方案控制数据包长度。下面依据官方仓库、协议文档和常见问题页,说清 anytls是什么、它的弱点,以及 anytls客户端怎么判断。
AnyTLS 协议是什么:三份官方文档各管一件事
官方仓库是 anytls/anytls-go,README 称它是这个协议的参考实现,协议、常见问题与 URI 格式文档放在仓库的 docs 目录。仓库页面没有写明协议提出者是谁,首次发布的时间也没有写,这部分资料待核实,梯子岛不去补。仓库状态会变化,以仓库页实际显示为准。
查 AnyTLS 的资料,去哪一份文档找什么,可以这样对照:
| 文档 | 里面有什么 | 适合什么时候看 |
|---|---|---|
| README | 定位与特点、示例的安全提示、第三方兼容软件、URI 格式 | 第一次了解协议,或想确认软件支持情况 |
| 协议文档 | 认证、会话帧、填充方案下发 | 想弄清一次连接里到底发生了什么 |
| 常见问题 | 已知弱点、默认填充方案的定位 | 想知道它不能做什么 |
三份里最值得先读的是常见问题页:一个协议愿意把弱点写在自己的文档里,对读者判断它的边界很有帮助。
“TLS 嵌套 TLS”是什么问题,别的做法怎么应对
你访问的 https 网站,本身就是一层 TLS。代理协议如果也用 TLS 做外壳,外层握手完成后,内层还要再握手一次,这就是“TLS 嵌套 TLS”。额外的握手往返和固定的包长度,是文档里指出的特征来源。
值得注意的是,AnyTLS 的常见问题页把“TLS 嵌套带来额外握手往返与包长度特征”也列在了自己的已知弱点里。所以更准确的说法是“缓解”,而不是“消除”。同一个问题,站内其他协议资料里有不同的回应:
| 做法 | 资料里的说法 | 站内详细资料 |
|---|---|---|
| Trojan 协议加 Mux | Xray 文档提到公网环境还需要 Mux,否则内层载荷本身是 TLS 时会形成 TLS in TLS | Trojan 协议 |
| REALITY | README 不建议搭配 XTLS 以外的代理协议,理由是有明显的 TLS in TLS 特征 | Reality 协议 |
| AnyTLS | 复用连接,并用可更新的填充方案控制包长度模式 | 本文 |
这张表只放文档的说法,不比较谁更有效。有没有效果、对哪种网络有效,需要大量实际测试,梯子岛没有这类数据。词典里的 TLS 和 多路复用 Mux 可以帮你补一下术语。
anytls的会话怎么走:认证、帧与填充方案
协议文档把一次连接写成几个阶段,对使用者的意义放在最右一列:
| 阶段 | 协议文档的写法 | 对使用者的意义 |
|---|---|---|
| 建连 | 基于 TLS | TLS 相关设置要与节点一致 |
| 认证 | 握手完成后,客户端立即发送 sha256(密码) 与随机填充 | 密码要与服务端一致 |
| 认证失败 | 服务端关闭连接,或回落到 HTTP 服务 | 看到的可能是连接被断开,也可能是一个网页 |
| 会话层 | 帧由命令、流 ID、数据长度和数据组成,一条 TLS 连接内用 SYN、PSH、FIN 命令复用多个流 | README 称这样可降低代理延迟,效果没有数据可引用 |
| 填充 | 用 paddingScheme 描述分包与填充,服务端可发 cmdUpdatePaddingScheme 下发新方案 | 方案不一定写死在客户端里 |
| 版本 | 协议文档里有版本号 | 客户端与节点的版本对不上时,先查各自的文档 |
“填充方案”用白话讲,就是一份规则:一次数据要拆成多大的包、在哪些位置补多少无意义的字节。常见问题页特别说明,默认的方案只是示例。所以没有必要去背某个具体的参数,更实用的认识是:这个协议把“包长度长什么样”做成了可以更换的部分。
sing-box 的 AnyTLS 出站还提供 idle_session_check_interval、idle_session_timeout、min_idle_session 这几个空闲会话管理参数。从名字看,分别管空闲会话的检查间隔、超时和最少保留数,具体含义以 sing-box 文档 为准。节点没有特别说明时,保持客户端默认即可。
AnyTLS 协议的弱点与不支持的组合
官方没有回避问题。常见问题页列出的已知弱点包括:
- TLS 嵌套带来额外的握手往返与包长度特征。
- 未处理下行流量。
- 首个往返内几乎同时发出多个包。
- 服务端不是 HTTP 服务器,仍可能存在主动探测问题。
README 另有一条提醒:示例的服务端与客户端默认采用不安全配置,假设不会遇到 TLS 中间人,示例项目的定位是演示协议,不是生产级客户端。再加上 Mihomo 文档声明不支持 AnyTLS 加 Reality 的组合、今后也不会支持,几条合起来,对使用者的含义很直接:
- 别把 anytls-go 的示例客户端当成日常工具。
- 别指望把 AnyTLS 和 Reality 叠在同一个节点里。
- 这些弱点是项目自己写的,梯子岛没有测试数据评估严重程度,也不会借此给它下任何“好”或“不好”的结论。
anytls客户端:谁写明支持,怎么判断
README 列出了第三方兼容软件,并说明这些软件的兼容程度没有经过项目验证。结合内核文档,可以得到下面这张表:
| 软件或内核 | 资料里怎么写 | 要留意什么 |
|---|---|---|
| sing-box | 文档有 AnyTLS 出站,较新的版本才提供 | 太旧的版本没有这个类型,先看 sing-box 档案 里的版本动态 |
| Mihomo | 文档有 anytls 代理类型 | 不支持与 Reality 组合,见 Mihomo 内核 |
| Shadowrocket、Stash、Loon | README 列为第三方兼容软件,Shadowrocket 的最低版本在 README 里有标注 | 闭源软件,以官方手册和商店页面为准 |
| anytls-go | 官方参考实现 | 示例默认配置不安全,定位是演示 |
| Xray-core | 出站协议列表不含 AnyTLS | 只用 Xray 内核的客户端,先确认它有没有另带别的内核 |
读表时记住两层:内核有类型,不等于客户端界面开放了它;界面有入口,不等于你手里的版本够新。哪款客户端写明支持,查 协议支持矩阵,没填的格子就是资料待核实;还没选好客户端,用 客户端选择工具 按平台缩小范围,官方入口在 下载导航。
anytls节点链接怎么读,要注意什么
官方文档给出的 URI 格式是 anytls://password@host:port,密码在前,服务器地址和端口在后,README 称参考客户端的较新版本可以直接使用这种链接。这类写法为什么存在,可以看词典里的 节点链接 URI,逐段拆开的办法见 节点链接怎么读。
最需要警惕的是:链接里直接带着密码。所以:
- 不要把完整链接发到公开的聊天群或评论区。
- 转换格式时尽量在本机完成,在线转换站的风险见 订阅转换怎么做才安全。
- 怀疑密码外泄,应当联系节点提供方更换,而不是继续使用。
导入 AnyTLS 节点后,怎么自己确认
- 在节点详情里确认类型显示为 AnyTLS,没有被转换成 Trojan 之类的别的类型。
- 确认客户端内核的版本够新,没有 AnyTLS 类型的旧内核不认识这条节点,具体表现因软件而异。
- 确认节点没有同时标注 Reality,Mihomo 不支持这种组合。
- 核对密码、服务器地址、端口,以及 TLS 相关设置,别带多余的空格。
- 连上后,用 IP 与 DNS 检测 看出口地区和 DNS 走向。梯子岛只教方法,不提供检测结果。
- 连不上时,按 梯子连不上怎么办 往下查,证书类报错优先看 证书错误与系统时间不对怎么办。
下一步:先查矩阵,再决定要不要换内核
- 手里有 AnyTLS 节点:先查 协议支持矩阵,确认客户端写明支持。
- 想对照 TLS 系协议的设计:读 Trojan 协议 和 Reality 协议。
- 想翻官方规范原文:去 协议规范导航。
- 订阅里协议很多、拿不准先试哪个:读 代理协议怎么选。
面对 AnyTLS,比较稳妥的态度是:官方怎么写就怎么理解,资料没写的地方就写“待核实”,不要靠传言补全。
这篇没有覆盖的
- 协议提出者是谁、首次发布是什么时候,官方页面没有写,资料待核实,本文不推测。
- 第三方软件对 AnyTLS 的兼容程度,项目方并未逐一验证,具体以各软件自己的文档为准。
- 官方示例项目只用于演示协议,本文不涉及搭建服务端,也不评价任何具体节点。
本文引用的官方来源
- anytls/anytls-go 仓库(github.com)
- AnyTLS 协议文档(github.com)
- AnyTLS 常见问题(含已知弱点)(github.com)
- sing-box 文档:AnyTLS(sing-box.sagernet.org)
- Mihomo 文档:AnyTLS(wiki.metacubex.one)
以上链接均为官方页面,梯子岛在 2026-10-09 核对过;个别网站会拦截自动化访问,用浏览器直接打开即可。平台规则可能随时调整,以官方页面当前内容为准。
AnyTLS 协议常见问题
AnyTLS 是什么?
AnyTLS 是一个试图缓解“TLS 嵌套 TLS”握手指纹问题的代理协议。它建立在 TLS 之上,一条连接里可以复用多个流,并用一套分包与填充方案来控制数据包的长度模式,这套方案可以由服务端下发更新。
AnyTLS 和 Trojan 有什么不同?
两者都把代理流量放进 TLS 里。Trojan 握手后发送密码哈希和类 SOCKS5 请求,AnyTLS 握手后发送密码的 sha256 和随机填充,并进入带命令的会话层,可复用多个流、可更新填充方案。哪个适合你,取决于客户端和节点实际提供什么。
AnyTLS 可以和 Reality 一起用吗?
Mihomo 文档明确声明不支持 AnyTLS 加 Reality 的组合,今后也不会支持。如果别处的教程把两者写在同一个节点里,先回到你所用内核的官方文档核对,不要照抄。需要 Reality 时,Mihomo 文档建议选择 VMess、VLESS 或 Trojan。
AnyTLS 有哪些已知弱点?
官方常见问题页自己列了几条,包括 TLS 嵌套带来的额外握手往返与包长度特征、未处理下行流量、首个往返内几乎同时发出多个包,以及因为服务端不是 HTTP 服务器,仍可能存在主动探测问题。这些是项目的自述,梯子岛没有测试数据去评估严重程度。
anytls-go 可以直接当日常客户端用吗?
不建议。README 说明它是协议的参考实现,示例的服务端与客户端默认采用不安全配置,假设不会遇到 TLS 中间人,定位是演示协议而不是生产级客户端。日常使用建议选第三方兼容软件,并以那款软件的文档为准。
anytls 节点的链接长什么样?
官方文档给出的 URI 格式是 anytls 加冒号斜杠斜杠,后面依次是密码、at 符号、服务器地址和端口。由于链接里直接包含密码,不要发到公开的地方,也不要随意放进来历不明的在线转换站,导入时只在自己的设备上操作。
接着读
- 协议 · Reality 协议是什么?VLESS + Reality 的原理与客户端
- 协议 · Trojan 协议是什么?Trojan 节点的原理与客户端支持
- 术语 · TLS是什么意思
- 术语 · 多路复用 Mux是什么意思
- 客户端 · sing-box 是什么?内核、官方客户端与各平台入口
- 客户端 · Mihomo 内核是什么?Clash Meta 内核与客户端的关系