ShadowsocksR(SSR)服务器由三项设置描述:加密方式、协议和混淆方式。只有三者都受支持,Potatso 才会连接服务器。你可以对照下面的表格,检查服务商提供的服务器设置,或其 ssr:// 链接中的设置。
你可以手动添加 SSR 服务器、通过 ssr:// 链接添加,或从 Clash 或 Mihomo 订阅中导入。Potatso 会保留服务商指定的协议和混淆,包括 _compatible 形式。
加密方式
| 加密方式 | 支持情况 |
|---|---|
none |
✅ |
aes-128-ctr, aes-192-ctr, aes-256-ctr |
✅ |
aes-128-cfb, aes-192-cfb, aes-256-cfb |
✅ |
camellia-128-cfb, camellia-192-cfb, camellia-256-cfb |
✅ |
chacha20, chacha20-ietf |
✅ |
salsa20 |
✅ |
bf-cfb |
✅ |
rc4-md5 |
✅ |
cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb |
✅ |
rc4-md5-6, table |
✅ |
xchacha20, xsalsa20 |
❌ |
aes-256-gcm 这类 AEAD 加密属于 Shadowsocks,不属于 ShadowsocksR。如果服务商给 SSR 服务器列出了这类加密,请确认该服务器实际上是不是 Shadowsocks 服务器。
协议
| 协议 | 支持情况 | 多用户 |
|---|---|---|
origin |
✅ | — |
verify_deflate |
✅ | — |
auth_sha1, auth_sha1_v2 |
已弃用(未用真实服务器测试) | — |
auth_sha1_v4 |
✅ | — |
auth_sha1_v4_compatible |
✅ | — |
auth_aes128_md5 |
✅ | ✅ |
auth_aes128_sha1 |
✅ | ✅ |
auth_chain_a |
✅ | ✅ |
auth_chain_b |
✅ | ✅ |
verify_simple, verify_sha1, auth_simple |
已弃用(作为 origin 导入) |
— |
多用户服务器让多个用户共用一个端口。对于这类服务器,请把协议参数(protocol-param,在 ssr:// 链接中是 protoparam)设为 uid:key,其中的用户 ID 和密钥由服务商提供。
目前的 ShadowsocksR 服务器已不再提供 auth_sha1 和 auth_sha1_v2。Potatso 仍可使用它们连接,但没有用真实服务器测试过,所以如果服务商提供其他协议,请优先选用其他协议。
旧版 Potatso 列出了 verify_simple、verify_sha1 和 auth_simple,但实际一直以 origin 连接。Potatso 现在仍把它们作为 origin 导入,并在导入时显示警告。
混淆
| 混淆 | 支持情况 |
|---|---|
plain |
✅ |
http_simple, http_simple_compatible |
✅ |
http_post, http_post_compatible |
✅ |
tls1.2_ticket_auth, tls1.2_ticket_auth_compatible |
✅ |
tls1.2_ticket_fastauth, tls1.2_ticket_fastauth_compatible |
✅ |
random_head, random_head_compatible |
✅ 已弃用 |
名称带 _compatible 表示服务器也接受不使用混淆的客户端。Potatso 使用名称所指的混淆方式,所以你可以保留服务商给出的名称。
对于 HTTP 方式,混淆参数(obfs-param,在 ssr:// 链接中是 obfsparam)用来设置 Host 请求头。它可以是单个主机、以逗号分隔的主机列表,或一组自定义请求头。留空时,Potatso 使用服务器地址。对于 TLS 方式,它设置 TLS 握手中发送的服务器名称。
UDP
UDP 适用于所有受支持的协议,SSR 服务器默认开启。如果你的服务器不转发 UDP,请在服务器设置中把它关闭。
ssr:// 链接
ssr:// 链接用一行文字包含完整的服务器信息。ssr:// 之后的全部内容都经 Base64 编码:
ssr://base64(host:port:protocol:cipher:obfs:base64(password)/?obfsparam=…&protoparam=…&remarks=…)/? 之前的部分是用冒号分隔的六个字段:
| 字段 | 说明 |
|---|---|
host |
服务器地址。IPv6 地址要放在方括号里,如 [2001:db8::1]。 |
port |
服务器端口。 |
protocol |
上面协议中的一种。留空时,Potatso 使用 origin。 |
cipher |
上面加密方式中的一种。必填。 |
obfs |
上面混淆方式中的一种。留空时,Potatso 使用 plain。 |
password |
密码,经 Base64 编码。 |
/? 之后的部分是可选的,每个值都经 Base64 编码:
| 参数 | 说明 |
|---|---|
obfsparam |
混淆参数,例如 http_simple 的 Host。 |
protoparam |
协议参数,例如多用户服务器的 uid:key。 |
remarks |
服务器在 Potatso 中的名称。 |
Potatso 会忽略其他参数,如 group、udpport 和 uot,以及链接末尾的 #name。UDP 不属于链接的一部分:它默认开启,你可以在导入后关闭。
Potatso 接受标准 Base64 和 URL 安全的 Base64,带不带 = 填充均可。名称不区分大小写,所以 AUTH_CHAIN_A 与 auth_chain_a 效果相同。分享服务器时,Potatso 写出的是不带填充的 URL 安全 Base64。
示例
每个示例先给出解码后的文本,再给出要导入的链接。所有示例中的密码都是 secret。
没有协议插件、也没有混淆的基本服务器:
ssr.example.com:8388:origin:aes-256-cfb:plain:c2VjcmV0/?remarks=QmFzaWMssr://c3NyLmV4YW1wbGUuY29tOjgzODg6b3JpZ2luOmFlcy0yNTYtY2ZiOnBsYWluOmMyVmpjbVYwLz9yZW1hcmtzPVFtRnphV00使用 cdn.example.com 作为服务器名称的 TLS 混淆:
ssr.example.com:443:auth_aes128_md5:chacha20-ietf:tls1.2_ticket_auth:c2VjcmV0/?obfsparam=Y2RuLmV4YW1wbGUuY29t&remarks=VExTIG9iZnMssr://c3NyLmV4YW1wbGUuY29tOjQ0MzphdXRoX2FlczEyOF9tZDU6Y2hhY2hhMjAtaWV0Zjp0bHMxLjJfdGlja2V0X2F1dGg6YzJWamNtVjAvP29iZnNwYXJhbT1ZMlJ1TG1WNFlXMXdiR1V1WTI5dCZyZW1hcmtzPVZFeFRJRzlpWm5N多用户服务器:用户 2173,密钥 userkey,加密方式为 none,使用 HTTP 混淆:
ssr.example.com:8080:auth_chain_a:none:http_simple:c2VjcmV0/?obfsparam=Y2RuLmV4YW1wbGUuY29t&protoparam=MjE3Mzp1c2Vya2V5&remarks=TXVsdGktdXNlcgssr://c3NyLmV4YW1wbGUuY29tOjgwODA6YXV0aF9jaGFpbl9hOm5vbmU6aHR0cF9zaW1wbGU6YzJWamNtVjAvP29iZnNwYXJhbT1ZMlJ1TG1WNFlXMXdiR1V1WTI5dCZwcm90b3BhcmFtPU1qRTNNenAxYzJWeWEyVjUmcmVtYXJrcz1UWFZzZEdrdGRYTmxjZw使用 IPv6 地址的服务器:
[2001:db8::1]:8388:auth_sha1_v4:rc4-md5:http_post:c2VjcmV0/?remarks=SVB2Ngssr://WzIwMDE6ZGI4OjoxXTo4Mzg4OmF1dGhfc2hhMV92NDpyYzQtbWQ1Omh0dHBfcG9zdDpjMlZqY21WMC8_cmVtYXJrcz1TVkIyTmc