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 握手时间,不是实际下载速度。选节点时有三个比延迟更重要的检查点:
- 协议是否对你的网络环境友好。 Hysteria2 / TUIC 走 UDP,在部分企业 Wi-Fi 或校园网里 UDP 被 QoS 限速甚至直接丢包——延迟测试正常(TCP 测的),实际用起来速率跑不动。确认你的 Wi-Fi 环境不限制 UDP 之后再选这类协议节点。
- 端口是否被运营商屏蔽。 常见端口 443(TLS)和 8443 存活率最高。非标端口(如 12345、50000)在某些运营商的下行链路上可能被识别后丢包。同一个节点换端口试试,延迟一样但连通性可能完全不一样。
- 节点地区和你实际访问的服务是否地理匹配。 看 YouTube 选日本/新加坡/香港节点;访问 ChatGPT 选美国/日本。延迟 30ms 的香港节点访问 OpenAI API 可能还不如延迟 120ms 的美国节点快——因为 OpenAI 在香港没有边缘节点,所有流量要跨太平洋到美西。
跑代理之后如果你还需要稳定的出口 IP(固定 IP 不做轮换,适合 ChatGPT API 和白名单 IP 管理场景),配套订阅线路可以覆盖这个需求。
相关阅读
来源与时间
本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。