Shadowsocks 客户端:2026 年如何选择、设置和使用
2026 年在 Windows、macOS、Linux、Android 和 iOS 上该用哪个 Shadowsocks 客户端,如何导入 ss:// 链接、选择加密方式并确认隧道已生效。
Shadowsocks 客户端是装在你设备上的应用,它负责连接 Shadowsocks 服务器,并让你的流量通过加密隧道传输。只要有人给了你一个 ss:// 链接、一个二维码或一组服务器参数,你就需要一个客户端。而且选哪个应用比看上去更重要,因为旧教程推荐的客户端有一半已经好几年没更新了,有些甚至根本连不上新版服务器。
对大多数人来说,答案很简单。Outline 是各个平台上最容易上手的免费选择;想在 Android 上精细控制,就用 shadowsocks-android;Linux、服务器和路由器则交给 shadowsocks-rust 里的 sslocal。下面我们先看看 2026 年还有哪些客户端在维护,再把 ss:// 链接拆开讲清楚,然后逐个平台完成设置。最后还要确认你的流量确实是从服务器出去的,因为单凭一个绿色的“已连接”图标,证明不了这一点。

Shadowsocks 客户端实际上做了什么#
Shadowsocks 是一种加密代理协议。它在 2012 年问世,最初是为了访问在部分地区无法打开的网站,如今已经是受限网络中部署最广泛的协议之一。一套方案总是分成两半:一台位于不受限网络中的服务器,以及你设备上的客户端。
客户端负责三件事:
- 打开本地代理。客户端在你自己的电脑上监听,通常是
127.0.0.1:1080上的 SOCKS5 代理。有些客户端还会同时开启 HTTP 代理或作用于整个系统的 VPN 接口。 - 加密并转发。你的应用发往这个本地代理的每个连接,都会先用共享密钥加密,再转发给 Shadowsocks 服务器。
- 决定哪些流量走隧道。根据模式不同,可以是全部流量、只有匹配规则的流量,或者只有你指定的应用。
在另一端,服务器解密流量,再与网站建立真正的连接。因此网站看到的是服务器的 IP 地址,而不是你的。你的网络运营商则只能看到一条发往某台服务器的加密数据流,看不到任何代理握手。
Browser / app
│ plain SOCKS5 or HTTP (only on your device)
▼
Shadowsocks client 127.0.0.1:1080
│ encrypted Shadowsocks stream
▼
Shadowsocks server (your VPS or provider)
│ normal HTTPS
▼
Website
关于 Shadowsocks,有两个常见的误解:
- 它不是 SOCKS5 代理。客户端和你的应用之间用 SOCKS5 通信,但与服务器之间使用的是另一种加密协议。所以你不能把 Shadowsocks 客户端连到普通的 SOCKS5 服务器上,反过来也不行。
- 默认情况下它不是完整的 VPN。在基本模式下,只有使用本地代理的应用会走隧道,忽略代理设置的应用则直接连出去。想覆盖整台设备,就要把客户端切换到 VPN(TUN)模式。
2026 年值得用的 Shadowsocks 客户端#
很多榜单仍在推荐早已停止开发的客户端,所以我们在 2026 年 10 月逐一查看了每个客户端的发布记录。它们目前的状态见下表。
官方客户端和单协议客户端#
| 客户端 | 平台 | Shadowsocks 2022 加密方式 | 插件 | 2026 年状态 |
|---|---|---|---|---|
| Outline Client | Windows、macOS、Linux、Android、iOS、ChromeOS | 不支持,仅支持传统加密方式 | 不支持 | 积极开发中;自 2026 年 1 月起由非营利组织 Outline Foundation 运营 |
| shadowsocks-android | Android | 支持 | 支持,以独立应用形式安装 | 在 GitHub 上持续维护(v5.3.4);Google Play 版本自 2021 年起未再更新 |
| ShadowsocksX-NG | macOS | 不支持 | 支持 | 最后一个版本是 2024 年 10 月的 v1.10.3;可在 Apple Silicon 上原生运行 |
shadowsocks-rust (sslocal) | Linux、macOS、Windows、路由器 | 支持 | 支持 | 参考实现,定期发布新版本(v1.25.0) |
| Shadowsocks for Windows | Windows | 不支持 | 支持 | 仍然能用,但最后一个版本(4.4.1.0)发布于 2022 年 2 月 |
| shadowsocks-libev(现名 shadowsocks-c) | Linux、路由器 | 正式版本中尚未支持 | 支持 | 以新名称恢复开发;2026 年 2 月发布了 v3.3.6 |
| shadowsocks-qt5 | Linux、Windows | 不支持 | 不支持 | 已停止开发;请改用 sslocal 或多协议应用 |
Python shadowsocks (pip) | 任意平台 | 不支持 | 不支持 | 多年前就已停止开发,不要再用 |
| ShadowsocksR (SSR) | 多种平台 | 不支持 | 不支持 | 早已无人维护的分支,使用自己的协议,新版服务器不接受 |
同时支持 Shadowsocks 的多协议客户端#
如果你以后可能还要用 VLESS、Trojan 或 Hysteria,一个应用就能把它们和 Shadowsocks 一起搞定:
- 桌面端:可以用基于 mihomo 内核的 Clash Verge Rev,以及 v2rayN。
- Android:有 NekoBox、Hiddify 和官方 sing-box 应用。NekoBox 更新较慢,而且它在 Google Play 上的页面由第三方运营,所以请从 GitHub 安装。
- iOS:有免费的 sing-box MT 应用(sing-box 文档里给出了它的链接),以及 Potatso。Potatso 的旧开源仓库虽已无人维护,但它在 App Store 里仍在更新。Shadowrocket、Stash、Surge 等付费应用还在此基础上提供了基于规则的分流。
sing-box 和 mihomo 都支持 Shadowsocks 2022 加密方式,而且内置了常用插件,不需要再作为单独的程序安装。
快速推荐#
- 任何设备上最省事的:Outline。粘贴密钥,点 Connect 就行。
- 想在 Android 上完全掌控:选 shadowsocks-android。
- Mac:用 ShadowsocksX-NG;如果需要分流规则和更新的加密方式,可以选 Clash Verge Rev。
- Linux、服务器和路由器:用 shadowsocks-rust 里的
sslocal。 - iPhone:免费的话用 Outline;如果需要按网站分流,就选基于规则的应用,因为 Outline 不提供这个功能。
你需要从服务器那里拿到什么#
无论是手动填写还是导入,每个 Shadowsocks 客户端都需要同样的四项参数:
| 字段 | 示例 | 说明 |
|---|---|---|
| 服务器 | 203.0.113.10 | IP 地址或域名 |
| 端口 | 8388 | 服务器监听的任意端口,常见的是 443 |
| 密码 / 密钥 | Secret0 | 必须与服务器完全一致 |
| 加密方式(method) | chacha20-ietf-poly1305 | 必须与服务器完全一致 |
加密方式或密码填错时,客户端并不会给出明确的报错。它会显示已连接,但什么都打不开,所以这是迄今为止最常见的设置问题。
如何读懂 ss:// 链接#
服务商和服务器面板通常会把这四项参数打包成一个 SIP002 格式的链接发给你,旁边往往还附带二维码:
ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpTZWNyZXQw@203.0.113.10:8388#Frankfurt
| 部分 | 含义 |
|---|---|
ss:// | 所有 Shadowsocks 客户端都能识别的协议头 |
Y2hhY2hh… | 加密方式和密码 chacha20-ietf-poly1305:Secret0,经过 URL 安全的 Base64 编码 |
@203.0.113.10:8388 | 服务器地址和端口 |
#Frankfurt | 应用里显示的标签,不影响连接 |
想确认拿到的是什么,可以用 echo Y2hhY2hh… | base64 -d 解码中间那段。Shadowsocks 2022 加密方式的链接长得不一样,因为规范禁止在这里使用 Base64:加密方式和密钥以明文写出,只有特殊字符做百分号编码。如果服务器使用了插件,链接里端口后面还会多出一个 /?plugin= 参数。
你还可能遇到另外两种通过 URL 分发服务器的格式:
- SIP008 订阅链接。这是一个返回 JSON 服务器列表的 HTTPS 链接。客户端会定期重新下载它(shadowsocks-rust 默认每小时一次),所以服务商不用给你发新链接就能更换服务器。
- Outline 的
ssconf://密钥。这是 Outline 的动态访问密钥。应用会把ssconf://换成https://,再从那个地址获取当前的服务器参数。
请像对待密码一样对待这些链接,因为任何拿到链接的人都能使用你的服务器。
该用哪种加密方式#
| 加密方式 | 类别 | 能用吗? |
|---|---|---|
2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305 | Shadowsocks 2022 | 能,前提是客户端和服务器都支持。内置防重放保护。 |
chacha20-ietf-poly1305 | 传统 AEAD | 能。所有符合规范的客户端都必须支持它,而且在手机和路由器上速度最快。 |
aes-256-gcm, aes-128-gcm | 传统 AEAD | 能。在支持硬件 AES 加速的电脑上最快。 |
aes-256-cfb, aes-128-ctr, rc4-md5, salsa20 及其他流加密方式 | 旧式 | 不能。它们没有完整性校验,项目方自己也称其已被彻底攻破。 |
流加密的风险并不只是理论上的。2020 年公布的一种攻击表明,有人只要录下了你的流量,就能借助一台仍在用相同密码运行流加密的服务器,把这些流量解密出来。
Shadowsocks 2022 还改变了密钥的用法,因为它不接受随意设置的密码。密钥必须是经过 Base64 编码的随机字节:2022-blake3-aes-128-gcm 需要 16 字节,另外两种需要 32 字节,所以要用 openssl rand -base64 16 或 openssl rand -base64 32 来生成。协议还会检查时间戳,任何偏差超过 30 秒的消息都会被当成重放。实际上这意味着,只要设备时钟偏了半分钟,所有连接都会失败。
如何设置 Shadowsocks 客户端#
先复制好你的 ss:// 链接。下面每个客户端都能直接导入它,省得你手动输入加密方式和密钥。
Windows#
最简单的选择是 Outline:
- 从 Outline 官网下载 Windows 版 Outline Client 并安装。
- 点击 Add server(添加服务器),把
ss://链接或访问密钥粘贴到 Paste access key here 输入框中并确认。 - 点击 Connect,首次使用时批准弹出的网络权限提示。之后所有流量都会走隧道。
传统选择是 Shadowsocks for Windows:
- 从项目的 GitHub Releases 页面下载最新的 ZIP,解压到一个会长期保留的文件夹。
- 如果 Windows 里没有 .NET Framework 4.8 和 Visual C++ 2015 Redistributable(x86),先安装它们,然后运行
Shadowsocks.exe。 - 右键点击托盘里的纸飞机图标,打开 Servers,选择 Import URL from Clipboard…;也可以在 Edit Servers… 中手动添加服务器。
- 在 System Proxy 下,选择 PAC 只让列表中的网站走隧道,或者选择 Global 让所有流量都走隧道。
macOS#
- 从 GitHub Releases 页面下载
ShadowsocksX-NG.dmg,把应用拖进“应用程序”文件夹。如果第一次打开时 macOS 拒绝运行,请到“系统设置”→“隐私与安全性”中允许它。 - 点击菜单栏图标,选择 Import Server URLs… 或 Scan QR Code From Screen。你也可以在 Server Preferences… 中手动填写参数。
- 打开 Shadowsocks 并选择模式:Auto Mode By PAC、Global Mode 或 Manual Mode。在 Manual Mode 下,只有你自己配置过的应用才会使用隧道。
Linux(以及路由器、服务器和 Docker)#
在 Linux 上请使用 shadowsocks-rust 的 sslocal。你可以通过系统的包管理器安装,也可以用 snap install shadowsocks-rust 或 brew install shadowsocks-rust,或者直接下载发布版的二进制文件。
最快的上手方式是直接把链接交给它:
sslocal -b 127.0.0.1:1080 --server-url "ss://Y2hhY2hh...@203.0.113.10:8388"
如果要长期使用,就把参数写进配置文件:
{
"server": "203.0.113.10",
"server_port": 8388,
"password": "Secret0",
"method": "chacha20-ietf-poly1305",
"local_address": "127.0.0.1",
"local_port": 1080
}
sslocal -c config.json # SOCKS5 proxy on 127.0.0.1:1080
sslocal -c config.json --protocol http # HTTP proxy instead
snap 包还附带一个 sslocal-daemon 服务,可以用 systemd 启用;另外还有官方 Docker 镜像 ghcr.io/shadowsocks/sslocal-rust。
Android#
- 从 GitHub Releases 页面安装 shadowsocks-android。Google Play 版本仍然能用,但自 2021 年起就没有更新过。
- 点击顶部的添加配置图标,选择 Scan QR code、Import from Clipboard 或 Manual Settings。
- 选中配置,点击圆形的连接按钮,然后接受 VPN 请求。
- 在配置设置中设定 Route(例如选择 Bypass LAN 可以让本地地址不走隧道)。如果只想让部分应用使用隧道,就打开 Apps VPN mode 并勾选这些应用。
iPhone 和 iPad#
- 从 App Store 安装 Outline。
- 复制
ss://链接。打开应用时 Outline 会提示你添加它,你也可以点 Add server 手动粘贴。 - 点击 Connect,并允许添加 VPN 配置。
Shadowrocket、Potatso 等基于规则的应用用法相同:粘贴链接或扫描二维码添加服务器,然后打开开关即可。区别在于,它们可以只让选定的网站走隧道,而 Outline 总是让所有流量都走隧道。
路由模式:到底哪些流量走了隧道#
模式决定了哪些流量使用 Shadowsocks。一个“正常工作”的客户端看起来却毫无作用,第二常见的原因就是选错了模式。
| 模式 | 哪些流量走隧道 | 适用场景 |
|---|---|---|
| 手动(Manual) | 只有指向 127.0.0.1:1080 的应用 | 脚本、单个浏览器配置文件、测试 |
| 全局(系统代理) | 所有遵循系统代理设置的应用 | 让整个浏览器都走隧道来上网 |
| PAC / 自动 / 规则 | 只有列表中的域名,其余一律直连 | 本地网站保持直连速度,国外网站走隧道 |
| VPN / TUN | 设备的全部流量,包括 UDP 和忽略代理设置的应用 | 游戏、即时通讯、手机,以及任何“看不到”代理的程序 |
Outline 和移动端应用始终以 VPN 模式运行。传统桌面客户端默认使用系统代理,而 Clash Verge Rev、v2rayN 等多协议应用可以开启 TUN 模式。
在特定应用中使用本地代理#
- Firefox:打开设置,搜索“proxy”,在 Proxy settings 部分点击 Configure proxy。选择 Manual proxy configuration,在 SOCKS Host 中填写
127.0.0.1、端口填1080,选中 SOCKS v5,并确认已勾选 Proxy DNS when using SOCKS v5。新版本默认已经勾选;如果没有勾选,DNS 请求就会绕过隧道。 - Chrome 和 Edge:它们遵循系统代理。如果只想让某一个浏览器走隧道,可以用
--proxy-server="socks5://127.0.0.1:1080"参数启动它。使用 SOCKS5 时,Chrome 总是在代理端解析域名,所以 DNS 不会泄漏。 - 浏览器扩展:代理切换扩展可以只把选定的网站发到
127.0.0.1:1080,并且一键切换规则。原版 Proxy SwitchyOmega 在当前的 Chrome 中已经无法使用,仍在维护的分支是 ZeroOmega。Chrome Web Store 里还有一个冒牌的“SwitchyOmega V3”,安装前请核对发布者。在 Firefox 中,请确认扩展的远程 DNS 选项已开启。 - 命令行:使用
curl --socks5-hostname 127.0.0.1:1080 …,或者设置ALL_PROXY=socks5h://127.0.0.1:1080。很多工具只认 HTTP 代理,这时可以加上--protocol http运行sslocal。 - Git:运行
git config --global http.proxy socks5h://127.0.0.1:1080。
socks5h 里的 h 很关键,它告诉工具通过代理解析域名,而不是用你本地的 DNS。
检查是否真的生效#
绿色图标只说明客户端启动了。想知道流量从哪里出去,运行一条命令就够了:
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
它输出的应该是你的 Shadowsocks 服务器的 IP 地址,而不是你自己的。如果是 VPN 模式,就不加代理参数,直接运行 curl https://ifconfig.me。之后再在浏览器里打开一个 DNS 泄漏测试,列出的 DNS 服务器应该属于服务器所在的网络或某个公共解析服务,而不是你家里的网络运营商。
插件,以及 2026 年 Shadowsocks 有多容易被识别#
插件#
Shadowsocks 可以把流量交给插件,用另一种传输方式包裹起来,这种插件机制由 SIP003 标准定义。插件在两端同时运行,所以客户端需要和服务器相同的插件,设置也必须一致(对 v2ray-plugin 来说,就是相同的主机、路径和 TLS 选项)。同一时间只能运行一个插件,而且插件只承载 TCP 流量。
| 插件 | 作用 | 说明 |
|---|---|---|
| v2ray-plugin | 用 WebSocket 包裹流量,可选 TLS | 可以放在 CDN 或 443 端口上的普通 Web 服务器后面 |
| kcptun | 通过一种为高丢包线路优化的 UDP 协议发送流量 | 对不稳定的移动网络或远距离连接有帮助,代价是更耗带宽 |
| simple-obfs | 把流量伪装成普通的 HTTP 或 TLS | 已弃用;请改用 v2ray-plugin |
| Cloak | 让服务器在主动探测面前看起来像普通 HTTPS 网站 | 需要单独配置客户端和服务器 |
Outline 和许多 iOS 应用无法运行插件。如果你的服务器用了插件,请从上表中选一个插件列为“支持”的客户端,或者选一个内置该插件的多协议应用。
Shadowsocks 能被识别出来吗?#
能,装备精良的网络过滤系统可以做到。Shadowsocks 没有明文握手,第一个数据包里装的就已经是加密数据,所以整条数据流看起来就像随机字节。这种设计恰恰也是它的弱点。2021 年 11 月,有限制地区的过滤系统开始丢弃第一个数据包看起来“太随机”的连接。
来自美国多所大学的研究团队在 USENIX Security 2023 的一篇论文中描述了其中的原理。该系统对第一个数据包套用一些简单规则,比如可打印字符所占的比例,并且只检查大约四分之一的连接。作者估计,即便如此,它仍可能误伤约 0.6% 的正常互联网流量。作为应对,shadowsocks-rust 在 2022 年初加入了可配置的载荷前缀,Outline 也在同年晚些时候为客户端加入了类似的“prefix”选项。
落到实际使用上,情况是这样的:
- 在普通网络中,比如酒店和咖啡馆的 Wi-Fi、公司防火墙或出差时的网络,使用现代 AEAD 或 2022 加密方式的普通 Shadowsocks 就能很好地工作。
- 在有限制的地区,没有哪种协议能永远保持可用。如今,模仿真实 TLS 流量的协议,比如搭配 Reality 的 VLESS 或 Trojan,往往能撑得更久;用多协议客户端的话,不必重装任何东西就能切换。
- 从隐私角度看,要记住 Shadowsocks 没有前向保密(forward secrecy),2022 版也一样。任何人只要录下你的流量,日后又拿到了密钥,就能解密这些流量。所以请定期更换密钥,也不要到处分享链接。
故障排查#
| 症状 | 可能原因 | 解决方法 |
|---|---|---|
| 显示已连接,但什么网站都打不开 | 加密方式或密码与服务器不一致 | 不要手动输入参数,重新导入 ss:// 链接,或解码后逐项对比 |
| 连接超时 | 服务器宕机、端口错误,或该端口在你的网络中被关闭 | 确认服务器正在运行,并换一个端口试试,比如 443 |
| 浏览器能用,其他应用不行 | 这些应用忽略系统代理 | 切换到 VPN/TUN 模式,或在应用内单独设置代理 |
| 网站仍然显示你的真实国家 | DNS 或流量绕过了隧道 | 使用 socks5h,在 Firefox 中勾选“Proxy DNS”,或切换到 VPN 模式 |
| 使用 2022 加密方式时所有连接都失败 | 密钥不是 16 或 32 字节的有效 Base64,或设备时钟偏差超过 30 秒 | 用 openssl rand -base64 32 重新生成密钥(aes-128 用 16),并同步时钟 |
| 出现“Unsupported method”错误 | 客户端不认识这种加密方式 | 更新客户端,或两端都改用 chacha20-ietf-poly1305 |
| 无法连接使用插件的服务器 | 客户端没有插件,或插件设置与服务器不同 | 安装相同的插件并保持主机、路径和 TLS 设置一致,或换用支持插件的客户端 |
| 能用几分钟,然后就断了 | 网络中的过滤或限速 | 试试插件、换个端口,或改用基于 TLS 的协议 |
| 速度慢 | 服务器太远、VPS 过载,或移动网络丢包严重 | 选更近的服务器,在不稳定的连接上试试 kcptun |
Shadowsocks vs SOCKS5 代理 vs VPN#
这三者解决的是不同的问题,很多人却选错了。
| Shadowsocks | SOCKS5 代理 | VPN(WireGuard、OpenVPN) | |
|---|---|---|---|
| 到服务器的加密 | 有 | 没有;流量和登录信息在线路上都是可见的 | 有 |
| 外观特征 | 随机字节,没有握手 | 可识别的代理握手 | 可识别的 VPN 握手 |
| 覆盖范围 | 使用本地代理的应用,TUN 模式下为整台设备 | 你配置过的应用 | 整台设备 |
| 典型部署 | 几个人共用的一台私人服务器 | 服务商提供的大量 IP | 一台服务器或服务商的网络 |
| 最适合 | 受过滤的网络和有限制的地区 | 数据抓取(scraping)、自动化、多账号操作、地理位置测试 | 在不可信网络上保护日常隐私 |
Shadowsocks 给你的是一条难以被发现的加密隧道,但出口地址只有一个。数据采集和自动化需要的恰好相反:大量出口 IP,同时不必承担加密开销。做这类工作,SOCKS5 代理更合适。如果你只是想在公共 Wi-Fi 上保护整台设备,那么用 FineVPN 这样的 VPN,要比自己搭 Shadowsocks 服务器简单得多。
最好用的 Shadowsocks 客户端是哪个?
对大多数人来说是 Outline,因为它免费、全平台可用,只需粘贴一个链接。在 Android 上,shadowsocks-android 提供更多控制选项;在 Linux 和路由器上,通常选择 shadowsocks-rust 里的 sslocal。
Windows 上最好用的 Shadowsocks 客户端是哪个?
如果只是想连上,用 Outline 就行。如果需要分流规则、插件或 Shadowsocks 2022 加密方式,请用 Clash Verge Rev 或 v2rayN。经典的 Shadowsocks for Windows 仍然能用,但它的最后一个版本发布于 2022 年 2 月。
iPhone 上最好用的 Shadowsocks 客户端是哪个?
Outline 免费,对大多数人来说已经够用。免费的 sing-box MT 应用支持 Shadowsocks 2022 加密方式,而 Potatso、Shadowrocket、Stash 和 Surge 还能按网站设置规则。
Shadowsocks 客户端是免费的吗?
官方客户端和 Outline 都是免费开源的。不过你仍然需要一台服务器,可以是自己的 VPS,也可以是服务商提供的。
Shadowsocks 是 VPN 吗?
严格来说不是,它是一种加密代理。不过 Outline 和大多数移动端应用会通过系统的 VPN 接口来运行它,所以在这些设备上,它的表现和 VPN 一样。
Shadowsocks 客户端能配合普通的 SOCKS5 代理使用吗?
不能。客户端和你的应用之间用 SOCKS5 通信,但另一端必须是 Shadowsocks 服务器。
Shadowsocks 应该选哪种加密方式?
如果两端都支持,就选 Shadowsocks 2022 加密方式;否则选 chacha20-ietf-poly1305 或 aes-256-gcm。避免使用 aes-256-cfb、rc4-md5 这类旧式流加密方式。
使用 Shadowsocks 合法吗?
在大多数国家,使用加密代理是合法的。也有一些国家限制用来绕过地区限制的工具,所以请先了解你所在地的规定。
2026 年 Shadowsocks 还安全吗?
只要使用现代加密方式,它仍然是一条可靠的加密隧道。但它并不能完全躲过先进的网络过滤系统,也没有前向保密(forward secrecy),所以请妥善保管密钥并定期更换。
Outline 能连接所有 Shadowsocks 服务器吗?
只要服务器使用传统 AEAD 加密方式且不带插件,Outline 都能连接。需要插件或 Shadowsocks 2022 加密方式的服务器,则要换用 shadowsocks-android 或 sing-box 等其他客户端。