---
title: "Shadowsocks"
description: "iPhone 版 Potatso 支持的 Shadowsocks 加密方式、插件、ss:// 链接和功能，含 2022 加密与多用户。"
---

> 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.

# Shadowsocks

Shadowsocks 服务器由**加密方式**和**密码**描述，还可以搭配一个用来伪装连接的**插件**。只要 Potatso 支持服务器的加密方式（如果有插件，还要支持该插件），就能连接到它。你可以对照下面的表格，检查服务商提供的服务器设置，或其 `ss://` 链接中的设置。

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

- Clash 或 Mihomo 订阅，
- [SIP008](https://shadowsocks.org/doc/sip008.html) 在线配置（文件或链接均可），
- shadowsocks-rust 或 shadowsocks-libev 的 `config.json`，
- Surge 配置，或 Xray、V2Ray 配置。

## 加密方式 {#ciphers}

如果服务器提供 2022 加密，请优先选择；其次是 AEAD 加密。流加密存在已知的弱点，只在服务器没有其他选择时使用。

| 加密方式 | 类型 | 支持情况 |
| --- | --- | --- |
| `2022-blake3-aes-128-gcm`, `2022-blake3-aes-256-gcm` | 2022 | ✅ 支持[多用户](#multi-user) |
| `2022-blake3-chacha20-poly1305`, `2022-blake3-chacha8-poly1305` | 2022 | ✅ |
| `aes-128-gcm`, `aes-192-gcm`, `aes-256-gcm` | AEAD | ✅ |
| `chacha20-ietf-poly1305`, `xchacha20-ietf-poly1305` | AEAD | ✅ |
| `aes-128-ccm`, `aes-256-ccm`, `aes-128-gcm-siv`, `aes-256-gcm-siv` | AEAD | ✅ |
| `sm4-gcm`, `sm4-ccm` | AEAD | ✅ |
| `aes-128-ctr`, `aes-192-ctr`, `aes-256-ctr` | 流加密 | ✅ |
| `aes-128-cfb`, `aes-192-cfb`, `aes-256-cfb`（也写作 `-cfb128`） | 流加密 | ✅ |
| `aes-128-cfb1`, `aes-192-cfb1`, `aes-256-cfb1` | 流加密 | ✅ |
| `aes-128-cfb8`, `aes-192-cfb8`, `aes-256-cfb8` | 流加密 | ✅ |
| `aes-128-ofb`, `aes-192-ofb`, `aes-256-ofb` | 流加密 | ✅ |
| `camellia-128-ctr`, `camellia-192-ctr`, `camellia-256-ctr` | 流加密 | ✅ |
| `camellia-128-cfb`, `camellia-192-cfb`, `camellia-256-cfb`（也写作 `-cfb128`） | 流加密 | ✅ |
| `camellia-128-cfb1`, `camellia-192-cfb1`, `camellia-256-cfb1` | 流加密 | ✅ |
| `camellia-128-cfb8`, `camellia-192-cfb8`, `camellia-256-cfb8` | 流加密 | ✅ |
| `camellia-128-ofb`, `camellia-192-ofb`, `camellia-256-ofb` | 流加密 | ✅ |
| `chacha20-ietf`, `chacha20`, `salsa20` | 流加密 | ✅ |
| `bf-cfb`, `rc4-md5`, `rc4`, `table` | 流加密 | ✅ |
| `none`（也写作 `plain`） | 无加密 | ✅ |
| `cast5-cfb`, `des-cfb`, `idea-cfb`, `rc2-cfb`, `seed-cfb`, `rc4-md5-6` | 流加密 | ❌ 仅 ShadowsocksR 支持 |
| `xchacha20`, `xsalsa20` | 流加密 | ❌ |

名称不区分大小写，所以 `AES-256-GCM` 与 `aes-256-gcm` 效果相同。

`none` 会以不加密的方式发送流量。仅在搭配自身会加密连接的插件时使用，例如启用 TLS 的 v2ray-plugin。

每一种受支持的加密方式，都至少用一台真实的 Shadowsocks 服务器测试过：[shadowsocks-rust](https://github.com/shadowsocks/shadowsocks-rust)、[sing-box](https://sing-box.sagernet.org/) 或原版 Python 服务端。在上面的 AEAD 加密中，只有 shadowsocks-rust 服务器提供 `aes-*-ccm`、`aes-*-gcm-siv` 和 `sm4-*`，而且很少有服务商使用它们。

### 2022 密钥 {#2022-keys}

2022 加密（[SIP022](https://shadowsocks.org/doc/sip022.html)）不使用密码，而是使用密钥：由随机字节经 Base64 编码而成，长度由加密方式决定。`2022-blake3-aes-128-gcm` 需要 16 字节的密钥，其他 2022 加密需要 32 字节的密钥。请原样使用服务器上的密钥。

如果密钥长度不对，或者密码不是 Base64，Potatso 不会连接。要为服务器生成新密钥，`2022-blake3-aes-128-gcm` 运行 `openssl rand -base64 16`，其他 2022 加密运行 `openssl rand -base64 32`。

### 多用户服务器 {#multi-user}

2022 服务器可以让多个用户共用一个端口（[SIP023](https://shadowsocks.org/doc/sip023.html)），每个用户有自己的密钥。对于这类服务器，请把密码设为服务器密钥和你的用户密钥，中间用冒号隔开：

```text
server-key:user-key
```

只有 `2022-blake3-aes-128-gcm` 和 `2022-blake3-aes-256-gcm` 支持多用户服务器。

## 插件 {#plugins}

插件会包装 Shadowsocks 连接，使其更难被识别。Potatso 已内置以下插件，无需另外安装。

| 插件 | 插件名称 | 支持情况 | UDP |
| --- | --- | --- | --- |
| Simple Obfs | `obfs-local`, `simple-obfs`, `obfs` | ✅ `obfs=http` 和 `obfs=tls` | 不经过插件，直接发送到服务器 |
| v2ray-plugin | `v2ray-plugin` | ✅ WebSocket，可带 TLS 或不带。不支持 QUIC 模式。 | ❌ |
| gost-plugin | `gost-plugin` | ✅ WebSocket，可带 TLS 或不带 | ❌ |
| ShadowTLS | `shadow-tls` | ✅ 版本 1、2 和 3 | ❌ |
| Restls | `restls` | ✅ | ❌ |
| JLS | `jls` | ✅ | ❌ |

如果服务器需要其他插件，Potatso 不会导入它：

- Cloak、xray-plugin 等插件是需要在设备上与 Potatso 并排运行的程序，而 iOS 不允许这样做。
- Potatso 暂不提供 kcptun 和 ech-tls-tunnel。

### 设置插件 {#set-plugin}

在服务器设置中，于**插件**下选择插件，然后在**插件参数**中填写它的选项。选项是以分号分隔的 `key=value` 键值对，下面是一个 Simple Obfs 示例：

```text
obfs=tls;obfs-host=cdn.example.com
```

单独出现的键（如 `tls`）表示开启该选项。用不到的选项可以省略，各选项的默认值见下面的表格。

导入服务器时，Potatso 会自动设置插件及其选项：

- [`ss://` 链接](#links)把它们放在 `plugin` 参数中，位于插件名称之后：`simple-obfs;obfs=tls;obfs-host=cdn.example.com`。
- Clash 或 Mihomo 订阅把它们放在 `plugin` 和 `plugin-opts` 中。
- SIP008 配置，以及 shadowsocks-rust 或 shadowsocks-libev 的 `config.json`，把它们放在 `plugin` 和 `plugin_opts` 中。

各种形式里的选项都是一样的。如果服务商把它们一项一行地列出（如 Clash 的 `plugin-opts`），请把每一项写成 `key=value`，再用分号连起来。

### 插件选项 {#plugin-options}

**Simple Obfs**

| 选项 | 说明 |
| --- | --- |
| `obfs` | 必填。`http` 或 `tls`。 |
| `obfs-host` | `Host` 请求头（`http`），或 TLS 握手中发送的服务器名称（`tls`）。留空时，Potatso 使用服务器地址。 |
| `obfs-uri` | 仅限 `http`。请求路径。默认为 `/`。 |
| `http-method` | 仅限 `http`。请求方法。默认为 `GET`。 |

**v2ray-plugin**

| 选项 | 说明 |
| --- | --- |
| `mode` | `websocket`，默认值。不支持 QUIC 模式。 |
| `tls` | 通过 TLS 连接。默认关闭。 |
| `host` | `Host` 请求头，同时也是 TLS 的服务器名称。留空时，Potatso 使用服务器地址。 |
| `path` | WebSocket 路径。默认为 `/`。 |
| `mux` | 多路复用。默认关闭。仅在服务器使用它时才开启。 |
| `skip-cert-verify` | 接受任何服务器证书。只对你信任的服务器使用。 |
| `header` | 额外的请求头，写作 `header=Name:Value`。需要更多请求头时重复填写。 |

**gost-plugin**

| 选项 | 说明 |
| --- | --- |
| `mode` | 必填。`websocket`。 |
| `tls` | 通过 TLS 连接。默认关闭。 |
| `host` | `Host` 请求头，同时也是 TLS 的服务器名称。与 gost 一致，默认为 `bing.com`。 |
| `path` | WebSocket 路径。默认为 `/`。 |
| `mux` | 多路复用。默认开启。 |
| `skip-cert-verify` | 接受任何服务器证书。只对你信任的服务器使用。 |
| `fingerprint` | 服务器证书的 SHA-256 指纹，用于只接受该证书。 |
| `header` | 额外的请求头，写作 `header=Name:Value`。需要更多请求头时重复填写。 |

**ShadowTLS**

| 选项 | 说明 |
| --- | --- |
| `host` | 必填。伪装站点的服务器名称，如 `www.example.com`。 |
| `version` | 必填。`1`、`2` 或 `3`。 |
| `password` | 密码。版本 2 和 3 需要。 |
| `alpn` | ALPN 列表，用逗号分隔。默认为 `h2,http/1.1`。 |
| `skip-cert-verify` | 接受任何伪装站点的证书。 |

**Restls**

| 选项 | 说明 |
| --- | --- |
| `host` | 必填。伪装站点的服务器名称。 |
| `password` | 必填。密码。 |
| `version-hint` | 必填。`tls13` 或 `tls12`，与服务器的设置一致。 |
| `restls-script` | 记录脚本，服务商提供时才需要。 |

**JLS**

| 选项 | 说明 |
| --- | --- |
| `host` | 必填。伪装站点的服务器名称。 |
| `username` | 必填。用户名。 |
| `password` | 必填。密码。 |
| `alpn` | ALPN 列表，用逗号分隔。默认为 `h2,http/1.1`。 |

如果缺少必填选项，或者某个值无效，Potatso 不会连接服务器。

## UDP {#udp}

Shadowsocks 服务器默认开启 UDP，所有受支持的加密方式都可以使用。如果你的服务器不转发 UDP，请在服务器设置中把它关闭。

UDP 不会经过插件发送，所以使用 Simple Obfs 以外的插件时，服务器只承载 TCP。Potatso 不支持 UDP-over-TCP（链接或订阅中的 `udp-over-tcp` 或 `uot`），也不会导入需要它的服务器。

## 功能支持 {#features}

| 功能 | 支持情况 |
| --- | --- |
| [SIP002](https://shadowsocks.org/doc/sip002.html) `ss://` 链接 | ✅ 包括较旧的 Base64 形式 |
| [SIP003](https://shadowsocks.org/doc/sip003.html) 插件 | 仅限[内置插件](#plugins) |
| SIP003u（通过插件传输 UDP） | ❌ |
| [AEAD 加密](https://shadowsocks.org/doc/aead.html)（SIP004） | ✅ |
| [SIP008](https://shadowsocks.org/doc/sip008.html) 在线配置 | ✅ |
| [SIP022](https://shadowsocks.org/doc/sip022.html) 2022 加密 | ✅ TCP 和 UDP |
| [SIP023](https://shadowsocks.org/doc/sip023.html) 多用户身份头 | ✅ 适用于 AES 2022 加密 |
| [流加密](https://shadowsocks.org/doc/stream.html) | ✅ 见[加密方式](#ciphers) |
| UDP-over-TCP | ❌ |
| TCP Fast Open、MPTCP | ❌ |

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

- 本地 SOCKS5、HTTP、tunnel、redir、DNS 和 TUN 服务器：Potatso 自行捕获设备的流量。
- 访问控制列表（ACL）：请使用配置中的规则。
- 在多台服务器中选择最快的一台：请使用配置中的代理组。

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

`ss://` 链接用一行文字包含完整的服务器信息（[SIP002](https://shadowsocks.org/doc/sip002.html)）：

```text
ss://userinfo@host:port/?plugin=…#name
```

| 部分 | 说明 |
| --- | --- |
| `userinfo` | 以 `cipher:password` 形式表示的加密方式和密码，可经 Base64 编码或百分号编码。2022 加密必须使用百分号编码。 |
| `host` | 服务器地址。IPv6 地址要放在方括号里，如 `[2001:db8::1]`。 |
| `port` | 服务器端口。 |
| `plugin` | 可选。插件名称及其选项，用分号分隔并经百分号编码，如 `simple-obfs;obfs=tls;obfs-host=cdn.example.com`。 |
| `name` | 可选。服务器在 Potatso 中的名称。 |

Potatso 也能导入较旧的形式，即 `#` 之前的全部内容都经 Base64 编码：

```text
ss://base64(cipher:password@host:port)#name
```

Potatso 接受标准 Base64 和 URL 安全的 Base64，带不带 `=` 填充均可。分享服务器时，Potatso 提供 SIP002 的 Base64 和百分号编码两种形式，以及较旧的形式。

### 示例 {#link-examples}

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

使用 `aes-256-gcm` 的基本服务器：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Basic
```

使用 16 字节密钥 `MTIzNDU2Nzg5MDEyMzQ1Ng==` 的 2022 服务器：

```text
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022
```

多用户 2022 服务器，服务器密钥和用户密钥之间用冒号（`%3A`）隔开：

```text
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-user
```

使用 `cdn.example.com` 作为服务器名称的 Simple Obfs（TLS）：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#Obfs
```

基本服务器的旧形式：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#Legacy
```

使用 IPv6 地址的服务器：

```text
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6
```

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