查看 2026-05-29 10 分钟 入门 4 步

Shadowrocket 新手教程:节点/规则/模块配置 | 冲浪笔记

Shadowrocket 装完后主界面空空荡荡——没有节点列表、没有规则、没有模块。本篇从「右上角 +」开始,顺着添加订阅节点、配置分流规则、导入社区模块三条线,写清每一步的 UI 路径和最容易点错的位置。适合刚花 $2.99 下载完还没连上过的 iPhone 用户。

你花 $2.99 买了 Shadowrocket,下载完打开,看到的是空白主页。右上角一个 +,底部五个标签。没有节点,没有规则,不知道从哪开始。

这篇按顺序走三步:添加订阅拉节点 → 配两条路线规则让国内直连 → 导入社区模块拦截广告。每一步写完 UI 路径和最常见的点错位置。

打开后主界面是空的,从右上角 + 开始

Shadowrocket 刚装完,主页只有三个区域:顶部的连接开关(默认关闭)、中间的空白节点/规则列表、底部的五个标签(首页/配置/日志/设置/关于)。

最常被忽略的事实:Shadowrocket 不加节点也可以打开连接开关,开关会闪一下自动关闭。这不是 bug——没配置任何出站规则时,代理栈启动后找不到可用的下一跳。先去把节点加上,再动连接开关。

主界面的三个入口决定了三种你之后反复操作的东西:

在哪操作管什么你的操作频次
右上角 +添加节点/订阅配置一次,后续只更新
底部「配置」标签分流规则 + 模块配置一次,按需调整
底部「日志」标签查看每一条请求走了什么规则出问题时看

本章写第一个入口:+ 按钮。

关闭连接后节点怎么都测不通?先看 Type 是不是选对了

右上角 + 点开,第一行是 Type,默认值 Local。Shadowrocket 的设计逻辑是:

  • Local:手动填一个节点的所有参数(地址、端口、协议、加密方式),保存后生成一条静态本地节点。没有更新按钮,订阅源换了 IP 你得手改。
  • Subscribe:填一个订阅 URL 和备注名,保存后生成一个订阅条目。点进去有「更新」按钮,每次更新从订阅源重新拉取全部节点。

如果你第一次使用,手里拿到的是一串 https:// 开头的订阅链接,Type 必须选 Subscribe。选 Local 会把订阅链接当成一个 node 的 address 解析,格式不匹配直接报错。

正确的添加流程:

Shadowrocket 首页 → 右上角 +
  → Type → 选 Subscribe(不是 Local)
  → URL → 粘贴完整的订阅链接
  → Alias → 填备注,建议英文
  → 右上角「完成」

完成之后主页出现一条新的订阅条目。但此时本地节点列表还是空的——你只保存了链接,没拉取节点。点进这条订阅条目 → 点顶部的「更新」→ 等详情页底部出现节点数量和更新时间 → 返回主页,本地节点列表出现了。

添加订阅时 Alias 建议用英文或拼音。Shadowrocket 对中文备注在部分 iOS 版本下显示不全,出现「…」截断。

更新后节点数量为 0?先看订阅内容返回了什么

如果更新后详情页底部显示「0 个节点」,点「订阅内容」查看原始返回:

  • <!DOCTYPE html><html> 开头:订阅链接已失效。服务商的后台面板可能换了域名或重置了 token,登录面板重新获取订阅链接。
  • proxies: 开头(Clash YAML):Shadowrocket 能解析大部分 YAML 节点,但加密 YAML(如 Clash Premium 的加密订阅)解析不出。让服务商提供未加密的 base64 订阅。
  • 以长串字母数字开头(base64 编码):格式正常。少数情况下节点列表中混入了非标准字段(如 ssr 类型的非标参数),Shadowrocket 会跳过无法解析的行。找服务商确认订阅格式输出为「通用 base64」。

对应的排查优先级:

订阅内容以什么开头说明什么先做什么
<!DOCTYPE html><html>链接失效,返回网页登面板生成新链接
proxies:Clash YAML,可能加密让服务商改 base64 输出
长串字母数字base64 编码,格式正常检查单行格式是否标准

节点有了但国内 App 变慢?两条规则做分流

节点有了,但这时的 Shadowrocket 默认行为是把所有流量都发到代理——包括你打开微信、刷淘宝、看 B 站。结果可能是:淘宝加载慢因为走了海外节点访问国内 CDN、微信消息延迟、银行 App 检测到异常 IP 拒绝登录。

两步解决:

第一步:GEOIP 分流国内 IP。

Shadowrocket 底部「配置」标签 → 点当前使用的配置文件右侧的 ⓘ → 滑动到「规则」(Rules)区域 → 添加规则:

类型: GEOIP
选项: CN
策略: DIRECT

第二步:兜底规则走代理。

再加一条:

类型: FINAL
策略: PROXY

两条规则在列表中的顺序必须是 GEOIP,CN,DIRECT 在上、FINAL,PROXY 在下。Shadowrocket 从上到下匹配,命中第一条就停止。如果 FINAL 排在上面,所有请求第一步就被发到代理了,GEOIP 规则永远不会生效。

