NEW! |一次 API 调用即可获得干净数据,无需自行抓取。免费领取 10,000 个令牌 →

Shadowsocks 客户端:2026 年如何选择、设置和使用

2026 年在 Windows、macOS、Linux、Android 和 iOS 上该用哪个 Shadowsocks 客户端,如何导入 ss:// 链接、选择加密方式并确认隧道已生效。

发布于2023年6月3日
已更新2026年10月20日
阅读时间12 分钟

Shadowsocks 客户端是装在你设备上的应用,它负责连接 Shadowsocks 服务器,并让你的流量通过加密隧道传输。只要有人给了你一个 ss:// 链接、一个二维码或一组服务器参数,你就需要一个客户端。而且选哪个应用比看上去更重要,因为旧教程推荐的客户端有一半已经好几年没更新了,有些甚至根本连不上新版服务器。

对大多数人来说,答案很简单。Outline 是各个平台上最容易上手的免费选择;想在 Android 上精细控制,就用 shadowsocks-android;Linux、服务器和路由器则交给 shadowsocks-rust 里的 sslocal。下面我们先看看 2026 年还有哪些客户端在维护,再把 ss:// 链接拆开讲清楚,然后逐个平台完成设置。最后还要确认你的流量确实是从服务器出去的,因为单凭一个绿色的“已连接”图标,证明不了这一点。

数字城市背景上的深色盾牌徽标,配有 Shadowsocks Client 字样

Shadowsocks 客户端实际上做了什么#

Shadowsocks 是一种加密代理协议。它在 2012 年问世,最初是为了访问在部分地区无法打开的网站,如今已经是受限网络中部署最广泛的协议之一。一套方案总是分成两半:一台位于不受限网络中的服务器,以及你设备上的客户端。

客户端负责三件事:

  1. 打开本地代理。客户端在你自己的电脑上监听,通常是 127.0.0.1:1080 上的 SOCKS5 代理。有些客户端还会同时开启 HTTP 代理或作用于整个系统的 VPN 接口。
  2. 加密并转发。你的应用发往这个本地代理的每个连接,都会先用共享密钥加密,再转发给 Shadowsocks 服务器。
  3. 决定哪些流量走隧道。根据模式不同,可以是全部流量、只有匹配规则的流量,或者只有你指定的应用。

在另一端,服务器解密流量,再与网站建立真正的连接。因此网站看到的是服务器的 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 ClientWindows、macOS、Linux、Android、iOS、ChromeOS不支持,仅支持传统加密方式不支持积极开发中;自 2026 年 1 月起由非营利组织 Outline Foundation 运营
shadowsocks-androidAndroid支持支持,以独立应用形式安装在 GitHub 上持续维护(v5.3.4);Google Play 版本自 2021 年起未再更新
ShadowsocksX-NGmacOS不支持支持最后一个版本是 2024 年 10 月的 v1.10.3;可在 Apple Silicon 上原生运行
shadowsocks-rust (sslocal)Linux、macOS、Windows、路由器支持支持参考实现,定期发布新版本(v1.25.0)
Shadowsocks for WindowsWindows不支持支持仍然能用,但最后一个版本(4.4.1.0)发布于 2022 年 2 月
shadowsocks-libev(现名 shadowsocks-c)Linux、路由器正式版本中尚未支持支持以新名称恢复开发;2026 年 2 月发布了 v3.3.6
shadowsocks-qt5Linux、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.10IP 地址或域名
端口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-poly1305Shadowsocks 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:

  1. 从 Outline 官网下载 Windows 版 Outline Client 并安装。
  2. 点击 Add server(添加服务器),把 ss:// 链接或访问密钥粘贴到 Paste access key here 输入框中并确认。
  3. 点击 Connect,首次使用时批准弹出的网络权限提示。之后所有流量都会走隧道。

传统选择是 Shadowsocks for Windows:

  1. 从项目的 GitHub Releases 页面下载最新的 ZIP,解压到一个会长期保留的文件夹。
  2. 如果 Windows 里没有 .NET Framework 4.8 和 Visual C++ 2015 Redistributable(x86),先安装它们,然后运行 Shadowsocks.exe。
  3. 右键点击托盘里的纸飞机图标,打开 Servers,选择 Import URL from Clipboard…;也可以在 Edit Servers… 中手动添加服务器。
  4. 在 System Proxy 下,选择 PAC 只让列表中的网站走隧道,或者选择 Global 让所有流量都走隧道。

macOS#

  1. 从 GitHub Releases 页面下载 ShadowsocksX-NG.dmg,把应用拖进“应用程序”文件夹。如果第一次打开时 macOS 拒绝运行,请到“系统设置”→“隐私与安全性”中允许它。
  2. 点击菜单栏图标,选择 Import Server URLs… 或 Scan QR Code From Screen。你也可以在 Server Preferences… 中手动填写参数。
  3. 打开 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#

  1. 从 GitHub Releases 页面安装 shadowsocks-android。Google Play 版本仍然能用,但自 2021 年起就没有更新过。
  2. 点击顶部的添加配置图标,选择 Scan QR code、Import from Clipboard 或 Manual Settings。
  3. 选中配置,点击圆形的连接按钮,然后接受 VPN 请求。
  4. 在配置设置中设定 Route(例如选择 Bypass LAN 可以让本地地址不走隧道)。如果只想让部分应用使用隧道,就打开 Apps VPN mode 并勾选这些应用。

iPhone 和 iPad#

  1. 从 App Store 安装 Outline。
  2. 复制 ss:// 链接。打开应用时 Outline 会提示你添加它,你也可以点 Add server 手动粘贴。
  3. 点击 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#

这三者解决的是不同的问题,很多人却选错了。

ShadowsocksSOCKS5 代理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 等其他客户端。