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 位元組的金鑰。請完全照伺服器上的金鑰使用。
Potatso 不會以長度錯誤的金鑰,或不是 Base64 的密碼連線。若要為你的伺服器產生新金鑰,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 的伺服器名稱。預設為 bing.com,與 gost 相同。 |
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 接受標準與 URL-safe 的 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使用 TLS 的 Simple Obfs,以 cdn.example.com 作為伺服器名稱:
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