跳到正文
备课日 10 月 12 日34 家机场7 家固定位,其余每月重排开讲说明全部讲次

协议课

Trojan 协议是怎么回事

更新于 读完约 8 分钟

划重点

Trojan 是一种代理协议:客户端和节点先完成一次标准的 TLS 握手,外表和打开一个 HTTPS 网站没有分别,握手之后才在加密通道里递上密码和目的地址。密码对不上的连接会被转交给一个真实网站,从外面探测,它就是一台普通的网页服务器。它和木马病毒没有关系,只是借了特洛伊木马的典故。

这一讲只请一位主角上场:Trojan。它是 2019 年前后出现的一种代理协议,思路很朴素:HTTPS 是网上随处可见的流量,那就让代理连接从里到外都长成 HTTPS 的样子。客户端连节点的 443 端口,用一张正规签发的证书完成 TLS 握手,过程和浏览器打开网站一模一样;握手完成后,它才在加密通道里交出密码和要去的地址。路上的设备看到的,只是有人在访问一个网站。

先说一个常见的误会。搜「trojan」会冒出大量木马病毒的结果,因为这个英文词本来就指特洛伊木马,也是木马程序的通称。Trojan 协议和病毒毫无关系,名字借的是「藏在木马肚子里混进城」的典故:代理流量藏在 HTTPS 里面。下面讲它为什么出现、怎么工作、机场为什么一直留着它、订阅里怎么认出来,以及你要不要专门挑它。

2019 年为什么会冒出这种思路

在 Trojan 之前,主流协议走的是另一条路:让流量「什么都不像」。Shadowsocks 把数据加密成一串看不出规律的字节,VMess 也有一套自己定义的加密格式。外人读不懂内容,这一点做到了。

麻烦出在「什么都不像」本身。网上正常的流量大多有清楚的模样,网页是 TLS,视频通话、在线游戏各有各的格式。一条从头到尾都看不出格式的连接,混在其中反倒扎眼。再加上主动探测:给可疑的服务器发几段试探数据,看它的反应像不像某种代理,自定义格式的服务端往往就在这一步露出马脚。

Trojan 反过来做:不躲开常见流量,而是混进随处可见的那一种。它不自定义任何加密格式,握手、证书、端口都照 TLS 的标准来,服务器前面还摆着一个真网站。这个「混进常见流量」的思路,后来被 VLESS 配 TLS、再到 Reality 一路接着往前推。

trojan协议怎么工作:从外面看,就是一次网页访问

把一次连接拆开,和访问普通网站并排放:

连接的阶段 打开一个 HTTPS 网站 连一个 Trojan 节点
建立连接 连网站服务器的 443 端口 连节点的 443 端口
TLS 握手 浏览器核对网站证书,协商出密钥 客户端核对节点证书,步骤完全一样
握手后的第一段数据 一个网页请求,比如「要首页」 密码算出的哈希值,加上目的地址
服务器怎么处理 把网页发回来 密码对得上就替你去连目标;对不上就当成普通访客,转给背后的网站
之后的数据 网页内容,全程加密 代理数据,全程加密

要紧的是「对不上」那一格。识别代理的一种办法是主动探测:怀疑某台服务器是节点,就装成客户端去连,看它怎么回应。Trojan 节点遇到不认识的来访者,会把连接原封不动交给一个真正的网站,多半就是同一台机器上跑着的网页服务。探测的一方拿回的是一个普通页面,挑不出破绽。

划重点:Trojan 不躲着常见流量走,反而混进最常见的 HTTPS 里;密码对不上的来访者,看到的只是一个普通网站。

Trojan 自己没有发明加密算法,加密全部交给 TLS。这让它的代码很短,也让它的安全性跟着 TLS 走:证书正规、配置得当,加密强度就和网银页面是一个水平。

为什么机场常年保留 Trojan 节点

协议换了一代又一代,Trojan 一直没被淘汰,原因大致有四个:

  1. 客户端几乎都认。 原版 Clash 在停更前就支持它,后来的 mihomo、sing-box、Xray 一系也都支持。家里那台好几年没更新客户端的旧电脑,读不出 VLESS 节点,Trojan 节点多半还能读。
  2. 放在中转线路上不用改。 机场的很多线路是国内入口经专线到境外落地,入口机通常只把端口原样转发,不碰里面的内容。Trojan 的 TLS 在你的设备和落地机两端完成,中间多几跳都不影响。
  3. 服务端维护简单。 证书的申请和续期都有成熟的工具,出了问题也好查,运维成本低。
  4. 能和别的协议互为备份。 有的机场在同一地区同时挂着 Trojan 和 VLESS 两种节点,一种协议遇到针对性的干扰,另一种还能顶上。

它的短板也要讲清楚:

  • 离不开域名和证书。 证书过期没续上,节点当天就连不上。
  • TLS 套 TLS。 你访问的网站本身多是 HTTPS,于是 Trojan 的加密通道里又套着一次 TLS 握手。里面的内容看不到,但那几个包的大小和先后有规律,近几年被认为是识别代理的线索之一。Xray 的 Vision 流控、2025 年出现的 AnyTLS,处理的都是这个问题。
  • 客户端的握手指纹。 不同程序发起 TLS 握手时细节各不相同,客户端若不模仿常见浏览器的指纹,也会显得突兀。如今多数客户端提供指纹选项,配置里常写成模仿 Chrome。

