Shadowsocks 服务器由加密方式和密码描述,还可以搭配一个用来伪装连接的插件。只要 Potatso 支持服务器的加密方式(如果有插件,还要支持该插件),就能连接到它。你可以对照下面的表格,检查服务商提供的服务器设置,或其 ss:// 链接中的设置。
你可以手动添加 Shadowsocks 服务器、通过 ss:// 链接添加,或通过导入添加:
- Clash 或 Mihomo 订阅,
- SIP008 在线配置(文件或链接均可),
- shadowsocks-rust 或 shadowsocks-libev 的
config.json, - Surge 配置,或 Xray、V2Ray 配置。
加密方式
如果服务器提供 2022 加密,请优先选择;其次是 AEAD 加密。流加密存在已知的弱点,只在服务器没有其他选择时使用。
| 加密方式 | 类型 | 支持情况 |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm |
2022 | ✅ 支持多用户 |
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、sing-box 或原版 Python 服务端。在上面的 AEAD 加密中,只有 shadowsocks-rust 服务器提供 aes-*-ccm、aes-*-gcm-siv 和 sm4-*,而且很少有服务商使用它们。
2022 密钥
2022 加密(SIP022)不使用密码,而是使用密钥:由随机字节经 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。
多用户服务器
2022 服务器可以让多个用户共用一个端口(SIP023),每个用户有自己的密钥。对于这类服务器,请把密码设为服务器密钥和你的用户密钥,中间用冒号隔开:
server-key:user-key只有 2022-blake3-aes-128-gcm 和 2022-blake3-aes-256-gcm 支持多用户服务器。
插件
插件会包装 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。
设置插件
在服务器设置中,于插件下选择插件,然后在插件参数中填写它的选项。选项是以分号分隔的 key=value 键值对,下面是一个 Simple Obfs 示例:
obfs=tls;obfs-host=cdn.example.com单独出现的键(如 tls)表示开启该选项。用不到的选项可以省略,各选项的默认值见下面的表格。
导入服务器时,Potatso 会自动设置插件及其选项:
ss://链接把它们放在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,再用分号连起来。
插件选项
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
Shadowsocks 服务器默认开启 UDP,所有受支持的加密方式都可以使用。如果你的服务器不转发 UDP,请在服务器设置中把它关闭。
UDP 不会经过插件发送,所以使用 Simple Obfs 以外的插件时,服务器只承载 TCP。Potatso 不支持 UDP-over-TCP(链接或订阅中的 udp-over-tcp 或 uot),也不会导入需要它的服务器。
功能支持
| 功能 | 支持情况 |
|---|---|
SIP002 ss:// 链接 |
✅ 包括较旧的 Base64 形式 |
| SIP003 插件 | 仅限内置插件 |
| SIP003u(通过插件传输 UDP) | ❌ |
| AEAD 加密(SIP004) | ✅ |
| SIP008 在线配置 | ✅ |
| SIP022 2022 加密 | ✅ TCP 和 UDP |
| SIP023 多用户身份头 | ✅ 适用于 AES 2022 加密 |
| 流加密 | ✅ 见加密方式 |
| UDP-over-TCP | ❌ |
| TCP Fast Open、MPTCP | ❌ |
shadowsocks-rust 的某些功能是它自带客户端程序 sslocal 的设置,Potatso 用自己的方式完成同样的工作:
- 本地 SOCKS5、HTTP、tunnel、redir、DNS 和 TUN 服务器:Potatso 自行捕获设备的流量。
- 访问控制列表(ACL):请使用配置中的规则。
- 在多台服务器中选择最快的一台:请使用配置中的代理组。
ss:// 链接
ss:// 链接用一行文字包含完整的服务器信息(SIP002):
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 编码:
ss://base64(cipher:password@host:port)#namePotatso 接受标准 Base64 和 URL 安全的 Base64,带不带 = 填充均可。分享服务器时,Potatso 提供 SIP002 的 Base64 和百分号编码两种形式,以及较旧的形式。
示例
每个示例都是要导入的链接。AEAD 示例中的密码是 secret。
使用 aes-256-gcm 的基本服务器:
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:8388#Basic使用 16 字节密钥 MTIzNDU2Nzg5MDEyMzQ1Ng== 的 2022 服务器:
ss://2022-blake3-aes-128-gcm:MTIzNDU2Nzg5MDEyMzQ1Ng%3D%3D@ss.example.com:8388#2022多用户 2022 服务器,服务器密钥和用户密钥之间用冒号(%3A)隔开:
ss://2022-blake3-aes-256-gcm:MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI%3D%3AYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU%3D@ss.example.com:8388#Multi-user使用 cdn.example.com 作为服务器名称的 Simple Obfs(TLS):
ss://YWVzLTI1Ni1nY206c2VjcmV0@ss.example.com:443/?plugin=simple-obfs%3Bobfs%3Dtls%3Bobfs-host%3Dcdn.example.com#Obfs基本服务器的旧形式:
ss://YWVzLTI1Ni1nY206c2VjcmV0QHNzLmV4YW1wbGUuY29tOjgzODg#Legacy使用 IPv6 地址的服务器:
ss://YWVzLTI1Ni1nY206c2VjcmV0@[2001:db8::1]:8388#IPv6