AnyTLS 项目在 GitHub 正式开源
面对 GFW 针对 REALITY 或 Trojan 借用的特定境外域名进行基于白名单或聚类排查的问题,AnyTLS 提出让代理流量泛化为多样化合规 TLS 流量的构想。
打破单一 SNI 聚类 · 动态 TLS 泛化外观 · 深度包长 Padding 混淆
由 AnyTLS 研发团队于 2024 年提出并开源[1],针对现代审查系统对 REALITY 或 Trojan 借用的特定外部域名进行白名单排查与流量聚类分析的痛点。 在客户端动态泛化 TLS 握手特征[5],引入智能多路会话复用(Session Multiplexing)状态机, 并对数据包实施可调整的随机混淆填充(Padding)[2],彻底破坏数据包长度分布规律。
AnyTLS 团队在 GitHub 开源 anytls-go 初版,针对单一 SNI 易被白名单识别的问题,提出多目标 TLS 外观泛化思路。
发布 v0.2.0 稳定规范,确立多路会话复用(Session Multiplexing)状态机与动态可调包长 Padding 算法,奠定核心架构。
Mihomo 与 sing-box 最新分支先后全面原生内置 AnyTLS 出站协议支持,打通跨平台客户端生态。
编写口径:AnyTLS 是 2024 年崭露头角的前沿新方案,所有演进时间线均有 GitHub 官方版本提交与内核合并记录为准。
随着深度学习技术在网络审查系统(GFW)的广泛应用,防火墙对翻墙流量的识别不再仅仅依靠简单的端口阻断或关键词过滤。 审查系统开始采用「流量聚类分析(Traffic Clustering)」:即使流量被 TLS 加密, 但如果成千上万个客户端都长期向某几个特定借用的 SNI 域名(如微软、苹果 CDN 或小众 VPS 域名)发送固定包长比例的数据, 这些节点就会被算法归类为异常代理并进行定点干扰。
AnyTLS 的核心出发点正是打破这种特征聚类:让每次代理握手与传输都呈现出动态、离散的自然特征。 它支持客户端在握手阶段动态泛化 TLS ClientHello 参数,并在数据传输阶段对每一个数据分块进行动态可调的 Padding 填充[2], 使得传输包长分布在统计学直方图上完全平滑,彻底消除因固定协议头导致的侧信道指纹。
AnyTLS + TLS 属于抗高阶流量分析与机器学习审查的前沿新秀。 它已经被主流内核(sing-box 与 Mihomo)原生收录,非常适合追求技术前沿、希望摆脱单一固定伪装域名依赖的进阶玩家。
大多数代理工具的握手指令头具有固定的字节长度(例如 56 字节或 128 字节); 现代机器学习模型专门针对这种“特征包长”进行训练。 AnyTLS 的动态 Padding 彻底打破了这一固定长度,让每个包的大小都呈现随机分布!
所有节点均依据 GitHub 官方 Releases 发行注记与上游代码提交核验:
面对 GFW 针对 REALITY 或 Trojan 借用的特定境外域名进行基于白名单或聚类排查的问题,AnyTLS 提出让代理流量泛化为多样化合规 TLS 流量的构想。
设计智能填充状态机,针对握手后小包与特定 HTTP 标头进行非对称随机混淆填充,破坏基于数据包长度时序的机器学习指纹分析。
官方发布 v0.2.0 核心实现,确定统一的会话复用(Session Mux)协议格式与 UDP over TCP 隧道标准,奠定多客户端互通基石。
推出 `anytls://` 标准订阅链接格式,规范多端口监听参数与证书链校验逻辑。
SagerNet 社区在 sing-box 预发布分支中测试 AnyTLS 入站与出站驱动,验证其在移动弱网下的重连表现。
MetaCubeX 团队正式将 AnyTLS 作为原生出站类型合并,支持通过标准 YAML 配置文件定义 AnyTLS 节点,生态大幅扩张。
Shadowrocket、Loon 等 iOS 知名客户端先后跟进,用户已能直接扫描二维码或导入订阅畅享 AnyTLS 节点。
重写 Go 协程间的零拷贝传输通道,提升单节点面对数万高频并发短连接时的抗压吞吐能力。
在多轮大规模流量异常审查演习中,AnyTLS 凭借多变的包长分布与会话复用表现出优异的存活率。
与 REALITY、NaïveProxy 共同构成现代抵御机器学习流量识别与指纹审查的技术第一梯队。
AnyTLS 经过 2024 年的快速迭代,已经获得两大现代通用内核(Mihomo 与 sing-box)的原生内置支持:
| 软件 / 内核 | 类型 | 支持平台 | 支持级别 | 起始版本 | 发布日期 | 特性支持与备注 |
|---|---|---|---|---|---|---|
| anytls-go 官方参考实现 | 核心内核 | Linux / macOS / Windows / FreeBSD | 官方参考实现 | v0.2.0 | 2024.03.20 | 官方使用 Go 语言编写的标准服务端与客户端二进制,提供最纯粹的动态填充策略与会话调度。 |
| Mihomo (Clash.Meta) | 核心内核 | 全平台 (Linux / Android / macOS / Windows) | 完整原生支持 | v1.18.9 | 2024.10.16 | Meta 核心原生合入 AnyTLS 节点配置支持,支持与分流规则链、自定义证书链及测速组协同工作。 |
| sing-box | 核心内核 | 全平台 (Linux / Android / iOS / macOS / Windows) | 完整原生支持 | v1.9.5 | 2024.08.28 | SagerNet 团队实验性接入 AnyTLS 入站与出站协议栈,提供内存轻量化与连接池复用。 |
| Shadowrocket | 客户端 | iOS / iPadOS | 出站客户端支持 | v2.2.50 | 2024.11.10 | 支持直接导入 AnyTLS 节点链接,为 iOS 设备提供低能耗的前沿 TLS 代理访问。 |
| Loon | 客户端 | iOS / macOS | 出站客户端支持 | v3.2.0 | 2024.12.05 | 支持通过图形界面直观配置 AnyTLS 节点、填充策略与会话复用开关。 |
| v2rayN | 客户端 | Windows | 出站客户端支持 | v6.50 | 2024.11.15 | 借助 Mihomo / sing-box 核心为 Windows 桌面用户提供便捷的 AnyTLS 订阅导入与自动配置。 |
最推荐使用场景:
不适用或受限场景:
1. 证书与域名要求:与 Trojan 类似,AnyTLS 服务端需要配置合法的 TLS 证书(建议通过 ACME 获取公开权威证书),客户端默认进行完整性校验。
2. 填充策略合理性:默认的 Padding 填充策略是基于通用统计模型设计的; 用户无需过度调高填充上限,过大的填充只会徒增带宽浪费而不会带来线性的安全性收益。
百科词条中所有架构数据、算法定义及发布时间均以官方公开发行物为基准:
包含 AnyTLS 官方 Go 语言参考实现源码、版本发布说明与协议参数规范。
https://github.com/anytls/anytls-go详细阐述 AnyTLS 为何要采用动态填充、会话复用以及如何防范流量特征聚类。
https://github.com/anytls/anytls-go/blob/main/docs/faq.mdMeta 内核对 AnyTLS 节点参数配置(如 padding 范围、会话复用等)的说明。
https://wiki.metacubex.oneAnyTLS 外层传输安全所依托的底层标准传输层安全规范。
https://datatracker.ietf.org/doc/html/rfc8446