在订阅和客户端里,怎么认出 Trojan 节点

通用订阅解码后是一行行节点链接,Trojan 节点以 trojan:// 开头,形状大致如下(全是占位值):

trojan://你的密码@hk01.example.com:443?sni=hk01.example.com#香港01

@ 前面是密码,后面是节点地址和端口;sni 是握手时报给服务器的域名,要和证书上的一致;# 后面是节点名。Clash 系的配置文件里,每个节点是一小段,其中类型那一行写着 type: trojan。客户端的节点列表多半会在节点名旁标出协议,看到 Trojan 字样就是它。

留意两个参数。一是 sni,它和证书对不上,连接会直接失败。二是 allowInsecure=1 或 skip-cert-verify: true,意思是不检查证书真伪。正规的 Trojan 节点用不着它,开着它等于放弃了 TLS 防冒充的那一半保护。

因为一切押在证书上,Trojan 节点连不上时,原因也常常落在证书这一环:

  • 证书到期没续。 常见的那类自动签发证书,有效期通常只有几个月,靠程序自动续期,续期出了岔子,同一域名下的节点会一起失效。这是机场那头的事,你能做的是换个地区的节点,再告诉客服。
  • 设备时间不对。 证书写着有效期,客户端会拿设备当前的时间去比。电脑主板电池没电、手机手动改过日期,时间偏出好几天,握手时证书就被判为无效。
  • sni 填错。 自己手动改过节点、或者用了来路不明的转换工具,sni 被改成了别的域名,握手同样会失败。原样使用机场给的订阅,基本不会碰到这一条。

划重点:Trojan 节点连不上,先查三样:证书是否到期、设备时间准不准、sni 有没有被改过。

普通人要不要专门挑 Trojan

不用。协议是机场那一头的事,订阅里给什么,客户端照着连就是。影响体验的大头是线路:同样是 Trojan,走 IEPL 专线和挤在公网出口上,晚上九点的差距远比协议之间的差距大。挑订阅时,协议只需确认两点:你的客户端认不认,机场有没有写清楚。

订阅里要是同时给了 Trojan 和别的协议,Trojan 节点有两个现成的用处。一是照顾旧设备:家里那台客户端多年没更新的电脑,先用 Trojan 节点顶着。二是做对比:某个地区的 VLESS 节点晚上忽快忽慢,切到同地区的 Trojan 节点试一会儿,两边一样慢,问题多半在线路;只有一边慢,才轮到怀疑协议。

34 家里官网写明用 Trojan 协议的有哪几家,在按协议分组的目录里看,没写协议的几家也单独归成一组。

Trojan 和 VLESS 都属于「把代理藏进 TLS」的路线,两者后来怎么分开、Reality 又往前走了哪一步,VLESS 是什么那一讲接着讲。企业 VPN 为什么不走这条伪装的路,原理上的差别在 VPN 原理里。

想直接要一份能用的订阅,协议不必非是 Trojan。一翻云在介绍里写的协议是 VLESS,出境那一段用 IEPL 专线;起步的轻享版每月 ¥20、150GB,买一年是 ¥168。它 2026 年 4 月才开业,新注册的账号结账时填 1FLYYUN 可打 9 折,订阅链接付款后向客服要。微风的节点同样是 VLESS,乘风 Riding ¥27/月给 200GB,订阅登录后在面板里复制,没有优惠码。

文中提到的机场

1

一翻云示范课

IEPL 专线,月付 ¥20 给 150GB,网站测过速度

月付起
¥20/月每月 150GB
年付平摊到月
¥8.2年付小包

码 1FLYYUN · 9 折最大档 1.2TB课上测得微信可付

4

微风

附 50 个 Vless 节点的测速报告,乘风月付 ¥27

月付起
¥27/月每月 200GB
年付平摊到月
¥11.4清风 Breeze

无优惠码最大档 1200GB官方讲的

课后自查

示范课一翻云的节点走 Trojan 吗,多年没更新的旧客户端还能读吗?

不走 Trojan,一翻云写的协议是 VLESS。VLESS 要新一点的内核:Clash 选 Meta(mihomo)版,sing-box、v2rayN、Shadowrocket 也都认;停在原版 Clash 内核的旧客户端读不出来。

订阅里的 Trojan 节点带着 allowInsecure 或 skip-cert-verify,要紧吗?

这两个参数的意思都是「不检查服务器证书」。Trojan 靠证书确认对面真是节点,关掉检查以后,有人冒充节点也发现不了,加密只剩下防偷看的一半作用。正规配置用的是正式签发的证书,用不着这个参数;看到它常年开着,可以问一句机场为什么。

Trojan 节点为什么几乎都用 443 端口?

443 是 HTTPS 的默认端口,网上的网页访问绝大多数都连它。Trojan 想装成网页访问,端口自然也选它;换成冷门端口,外表就和普通网站对不上了。部分机场经中转时会用别的端口,那是入口机的安排,落地那一端多数仍是 443。