Skip to content

Shadowsocks

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

Updated 以 Markdown 查看

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:// 链接用一行文字包含完整的服务器信息(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)#name

Potatso 接受标准 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
导航

Type to search…

↑↓ navigate↵ selectEsc close