线路知识 知识

Trojan 协议基础介绍

介绍 Trojan 协议的设计目标与工作原理:借助真实证书完成标准 TLS 握手、验证失败即回落到普通网站,并说明它与 Shadowsocks、VLESS 等协议的差异,以及协议名称与木马病毒无关的事实。

发布于 最后核验 约 3 分钟读完

Trojan 是基于 TLS 的代理协议,设计目标只有一个:让代理流量在外观上与普通 HTTPS 访问难以区分。它使用真实证书完成标准 TLS 握手,未通过密码验证的访问者只会看到一个普通网站。

什么是 Trojan

Trojan 于 2019 年前后由开源项目 Trojan-GFW 提出,后来出现了 trojan-go 等扩展实现,如今主流客户端内核普遍支持。它的出发点是对“伪装”路线的彻底执行:与其构造一种不易识别的加密流量,不如直接成为互联网上最常见的流量——HTTPS。因此 Trojan 服务器同时就是一台真实的 TLS 服务器,拥有域名和有效证书,从外部看与千万个普通网站没有差别。

名称取自特洛伊木马的典故,指“藏在寻常事物中”的设计比喻,与恶意软件语境里的“木马病毒”没有任何关系。

工作原理

一次 Trojan 连接的流程可以拆成四步:

  1. 客户端对服务器域名发起标准 TLS 握手,服务器出示与域名匹配的有效证书,建立加密通道。这一步与访问任何 HTTPS 网站完全相同。
  2. 通道建立后,客户端发送的第一段数据包含预设密码的哈希值,用于身份验证。
  3. 验证通过,服务器进入代理模式,按客户端的请求转发流量;验证失败(例如被扫描探测),服务器把连接交给本机运行的真实网站,访问者看到的是一个正常网页。
  4. 此后所有代理数据都在这条 TLS 通道内传输,外部只能观察到一条持续的 HTTPS 连接。

第三步的“回落”机制是 Trojan 的关键设计:主动探测者无法通过连接行为区分这台服务器是代理还是普通网站,因为对未授权者而言它就是普通网站。

与相邻协议的对比

维度 Trojan Shadowsocks VLESS + TLS
伪装思路 成为真实 HTTPS 站点 无特征加密流 真实 TLS,可配 REALITY 借用他站特征
需要域名证书 是(REALITY 模式例外)
身份验证 密码哈希 预共享密钥 UUID
回落能力
协议开销 TLS 握手与封装 极低 TLS 之上开销很低

与走“无特征”路线的 Shadowsocks 相比,Trojan 用部署成本(域名、证书、真实站点)换取了更从容的公网表现;与同为 TLS 系的 VLESS 相比,两者思路接近,差异主要在验证方式和生态搭配上。

实际使用中的意义

对用户而言,Trojan 节点有几个可感知的特点。公网直连线路上,它的 HTTPS 外观带来更稳定的连接表现,因此常被服务商用于直连节点。协议在 TLS 之上不再重复加密,开销可控,日常速度与其他主流协议没有量级差异。同时,由于整个安全性建立在 TLS 之上,客户端的证书验证不能随意关闭——遇到证书报错时应排查原因而非跳过验证,系统时间不准是常见诱因之一,处理方式可参考客户端证书错误的处理方法

部署侧的要求(域名、证书、伪装站点)由服务商承担,用户无需操心,但这解释了为什么 Trojan 节点在一些低价套餐中较少出现——它的单节点成本比免证书协议略高。

另一个实际细节是节点地址的形态:Trojan 节点通常以域名而非 IP 的形式出现在订阅里,因为 TLS 验证需要域名匹配。这带来一个附带影响——本地 DNS 解析异常时,Trojan 节点可能集体无法连接,而 IP 形式的节点不受影响,排查时可以据此缩小范围。

常见误解

  • “Trojan 是病毒,客户端报毒说明有问题。” 协议与恶意软件同名不同物,个别安全软件对含该字样的文件误报属于名称匹配,与协议安全性无关。
  • “Trojan 完全无法被识别。” 伪装大幅提高了识别成本,但流量时序、连接行为等统计特征仍可能被高级分析捕捉,任何协议都不存在绝对不可识别。针对这类深层特征的后续演进,可参考 AnyTLS 基础介绍
  • “Trojan 一定比 Shadowsocks 快。” 协议差异对速度的影响远小于线路差异;专线场景下更轻量的 SS 反而常是更优选择。

下一步

如果你的订阅里有 Trojan 节点,留意两件事:保持系统时间准确(TLS 验证依赖时间),以及不要在客户端里开启跳过证书验证的选项。想更完整地理解各协议的定位差异,可以从本文的对比表出发,把 SS、Trojan、VLESS 三条路线的取舍逻辑串起来看。

常见问题

Trojan 协议和木马病毒有关系吗?

没有任何关系。协议取名 Trojan 是借用特洛伊木马的典故,寓意把代理流量藏在看似普通的 HTTPS 流量之中,属于设计思路上的比喻。它是公开的开源网络协议,不是恶意软件。杀毒软件对含 trojan 字样文件名的误报,与协议本身的安全性无关。

Trojan 为什么需要域名和证书?

因为它的伪装方式是成为一个真实的 HTTPS 站点。标准 TLS 握手需要服务器出示与域名匹配的有效证书,浏览器和中间设备看到的就是一次正常的证书验证过程。没有域名和证书,握手环节就会露出破绽。这也意味着 Trojan 节点的部署成本略高于无需证书的协议。

Trojan 节点提示证书错误还能用吗?

不建议忽略。证书错误说明 TLS 验证没有通过,可能是服务器证书过期或配置变更,也可能存在中间人风险。跳过验证等于放弃了 TLS 的安全保障。正确做法是先核对本机系统时间是否准确,再联系服务商确认证书状态,而不是在客户端里勾选跳过证书验证。

Trojan 和 Shadowsocks 应该选哪个?

取决于线路场景。公网直连线路上,Trojan 的 HTTPS 外观通常更稳;专线或中转线路上,Shadowsocks 更轻量、开销更低。许多服务商会按线路类型搭配协议,用户直接使用订阅默认配置即可,无需刻意改动。两类节点都有时,可在高峰期各自测试后择优。