Trojan 服务器由密码和 TLS 设置描述,还可以搭配用来承载连接的传输方式,如 WebSocket 或 gRPC。Trojan 始终运行在 TLS(或 REALITY)之中,所以在旁观者看来,这条连接就像一次普通的 HTTPS 访问。只要 Potatso 支持服务器的传输方式和 TLS 设置,就能连接到它。你可以对照下面的表格,检查服务商提供的服务器设置,或其 trojan:// 链接中的设置。
你可以手动添加 Trojan 服务器、通过 trojan:// 链接添加,或通过导入添加:
- Clash 或 Mihomo 订阅,
- Xray 或 V2Ray 配置,
- Surge 配置。
Potatso 暂不从 sing-box 配置中导入 Trojan 服务器。请改用服务器的 trojan:// 链接。
传输方式
| 传输方式 | 链接 type |
支持情况 | 测试环境 |
|---|---|---|---|
| 仅 TLS(无传输方式) | tcp,或不填 |
✅ | Xray、sing-box、trojan-go |
| WebSocket | ws |
✅ 支持或不支持 early data 均可 | Xray、sing-box、trojan-go |
| gRPC | grpc |
✅ | Xray、sing-box |
| HTTP/2 | http 或 h2 |
✅ | sing-box |
| HTTP Upgrade | httpupgrade |
✅ | Xray、sing-box |
| XHTTP | xhttp |
❌ | |
| mKCP、QUIC | kcp, quic |
❌ |
所有传输方式都支持 UDP。如果服务器使用的传输方式 Potatso 不支持,Potatso 不会导入它。
Xray 已不再提供 HTTP/2:原本使用它的 Xray 服务器现在改用 XHTTP,而 Potatso 暂不支持 XHTTP。
TLS
| 设置 | Clash 键 | 链接参数 | 支持情况 |
|---|---|---|---|
| 服务器名称(SNI) | sni |
sni, peer |
✅ 未设置时,Potatso 使用服务器地址。 |
| ALPN | alpn |
alpn |
✅ 未设置时,Potatso 发送 h2, http/1.1;WebSocket 和 HTTP Upgrade 发送 http/1.1;gRPC 和 HTTP/2 发送 h2。 |
| 跳过证书验证 | skip-cert-verify |
allowInsecure, insecure |
✅ |
| 证书固定(SHA-256) | fingerprint |
✅ | |
| 浏览器指纹 | client-fingerprint |
fp |
✅ chrome、firefox、safari、ios、android、edge 和 random。其他名称使用默认握手连接。 |
| REALITY | reality-opts |
security=reality, pbk, sid |
✅ 无传输方式或搭配 gRPC |
| Encrypted Client Hello(ECH) | ech-opts |
ech |
✅ 需要链接或订阅中带有 ECH 配置 |
| 自定义 CA 证书 | ❌ | ||
| TLS 客户端证书 | certificate, private-key |
❌ |
关闭证书验证,会让你与服务器之间的任何人都能读取你的流量。如果服务器使用自签名证书,请改为固定该证书:把证书的 SHA-256 设为证书固定值。
浏览器指纹会让连接的 TLS 握手看起来像该浏览器的握手,但不会改变服务器必须支持的内容。
REALITY
REALITY 服务器借用另一个网站的 TLS 证书,所以不需要自己的证书。请按服务商提供的内容设置服务器的公钥和短 ID,并把服务器名称设为服务器所借用的网站。REALITY 需要浏览器指纹:当你的链接或设置中没有指纹时,Potatso 使用 chrome。
REALITY 适用于无传输方式和 gRPC。如果 REALITY 服务器使用其他传输方式,Potatso 不会导入它。
多路复用
Potatso 可以借助 sing-box 的多路复用(smux、yamux 或 h2mux),让多条连接共用一条 Trojan 连接;在 Clash 订阅中用 smux 设置。服务器必须开启多路复用。TCP 和 UDP 均可使用。
trojan-go 自己的多路复用(trojan-go 服务器中的 mux)是另一种协议,Potatso 不支持。不使用它时,trojan-go 服务器仍会接受 Potatso 的连接。
UDP
Trojan 通过与 TCP 相同的 TLS 连接承载 UDP。与 Clash 一样,UDP 默认关闭。如果你的服务器转发 UDP,请在服务器设置中开启 UDP 转发:Xray、sing-box 和 trojan-go 都支持。Clash 订阅用 udp: true 开启它。
功能支持
| 功能 | 支持情况 |
|---|---|
Trojan 协议:密码哈希、CONNECT |
✅ |
Trojan UDP ASSOCIATE |
✅ |
不带 TLS 的 Trojan(security=none) |
❌ |
| 一台服务器多个用户 | ✅ 各自使用自己的密码 |
| WebSocket、gRPC、HTTP/2 和 HTTP Upgrade 传输 | ✅ 见传输方式 |
| XHTTP、mKCP 和 QUIC 传输 | ❌ |
| REALITY | ✅ 无传输方式或搭配 gRPC |
| ECH | ✅ |
| sing-box 多路复用(smux、yamux、h2mux) | ✅ |
| trojan-go 多路复用 | ❌ |
trojan-go 的 Shadowsocks 加密(ss-opts、encryption=ss;…) |
❌ |
| Trojan 外层的 ShadowTLS、Restls 或 JLS | ❌ |
trojan:// 和 trojan-go:// 链接 |
✅ |
每一项受支持的功能,都至少用一台真实的 Trojan 服务器测试过:Xray、sing-box 或 trojan-go。
密码错误时,Trojan 服务器会像普通网站一样应答(即回落)。此时 Potatso 无法连接,也不会提示密码错误:如果 Trojan 服务器始终连不上,请先检查密码。
如果服务器使用 trojan-go 的 Shadowsocks 加密,或在 Trojan 外层使用 ShadowTLS、Restls 或 JLS,Potatso 不会导入它,因为不带这些内容连接,服务器不会应答。
trojan-go 的某些功能是它自带客户端程序的设置,Potatso 用自己的方式完成同样的工作:
- 路由:请使用配置中的规则。
- 本地 SOCKS5 和 HTTP 服务器,以及转发:Potatso 自行捕获设备的流量。
trojan:// 链接
trojan:// 链接用一行文字包含完整的服务器信息:
trojan://password@host:port?parameters#name| 部分 | 说明 |
|---|---|
password |
密码,经百分号编码。@ 之前的全部内容都是密码,包括其中的 :。 |
host |
服务器地址。IPv6 地址要放在方括号里,如 [2001:db8::1]。 |
port |
服务器端口。缺省时,Potatso 使用 443。 |
name |
可选。服务器在 Potatso 中的名称。 |
参数沿用 Xray 和 v2rayN 使用的格式:
| 参数 | 说明 |
|---|---|
security |
tls(默认)或 reality。 |
type |
传输方式:tcp、ws、grpc、http(HTTP/2)或 httpupgrade。 |
sni, peer |
TLS 服务器名称。 |
alpn |
ALPN 列表,用逗号分隔并经百分号编码。 |
fp |
浏览器指纹。 |
allowInsecure |
1 表示关闭证书验证。 |
host |
WebSocket、HTTP/2 和 HTTP Upgrade 的 HTTP Host。 |
path |
WebSocket、HTTP/2 和 HTTP Upgrade 的路径。像 /ws?ed=2048 这样的 WebSocket 路径会开启 early data。 |
serviceName |
gRPC 服务名称。 |
pbk, sid |
REALITY 的公钥和短 ID。 |
ech |
ECH 配置,经 Base64 编码和百分号编码。 |
Potatso 也能导入 trojan-go:// 链接,只要其中是 type=original(无传输方式)或 type=ws。带有 encryption 参数的链接不会被导入,因为它需要 trojan-go 的 Shadowsocks 加密。
分享 Trojan 服务器时,Potatso 提供带有相同参数的 trojan:// 链接。
示例
每个示例都是要导入的链接。密码是 secret。
基本服务器:
trojan://secret@trojan.example.com:443?sni=trojan.example.com#Basic通过 cdn.example.com 的 WebSocket:
trojan://secret@trojan.example.com:443?security=tls&type=ws&host=cdn.example.com&path=%2Fws#WebSocket服务名称为 TrojanGun 的 gRPC:
trojan://secret@trojan.example.com:443?security=tls&type=grpc&serviceName=TrojanGun#gRPCHTTP/2:
trojan://secret@trojan.example.com:443?security=tls&type=http&host=cdn.example.com&path=%2Fh2#HTTP2HTTP Upgrade:
trojan://secret@trojan.example.com:443?security=tls&type=httpupgrade&host=cdn.example.com&path=%2Fup#Upgrade借用 www.example.com 的 REALITY:
trojan://secret@trojan.example.com:443?security=reality&sni=www.example.com&pbk=Z84J2IelR9ch3k8VtlVhhs5ycBUlXA7wHBWcBrjqnAw&sid=0123abcd&fp=chrome#REALITY