AnyTLS 协议是什么:原理、sing-box 配置与客户端支持

协议与线路 · 发布 2026-11-05 · 更新 2026-11-05 · 约 3349 字 · 8 分钟

AnyTLS 是少数几个「为了解决一个明确问题」而设计的新协议。这个问题叫 TLS-in-TLS:你通过 Trojan 或 VLESS + TLS 这类协议访问一个 HTTPS 网站时,外层是代理的 TLS,内层是网站的 TLS,两次握手套在一起,包长序列有可识别的统计模式。研究表明这种模式可以被机器学习分类器识别,哪怕内容全部加密。AnyTLS 的做法是把包长和时序打乱,让嵌套特征消失。

它解决的问题

传统伪装协议的逻辑是「让流量看起来像 HTTPS」。但「看起来像」只在握手层面成立,一旦开始传数据,代理流量里嵌套的第二次 TLS 握手会表现为固定长度的几个包(ClientHello、ServerHello、证书……),这在普通 HTTPS 里不会出现。XTLS-Vision 用「内层 TLS 直通」的办法绕过,AnyTLS 则用主动填充的办法掩盖。

工作方式

  • 传输仍然是标准 TLS 1.3,服务端需要证书(可以是自签,客户端配置跳过验证,但伪装效果会打折扣)。
  • 客户端与服务端协商一套填充方案(padding scheme),决定每个包补多少字节、何时拆包。方案可以按会话动态变化。
  • 多路复用:多个请求共用一条 TLS 连接,减少握手次数。
  • 认证用预共享密码,哈希后在首包发送。

对用户来说这些都是透明的,你只需要客户端支持。

与其他协议的对比

对比AnyTLSVLESS + RealityTrojan
解决 TLS-in-TLS是(填充)需配合 XTLS-Vision否
需要域名证书是(自签也可)否是
多路复用内置可选可选(Trojan-Go)
客户端覆盖少中广
成熟度新较成熟成熟

完整对比见 机场协议区别。

客户端支持现状

  • sing-box:原生支持(1.12 以后版本),全平台。
  • mihomo(Clash Meta)内核:支持,对应 Clash Verge Rev、Clash Meta for Android、Clash Mi 的新版本。
  • Shadowrocket:较新版本支持。
  • v2rayN / v2rayNG:通过 sing-box 核心支持。
  • Xray:不支持(Xray 走的是 XTLS 路线)。

如果你的客户端导入订阅后 AnyTLS 节点不显示或报错,先升级。见 sing-box 使用教程。

sing-box 客户端配置示例

机场一般直接下发订阅,不需要你手写。如果机场只给了参数,sing-box 的 outbound 写法大致如下(字段以你的客户端版本文档为准):

{
  "type": "anytls",
  "tag": "anytls-hk",
  "server": "节点地址",
  "server_port": 443,
  "password": "机场提供的密码",
  "tls": {
    "enabled": true,
    "server_name": "节点域名"
  }
}

mihomo 的 YAML 写法:

- name: anytls-hk
  type: anytls
  server: 节点地址
  port: 443
  password: 机场提供的密码
  sni: 节点域名

一次 AnyTLS 连接的过程

  1. 客户端与节点建立标准 TLS 1.3 连接,SNI 为节点域名。
  2. 首个应用数据包:客户端发送密码的 SHA256 哈希 + 填充长度字段 + 填充字节。填充长度由当前「填充方案」决定,每个会话不同。
  3. 节点校验密码。通过后双方进入多路复用模式:一条 TLS 连接里开多个逻辑流,每个流对应一个代理目标。
  4. 服务端可以在会话中下发新的填充方案(UpdatePaddingScheme 命令),客户端随之调整后续包的分包与填充规则。
  5. 空闲时会话保持若干分钟供复用,减少重复握手。

与 Trojan 的本质区别在第 2 步和第 4 步:Trojan 的首包长度固定、后续包长完全跟随内层应用,AnyTLS 的包长分布是「被设计过的」,内层 TLS 握手那几个特征包会被切开或补齐。

与相邻协议的对比表

对比AnyTLSTrojanVLESS + XTLS-VisionShadowTLS v3
核心思路填充打乱包长真实 TLS 网站内层 TLS 直通借用真实站点握手
TLS-in-TLS 对策有无有无(但握手伪装强)
需要自己的证书是(可自签)是是 / Reality 不需要否
多路复用内置可选否否
额外流量填充 1%–10%几乎无几乎无几乎无
成熟度新高中高中

客户端支持矩阵

客户端AnyTLS最低版本(大致)备注
Clash Verge Rev(mihomo)支持mihomo 1.19.x 以后升级到最新版即可
Clash Meta for Android支持同上
Shadowrocket支持2025 年中以后版本旧版本节点不显示
sing-box支持1.12 以后原生实现
v2rayN支持需 sing-box 核心Xray 核心不支持
v2rayNG支持需 sing-box 核心同上
Clash Mi支持新版
Stash视版本—以官方更新日志为准

封锁高峰期的表现与切换策略

AnyTLS 针对的是被动流量分析,所以它的价值在「TLS 类节点能连上、但大流量时被限速或间歇断流」的场景,这正是 TLS-in-TLS 被识别的典型表现。如果你的 Trojan / VLESS 节点在高峰期出现这种症状而机场提供 AnyTLS 节点,切过去试一次。

反过来,节点 IP 被直接封(延迟测试全部超时)时,AnyTLS 和其他协议一样无效,只能等机场换 IP。切换顺序:同地区 TLS 节点 → AnyTLS 节点 → Hysteria2 节点 → 换地区 → 看机场公告。顺序背后的判断方法见 机场晚高峰很慢怎么办 和 订阅更新失败怎么办。

本站机场的情况

本站 17 家机场的品牌资料均未标注 AnyTLS,2026-08 测速批次 的截图中也没有出现(截图里只有 Shadowsocks 和 VLESS,见 Shadowsocks 还能用吗)。它目前在少数机场作为备用协议提供。如果你所在地区 TLS 类协议在封锁高峰期频繁异常,可以在购买前问客服是否提供 AnyTLS 或 Hysteria2 节点;封锁期的切换思路见 机场晚高峰很慢怎么办。

常见问题

AnyTLS 比 Reality 更安全吗?

两者针对的威胁不同:Reality 针对主动探测(有人连你的节点看是不是网站),AnyTLS 针对被动流量分析(统计包长序列)。理论上二者可以互补,但目前没有「AnyTLS + Reality」的标准组合。

AnyTLS 速度怎么样?

填充会带来少量额外流量(通常个位数百分比),多路复用减少握手,整体与 Trojan 相当。线路仍是决定因素,见 线路类型判断。

自签证书的 AnyTLS 节点安全吗?

加密强度不变,但「跳过证书验证」意味着客户端不校验服务器身份,理论上存在中间人风险,伪装效果也弱于正规证书。正规机场应该用有效证书。

AnyTLS 会被封吗?

没有协议是不可封的。AnyTLS 的目标是降低被动识别概率,节点 IP 被标记仍然会失效。

AnyTLS 节点和 Trojan 节点同一台服务器,速度会不一样吗?

不会有可感知差别。填充带来的额外流量在个位数百分比,线路相同则速度相同。差别只在被动识别场景下的稳定性。

新协议值得专门为它换机场吗?

不值得。选机场优先看线路、运营时长和 跑路风险,协议是第二位的。回 机场推荐排行榜 按预算挑。