Trojan 如何工作,在 FlClash 中怎样选用
Trojan 是什么,为什么会让人联想到 HTTPS
Trojan 是由 trojan-gfw 维护的代理协议。它建立连接时,会先进行真实的 TLS 握手;握手完成后,才进入认证和代理请求阶段。
它与 HTTPS 的联系,在于连接开始时使用了 TLS。不能把这理解成后续内容都是网页请求:TLS 握手之后,Trojan 还有自己的认证内容和请求格式。
如果 TLS 握手没有成功,服务端会立即断开连接。这一阶段的处理方式与普通 HTTPS 服务相同。具体流程可查阅 Trojan 协议文档。
特点:认证和请求接在 TLS 握手之后
握手成功后,客户端会发送由密码计算出的 SHA224 摘要。摘要采用十六进制形式,长度为 56 字节,后面接 CRLF。随后发送的请求采用 SOCKS5 风格,包含命令、地址类型、目标地址和端口。首包也可以携带实际数据。
这里需要区分两件事:密码用于认证,目标地址和端口用于说明请求要访问哪里。请求格式带有 SOCKS5 风格,不代表可以直接把 Trojan 当作 SOCKS5 配置填写。
认证失败也有对应处理。密码不正确或请求无效时,连接会交给预先指定的端点,对外呈现该端点的响应。因此,不能把“密码错误后的表现”简单理解为固定返回某一种报错。
常见使用场景:区分连接请求和 UDP 请求
Trojan 定义了 CONNECT 与 UDP ASSOCIATE 两种命令。前者对应连接请求,后者用于 UDP 关联。请求中的地址可以采用 IPv4、域名或 IPv6。
UDP 数据也有专门的封装:包内带有地址、长度和 CRLF 头部。它不是只把一段 UDP 数据直接接在认证内容后面。
理解这些区别,有助于阅读配置和定位问题:协议定义了哪些请求,与客户端某个字段怎样设置,是两个层面。需要补充传输方式的基础知识,可以阅读 TCP 与 UDP 在代理中的区别。
在 FlClash 里怎么选用:核对 mihomo 字段
FlClash 通常使用 mihomo 内核。它的 README 没有逐项列明代理协议,Trojan 参数应对照 mihomo 的 Trojan 配置说明查看。
添加或编辑单个 Trojan 配置时,具体按钮名称和操作顺序,官方没有说明。准备配置时,可以先区分文档明确解释的字段与仅在示例中出现的字段。
| 字段 | 文档明确给出的内容 |
|---|---|
password | 必填,用于填写密码 |
network | 支持 ws、grpc;其他取值按 tcp 处理 |
ss-opts | 用于 trojan-go 的 Shadowsocks AEAD 加密设置,包含 enabled、method、password |
ss-opts.method | 支持 aes-128-gcm、aes-256-gcm、chacha20-ietf-poly1305 |
示例中的类型标识是 type: trojan。服务器、端口和密码分别对应 server、port、password,填写时需要对应各自用途。
ss-opts 的说明涉及 trojan-go,不能据此补出它与 trojan-gfw 的全部差异。客户端导入流程可接着查看 FlClash 配置导入教程。
注意事项:示例出现不等于已有参数解释
udp、sni 和 skip-cert-verify 出现在 mihomo 的 Trojan 示例中,但该页没有逐项说明它们的含义。仅凭字段名称,不宜推导具体行为或填写建议。
也要分清协议能力与客户端实现。Trojan 文档描述了 UDP 请求格式,但 FlClash 在不同平台上的协议支持差异,官方没有说明。
截至 2026-11-08,FlClash 最新发布是 v0.9.3,发布日期为 2026-11-04;本文参数说明对应截至 2026-11-08 查看的 mihomo 文档。后续发布与字段调整,以 FlClash 发布页和对应协议文档为准。
第三方整理,与项目方无关。