Trojan是什么协议?原理、会不会被识别,和VLESS哪个好

约 5 分钟读完 5 次阅读

Trojan 这个词本意是「特洛伊木马」,在代理软件里指的是一种 2019 年前后出现的代理协议:它把自己伪装成一个普通的 HTTPS 网站。服务器在 443 端口跑真正的 TLS 服务,用的是你自己域名的正规证书;密码对的连接当作代理转发,密码不对的连接交给一个真实的网站处理,所以探测者连过去,看到的就是一个正常网站。

这个思路简单有效,它也因此流行了好几年。但它也有几个绕不开的弱点,后来的 VLESS + Reality 正是针对这些弱点改进的。这篇讲清它的原理、和 VLESS、VMess、SSR 的区别,以及「为什么说它会被识别」。

Trojan 的工作原理

客户端和服务器之间先完成一次标准的 TLS 握手,从外面看和你打开一个 HTTPS 网站完全一样。握手完成后,客户端在加密通道里发出:

SHA224(密码) 的十六进制 | 换行 | 请求(连接哪个地址、TCP 还是 UDP)| 换行 | 数据

服务器检查第一段:

情况服务器怎么做
格式和密码都对当作代理请求,帮你连目标网站,支持 TCP 和 UDP
格式不对或密码不对原样转给预设的网站(默认是本机 80 端口的网页服务)

第二种情况是它抗主动探测的关键。探测者拿不到密码,连过去得到的永远是那个网站的正常响应,看不出这台机器还在做代理。

Trojan 和 VLESS、VMess、SSR 的区别

对比项TrojanVLESS + RealityVMessSSR
伪装方式自己的域名 + 正规证书,伪装成 HTTPS 网站借用别人真实网站的证书,不用自己的域名本身不伪装,常配合 WebSocket + TLS混淆参数,伪装能力弱
需要自己的域名和证书需要不需要配 TLS 时需要不需要
加密由谁负责TLSTLS(Reality)协议自带加密协议自带加密
抗主动探测有,转给真实网站有,转给被借用的真实网站看配置弱
对系统时间的要求无无客户端和服务器时间差要在 90 秒内无
现状原版项目多年没发新版,协议由 Xray、sing-box 等内核继续支持目前的主流方案仍可用,逐渐被 VLESS 取代早已停更,不推荐

VLESS 和 VMess 的详细区别见 VLESS是什么。

为什么说 Trojan 会被识别

搜索「trojan 协议被识别」「trojan 不稳定」的人不少。原因主要有三个,都和协议本身的加密强度无关。

一、TLS 套 TLS 的特征。 你访问的网站本身大多是 HTTPS,浏览器要和网站做一次 TLS 握手;这次握手又被装进代理外层的 TLS 里。外层虽然加密了,但里面那次握手的包大小和往返节奏有固定规律,从外面能观察到。2024 年 USENIX Security 会议上就有论文专门研究用这种「套娃」特征识别代理流量。

二、客户端的 TLS 指纹。 不同程序发起 TLS 握手时,支持的算法列表和顺序各不相同,形成「指纹」。代理客户端的指纹如果和常见浏览器对不上,就是一个可疑点。现在的内核大多能模仿浏览器的指纹,但老客户端不一定。

三、域名和 IP 太集中。 这个协议需要自己的域名,而一个没什么名气的小域名、每天跑大量流量、只解析到一个境外 IP,这个组合本身就显眼。

所以,同样一个这类节点,有人用很稳,有人隔几天就出问题,除了线路质量,也和这些特征有关。IP 被封之后怎么判断和处理,见 IP被墙怎么办。

原版项目还在更新吗

项目最后一次正式发版
trojan(原版,C++)v1.16.0,2020 年 6 月
trojan-go(Go 实现)v0.10.6,2021 年 9 月

两个项目的仓库都还在,但已经多年没发新版本。现在继续支持这个协议、并且在更新的,是 Xray、sing-box、mihomo(Clash Meta)这些通用内核。所以要用这个协议,选这些内核的客户端,别用早期的独立客户端。

Trojan 和 VLESS 哪个好

VLESS + Reality 是在它的思路上往前走了一步:

  • 不需要自己的域名和证书:借用一个真实大网站的证书完成握手,探测者看到的是那个大网站,第三个弱点(小域名太显眼)也就没有了。原理见 Reality协议是什么
  • Vision 流控处理「套娃」特征:VLESS 常配合的 xtls-rprx-vision 流控,会处理内层 TLS 握手的包长特征,针对的正是上面说的第一个弱点

它的优势是简单、成熟、几乎所有第三方客户端都支持。如果你已经有一个用着稳定的节点,没必要为了换协议而换;新选的话,VLESS + Reality 更稳妥。

我们用的是哪种

我们的线路用的是 VLESS + Reality,配 xtls-rprx-vision 流控,备用协议是 Hysteria2,不提供这个协议。

它的客户端支持比我们的协议更广。 原版 Clash 内核(包括已经停更的 Clash for Windows)支持它,但不支持 VLESS,而我们的订阅只导出 v2rayN、NekoBox、Shadowrocket 三种格式,没有 Clash 格式。如果你手上只有老版本 Clash,我们的线路导不进去,要换成 mihomo 内核的客户端,或者用我们自己的客户端。订阅格式怎么转,见 订阅转换是什么。

常见问题

Trojan 是什么协议?

一种伪装成 HTTPS 网站的代理协议。服务器用自己域名的正规证书跑 TLS,密码对的连接当代理转发,密码不对的转给一个真实网站,让探测者看到的只是普通网站。

Trojan 协议会被识别吗?

会有被识别的可能。原因主要是 TLS 套 TLS 的包长特征、客户端的 TLS 指纹,以及自有小域名流量过于集中,跟加密强度无关。

Trojan 和 VLESS 哪个好?

新选的话 VLESS + Reality 更好:不需要自己的域名和证书,还能处理 TLS 套 TLS 的特征。它胜在简单成熟、客户端支持广。

Trojan 和 VMess 哪个好?

前者靠 TLS 加密和伪装,对系统时间没有要求;VMess 自带加密,客户端和服务器时间差超过 90 秒就连不上,现在正逐渐被 VLESS 取代。

Trojan 支持 UDP 吗?

支持。协议里有专门的 UDP 转发命令,游戏、语音通话这类 UDP 流量可以走这个协议,前提是客户端和服务端都开启了这项功能。

在线客服
正在加载...