---
title: "Trojan"
description: "iPhone 版 Potatso 支持的 Trojan 传输方式、TLS 选项、链接和功能，包括 WebSocket、gRPC、REALITY 和 ECH。"
---

> Documentation Index
> Fetch the complete documentation index at: https://potatso.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Trojan

Trojan 服务器由**密码**和 **TLS 设置**描述，还可以搭配用来承载连接的**传输**方式，如 WebSocket 或 gRPC。Trojan 始终运行在 TLS（或 REALITY）之中，所以在旁观者看来，这条连接就像一次普通的 HTTPS 访问。只要 Potatso 支持服务器的传输方式和 TLS 设置，就能连接到它。你可以对照下面的表格，检查服务商提供的服务器设置，或其 `trojan://` 链接中的设置。

你可以手动添加 Trojan 服务器、通过 [`trojan://` 链接](#links)添加，或通过导入添加：

- Clash 或 Mihomo 订阅，
- Xray 或 V2Ray 配置，
- Surge 配置。

Potatso 暂不从 sing-box 配置中导入 Trojan 服务器。请改用服务器的 `trojan://` 链接。

## 传输方式 {#transports}

| 传输方式 | 链接 `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 {#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) | `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}

REALITY 服务器借用另一个网站的 TLS 证书，所以不需要自己的证书。请按服务商提供的内容设置服务器的**公钥**和**短 ID**，并把服务器名称设为服务器所借用的网站。REALITY 需要浏览器指纹：当你的链接或设置中没有指纹时，Potatso 使用 `chrome`。

REALITY 适用于无传输方式和 gRPC。如果 REALITY 服务器使用其他传输方式，Potatso 不会导入它。

## 多路复用 {#mux}

Potatso 可以借助 sing-box 的多路复用（`smux`、`yamux` 或 `h2mux`），让多条连接共用一条 Trojan 连接；在 Clash 订阅中用 `smux` 设置。服务器必须开启多路复用。TCP 和 UDP 均可使用。

trojan-go 自己的多路复用（trojan-go 服务器中的 `mux`）是另一种协议，Potatso 不支持。不使用它时，trojan-go 服务器仍会接受 Potatso 的连接。

## UDP {#udp}

Trojan 通过与 TCP 相同的 TLS 连接承载 UDP。与 Clash 一样，UDP 默认关闭。如果你的服务器转发 UDP，请在服务器设置中开启 UDP 转发：Xray、sing-box 和 trojan-go 都支持。Clash 订阅用 `udp: true` 开启它。

## 功能支持 {#features}

| 功能 | 支持情况 |
| --- | --- |
| [Trojan 协议](https://trojan-gfw.github.io/trojan/protocol)：密码哈希、`CONNECT` | ✅ |
| Trojan `UDP ASSOCIATE` | ✅ |
| 不带 TLS 的 Trojan（`security=none`） | ❌ |
| 一台服务器多个用户 | ✅ 各自使用自己的密码 |
| WebSocket、gRPC、HTTP/2 和 HTTP Upgrade 传输 | ✅ 见[传输方式](#transports) |
| XHTTP、mKCP 和 QUIC 传输 | ❌ |
| [REALITY](#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](https://xtls.github.io/)、[sing-box](https://sing-box.sagernet.org/) 或 [trojan-go](https://p4gefau1t.github.io/trojan-go/)。

密码错误时，Trojan 服务器会像普通网站一样应答（即回落）。此时 Potatso 无法连接，也不会提示密码错误：如果 Trojan 服务器始终连不上，请先检查密码。

如果服务器使用 trojan-go 的 Shadowsocks 加密，或在 Trojan 外层使用 ShadowTLS、Restls 或 JLS，Potatso 不会导入它，因为不带这些内容连接，服务器不会应答。

trojan-go 的某些功能是它自带客户端程序的设置，Potatso 用自己的方式完成同样的工作：

- 路由：请使用配置中的规则。
- 本地 SOCKS5 和 HTTP 服务器，以及转发：Potatso 自行捕获设备的流量。

## `trojan://` 链接 {#links}

`trojan://` 链接用一行文字包含完整的服务器信息：

```text
trojan://password@host:port?parameters#name
```

| 部分 | 说明 |
| --- | --- |
| `password` | 密码，经百分号编码。`@` 之前的全部内容都是密码，包括其中的 `:`。 |
| `host` | 服务器地址。IPv6 地址要放在方括号里，如 `[2001:db8::1]`。 |
| `port` | 服务器端口。缺省时，Potatso 使用 443。 |
| `name` | 可选。服务器在 Potatso 中的名称。 |

参数沿用 Xray 和 v2rayN 使用的格式：

| 参数 | 说明 |
| --- | --- |
| `security` | `tls`（默认）或 `reality`。 |
| `type` | [传输方式](#transports)：`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://` 链接。

### 示例 {#link-examples}

每个示例都是要导入的链接。密码是 `secret`。

基本服务器：

```text
trojan://secret@trojan.example.com:443?sni=trojan.example.com#Basic
```

通过 `cdn.example.com` 的 WebSocket：

```text
trojan://secret@trojan.example.com:443?security=tls&type=ws&host=cdn.example.com&path=%2Fws#WebSocket
```

服务名称为 `TrojanGun` 的 gRPC：

```text
trojan://secret@trojan.example.com:443?security=tls&type=grpc&serviceName=TrojanGun#gRPC
```

HTTP/2：

```text
trojan://secret@trojan.example.com:443?security=tls&type=http&host=cdn.example.com&path=%2Fh2#HTTP2
```

HTTP Upgrade：

```text
trojan://secret@trojan.example.com:443?security=tls&type=httpupgrade&host=cdn.example.com&path=%2Fup#Upgrade
```

借用 `www.example.com` 的 REALITY：

```text
trojan://secret@trojan.example.com:443?security=reality&sni=www.example.com&pbk=Z84J2IelR9ch3k8VtlVhhs5ycBUlXA7wHBWcBrjqnAw&sid=0123abcd&fp=chrome#REALITY
```

Source: https://potatso.com/docs/zh/protocols/trojan/index.mdx
