---
title: "AnyTLS"
description: "iPhone 版 Potatso 支持的 AnyTLS TLS 设置、链接和功能，包括 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.

# AnyTLS

AnyTLS 服务器由**密码**和 **TLS 设置**描述。AnyTLS 运行在 TLS 之中并对流量做填充，所以连接看起来就像一次普通的 HTTPS 访问，不会露出 TLS 内部代理的常见特征。只要 Potatso 支持服务器的 TLS 设置，就能连接到它。你可以对照下面的表格，检查服务商提供的服务器设置，或其 `anytls://` 链接中的设置。

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

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

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

## TLS {#tls}

| 设置 | Clash 键 | 链接参数 | 支持情况 |
| --- | --- | --- | --- |
| 服务器名称（SNI） | `sni` | `sni` | ✅ 未设置时，Potatso 使用服务器地址。 |
| ALPN | `alpn` | `alpn` | ✅ 未设置时，Potatso 与 Clash 一样不发送 ALPN。 |
| 跳过证书验证 | `skip-cert-verify` | `insecure` | ✅ |
| 证书固定（SHA-256） | `fingerprint` | `hpkp` | ✅ |
| 浏览器指纹 | `client-fingerprint` | `fp` | ✅ `chrome`、`firefox`、`safari`、`ios`、`android`、`edge` 和 `random`。其他名称使用默认握手连接。 |
| [REALITY](#reality) | `reality-opts` | | ✅ |
| Encrypted Client Hello（ECH） | `ech-opts` | | ✅ 需要订阅中带有 ECH 配置，或能从 DNS 中查到 |
| 自定义 CA 证书 | | | ❌ |
| TLS 客户端证书 | `certificate`, `private-key` | | ❌ |

关闭证书验证，会让你与服务器之间的任何人都能读取你的流量。如果服务器使用自签名证书，请改为固定该证书：把证书的 SHA-256 设为证书固定值。

浏览器指纹会让连接的 TLS 握手看起来像该浏览器的握手，但不会改变服务器必须支持的内容。

如果服务器需要 TLS 客户端证书，Potatso 不会导入它，因为服务器会拒绝连接。

### REALITY {#reality}

REALITY 服务器借用另一个网站的 TLS 证书，所以不需要自己的证书。sing-box 服务器可以让 AnyTLS 搭配 REALITY 使用。请按服务商提供的内容设置服务器的 **Reality 公钥**和 **Reality Short ID**，并把服务器名称设为服务器所借用的网站。REALITY 需要浏览器指纹，如 `chrome`。

## 连接 {#connections}

AnyTLS 会复用它的 TLS 连接：与某个网站的连接结束后，下一条连接会使用同一条 TLS 连接，而不是新开一条。每条 TLS 连接同一时间只承载一条连接，所以同时有多条连接时会打开多条 TLS 连接，它们之后都会被复用。

| 设置 | Clash 键 | 支持情况 |
| --- | --- | --- |
| 检查空闲连接的频率 | `idle-session-check-interval` | ✅ 单位为秒，默认 30 |
| 空闲连接保持打开的时长 | `idle-session-timeout` | ✅ 单位为秒，默认 60 |
| 保持打开的空闲连接数量 | `min-idle-session` | ✅ 默认 1 |

小于或等于 5 秒的值按 30 秒处理，与 Clash 一致。这些设置来自 Clash 订阅。对于手动添加或通过链接添加的服务器，Potatso 使用默认值。

Surge 配置中的 `reuse=false` 不会生效：与 AnyTLS 规范一样，Potatso 始终复用连接。Potatso 会导入该服务器并显示警告。

## 填充 {#padding}

AnyTLS 会对每条连接的开头做填充，以隐藏会暴露代理的数据大小。服务器可以发送自己的填充方案，Potatso 按 AnyTLS 的定义，从下一条 TLS 连接起使用它。你的设备上无需设置任何内容。

## UDP {#udp}

AnyTLS 在它的 TLS 连接内承载 UDP（UDP over TCP）。与 Clash 一样，UDP 默认关闭。如果你的服务器转发 UDP，请在服务器设置中开启 UDP 转发。Clash 订阅用 `udp: true` 开启它，Surge 配置则总是开启。

## 功能支持 {#features}

| 功能 | 支持情况 |
| --- | --- |
| [AnyTLS 协议](https://github.com/anytls/anytls-go/blob/main/docs/protocol.md) v2：密码、填充、连接复用 | ✅ |
| 服务器发送的填充方案 | ✅ |
| UDP over TCP | ✅ |
| [空闲连接设置](#connections) | ✅ |
| REALITY、ECH | ✅ |
| 证书固定、浏览器指纹 | ✅ |
| 自定义 CA、TLS 客户端证书 | ❌ |
| `anytls://` 链接 | ✅ |

每一项受支持的功能，都至少用一台真实的 AnyTLS 服务器测试过：[anytls-go](https://github.com/anytls/anytls-go)、[sing-box](https://sing-box.sagernet.org/) 或 [mihomo](https://wiki.metacubex.one/)。

密码错误时，服务器会关闭连接。如果 AnyTLS 服务器始终连不上，请先检查密码。

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

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

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

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

参数沿用 [anytls-go 格式](https://github.com/anytls/anytls-go/blob/main/docs/uri_scheme.md)，外加一些 App 额外添加的参数：

| 参数 | 说明 |
| --- | --- |
| `sni` | TLS 服务器名称。 |
| `insecure` | `1` 表示关闭证书验证。 |
| `alpn` | ALPN 列表，用逗号分隔并经百分号编码。 |
| `fp` | 浏览器指纹。 |
| `hpkp` | 服务器证书的 SHA-256。 |

分享 AnyTLS 服务器时，Potatso 提供带有相同参数的 `anytls://` 链接。

### 示例 {#link-examples}

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

基本服务器：

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

自签名证书，不做验证：

```text
anytls://secret@203.0.113.7/?insecure=1#Self-signed
```

Chrome 指纹、ALPN 列表和固定的证书：

```text
anytls://secret@anytls.example.com:443/?sni=anytls.example.com&alpn=h2%2Chttp%2F1.1&fp=chrome&hpkp=abababababababababababababababababababababababababababababababab#Shaped
```

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