AnyTLS 服务器由密码和 TLS 设置描述。AnyTLS 运行在 TLS 之中并对流量做填充,所以连接看起来就像一次普通的 HTTPS 访问,不会露出 TLS 内部代理的常见特征。只要 Potatso 支持服务器的 TLS 设置,就能连接到它。你可以对照下面的表格,检查服务商提供的服务器设置,或其 anytls:// 链接中的设置。
你可以手动添加 AnyTLS 服务器、通过 anytls:// 链接添加,或通过导入添加:
- Clash 或 Mihomo 订阅,
- Surge 配置。
Potatso 暂不从 sing-box 配置中导入 AnyTLS 服务器。请改用服务器的 anytls:// 链接。
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-opts |
✅ | |
| Encrypted Client Hello(ECH) | ech-opts |
✅ 需要订阅中带有 ECH 配置,或能从 DNS 中查到 | |
| 自定义 CA 证书 | ❌ | ||
| TLS 客户端证书 | certificate, private-key |
❌ |
关闭证书验证,会让你与服务器之间的任何人都能读取你的流量。如果服务器使用自签名证书,请改为固定该证书:把证书的 SHA-256 设为证书固定值。
浏览器指纹会让连接的 TLS 握手看起来像该浏览器的握手,但不会改变服务器必须支持的内容。
如果服务器需要 TLS 客户端证书,Potatso 不会导入它,因为服务器会拒绝连接。
REALITY
REALITY 服务器借用另一个网站的 TLS 证书,所以不需要自己的证书。sing-box 服务器可以让 AnyTLS 搭配 REALITY 使用。请按服务商提供的内容设置服务器的 Reality 公钥和 Reality Short ID,并把服务器名称设为服务器所借用的网站。REALITY 需要浏览器指纹,如 chrome。
连接
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 会导入该服务器并显示警告。
填充
AnyTLS 会对每条连接的开头做填充,以隐藏会暴露代理的数据大小。服务器可以发送自己的填充方案,Potatso 按 AnyTLS 的定义,从下一条 TLS 连接起使用它。你的设备上无需设置任何内容。
UDP
AnyTLS 在它的 TLS 连接内承载 UDP(UDP over TCP)。与 Clash 一样,UDP 默认关闭。如果你的服务器转发 UDP,请在服务器设置中开启 UDP 转发。Clash 订阅用 udp: true 开启它,Surge 配置则总是开启。
功能支持
| 功能 | 支持情况 |
|---|---|
| AnyTLS 协议 v2:密码、填充、连接复用 | ✅ |
| 服务器发送的填充方案 | ✅ |
| UDP over TCP | ✅ |
| 空闲连接设置 | ✅ |
| REALITY、ECH | ✅ |
| 证书固定、浏览器指纹 | ✅ |
| 自定义 CA、TLS 客户端证书 | ❌ |
anytls:// 链接 |
✅ |
每一项受支持的功能,都至少用一台真实的 AnyTLS 服务器测试过:anytls-go、sing-box 或 mihomo。
密码错误时,服务器会关闭连接。如果 AnyTLS 服务器始终连不上,请先检查密码。
anytls:// 链接
anytls:// 链接用一行文字包含完整的服务器信息:
anytls://password@host:port/?parameters#name| 部分 | 说明 |
|---|---|
password |
密码,经百分号编码。 |
host |
服务器地址。IPv6 地址要放在方括号里,如 [2001:db8::1]。 |
port |
服务器端口。缺省时,Potatso 使用 443。 |
name |
可选。服务器在 Potatso 中的名称。 |
参数沿用 anytls-go 格式,外加一些 App 额外添加的参数:
| 参数 | 说明 |
|---|---|
sni |
TLS 服务器名称。 |
insecure |
1 表示关闭证书验证。 |
alpn |
ALPN 列表,用逗号分隔并经百分号编码。 |
fp |
浏览器指纹。 |
hpkp |
服务器证书的 SHA-256。 |
分享 AnyTLS 服务器时,Potatso 提供带有相同参数的 anytls:// 链接。
示例
每个示例都是要导入的链接。密码是 secret。
基本服务器:
anytls://secret@anytls.example.com:443/?sni=anytls.example.com#Basic自签名证书,不做验证:
anytls://secret@203.0.113.7/?insecure=1#Self-signedChrome 指纹、ALPN 列表和固定的证书:
anytls://secret@anytls.example.com:443/?sni=anytls.example.com&alpn=h2%2Chttp%2F1.1&fp=chrome&hpkp=abababababababababababababababababababababababababababababababab#Shaped