验证这两条规则是否生效——开启连接后:

  • 访问 http://ip.sb → 显示代理节点的出口 IP。
  • 访问 https://www.baidu.com → 速度快,页面顶部「百度一下」正常显示。再访问 http://ip.sb → 如果百度走了代理,ip.sb 会显示代理 IP(说明 GEOIP 没命中百度的 CDN IP)——这时手动加 DOMAIN-SUFFIX,baidu.com,DIRECT 排在 GEOIP 规则前面做精确兜底。

模块(Module)是什么:不用手写规则就能拦截广告

Shadowrocket 的模块是一个 .sgmodule 文本文件,里面声明了一组分流规则、MITM hostname 和 URL Rewrite 规则。一个广告过滤模块通常包含:几千条广告域名 DOMAIN-SUFFIX 匹配 → REJECT、对应的 MITM hostname 声明(让 HTTPS 广告也能被拦截)、以及 reject-200 / reject-img 的 Rewrite 规则。

模块的加载路径:

Shadowrocket → 配置 → 点配置文件 ⓘ → 滑动到「模块」→ 添加模块
  → 输入 .sgmodule 的直链 URL → 完成

常用模块源(引用自 deezertidal/shadowrocket-rules 社区维护):

# 广告过滤(通用)
https://raw.githubusercontent.com/deezertidal/shadowrocket-rules/main/modules/ad.sgmodule

# 隐私追踪拦截
https://raw.githubusercontent.com/deezertidal/shadowrocket-rules/main/modules/privacy.sgmodule

# YouTube 去广告
https://raw.githubusercontent.com/deezertidal/shadowrocket-rules/main/modules/YouTube.sgmodule

导入后模块自动加载,规则以 %APPEND% 方式追加到当前配置文件,不会覆盖你手写的规则。模块的更新频率取决于 GitHub 上源文件的维护节奏——打开模块条目可以手动点更新拉最新版规则。

模块里的 MITM hostname 声明只在「HTTPS 解密」开关打开时才生效。如果你只导入了广告模块但没有安装 MITM 证书,HTTP 明文广告请求能拦截,HTTPS 广告请求因为加密读不到域名,模块规则命中不了。MITM 证书安装参考《iOS Shadowrocket MITM 证书安装与 HTTPS 解密配置(2026)》。

节点延迟正常但网页打不开?看日志里走了哪条规则

这种情况日志能直接告诉你答案。Shadowrocket 底部「日志」标签会记录每一条网络请求的:

  • 发起 App(如 com.apple.WebKit.Networking)
  • 请求域名
  • 匹配到的规则(DIRECT / PROXY / REJECT)
  • 连接结果(200、timeout、connection refused)

看到延迟正常但打不开网页时,日志里通常出现两种情况:

情况一:请求被 REJECT 了。 日志中域名后面的匹配结果显示 REJECT。确认是不是导入的广告模块误拦了——在模块编辑页暂停该模块,刷新网页看是否恢复。

情况二:走了 DIRECT 但实际不该走。 日志显示规则匹配为 DIRECT,但你的期望是走代理。回到规则列表检查:是不是忘记添加对应域名的规则,导致被 FINAL 兜底前被某条 GEOIP,CN 或其他直连规则提前命中了。

# 日志举例:百度 CDN 节点 IP 被 GEOIP 判定为非中国 → 走代理
# 手动加 DOMAIN-SUFFIX,baidu.com,DIRECT 排在 GEOIP 之前即可
[Rule] baidu.com -> GEOIP,CN (not matched) -> FINAL -> PROXY

一种快速定位手法:在日志界面顶部的搜索框输入要排查的域名关键词,只看匹配该域名的请求行。比上下翻日志快得多。

选节点只比延迟数字不够——端口和协议也影响连通

Shadowrocket 节点列表里每条节点右侧有延迟测试按钮(闪电图标)。延迟数字是 TCP 握手时间,不是实际下载速度。选节点时有三个比延迟更重要的检查点:

  1. 协议是否对你的网络环境友好。 Hysteria2 / TUIC 走 UDP,在部分企业 Wi-Fi 或校园网里 UDP 被 QoS 限速甚至直接丢包——延迟测试正常(TCP 测的),实际用起来速率跑不动。确认你的 Wi-Fi 环境不限制 UDP 之后再选这类协议节点。
  2. 端口是否被运营商屏蔽。 常见端口 443(TLS)和 8443 存活率最高。非标端口(如 12345、50000)在某些运营商的下行链路上可能被识别后丢包。同一个节点换端口试试,延迟一样但连通性可能完全不一样。
  3. 节点地区和你实际访问的服务是否地理匹配。 看 YouTube 选日本/新加坡/香港节点;访问 ChatGPT 选美国/日本。延迟 30ms 的香港节点访问 OpenAI API 可能还不如延迟 120ms 的美国节点快——因为 OpenAI 在香港没有边缘节点,所有流量要跨太平洋到美西。

跑代理之后如果你还需要稳定的出口 IP(固定 IP 不做轮换,适合 ChatGPT API 和白名单 IP 管理场景),配套订阅线路可以覆盖这个需求。

相关阅读

来源与时间

本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。

看更多教程:教程库 · 看客户端:客户端目录 · 看下载入口:下载中心