Skip to content

Shadowsocks

Potatso 支援的 Shadowsocks 加密方式、外掛程式、連結與功能。

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 位元組的金鑰。請完全照伺服器上的金鑰使用。

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:// 連結用一行就包含整台伺服器(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 接受標準與 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
導覽

Type to search…

↑↓ navigate↵ selectEsc close