缥缈墟

Shadowrocket 规则不生效怎么办?按模式、配置和请求记录排查

更新于 2026-11-01 · piaomiaoxu.online

简答:Shadowrocket 规则不生效,最先检查 Home 中的 Global Routing 是否设置为 Config,以及 Config 页面里是否真正启用了你正在修改的配置文件。然后用请求记录验证目标域名是否经过客户端,再用 Proxy 模式做对照:Proxy 能访问而 Config 不能,通常应优先检查规则、策略名称、DNS 或旧连接,而不是反复更换节点。

定义:Shadowrocket 规则分流,是根据当前启用配置中的匹配条件,把请求交给代理、直连或拒绝策略处理的过程。

先做这 3 步:大多数规则失效都能在这里定位

本文是缥缈墟用户第三方参考,不是相关应用的官方页面。当前可核实的 App Store 产品说明显示,该应用支持按域名、域名后缀、域名关键字、CIDR IP 段和 GeoIP 等条件配置规则,也支持记录并显示 iOS 设备的 HTTP、HTTPS 和 DNS 请求;但 App Store 页面没有完整说明每个版本的菜单布局、规则顺序和所有策略字段,因此下文会把“已核实能力”和“常见配置经验”分开说明。查看 App Store 产品说明

检查位置你要确认什么结果怎么判断
Home → Global Routing是否选择了 Config 或界面中的“配置”模式不是 Config 时,单独修改规则通常不会按预期影响分流。
Config目标配置是否已选中或启用,而不是只导入后停留在列表中修改了未使用的文件,访问结果不会变化。
请求记录目标域名是否出现在 HTTP、HTTPS 或 DNS 请求记录中看不到请求,先排查客户端连接、应用是否绕过系统代理或域名是否写错。
Proxy 对照同一网址在 Proxy 模式下是否可以访问Proxy 可以、Config 不可以,优先检查规则匹配、策略和 DNS。

先不要同时改规则、DNS、节点和系统网络。每轮只改一个变量,并用同一个域名重新发起连接。

按顺序排查:从 Global Routing 到真正的规则命中

  1. 确认当前路由模式。打开 Home,找到 Global Routing。若目标是按域名或地址分流,应先选择 Config;如果当前是 Proxy 或 Direct,规则文件可能没有按照你预期参与处理。界面名称可能随版本变化,以设备当前显示为准。
  2. 确认当前配置文件。打开 Config,找到你准备检查的配置。不要把“已经导入”当成“正在使用”:列表中存在某个文件,不代表当前连接一定采用它。先记录文件名称,再打开内容或规则列表,确认你修改的正是当前配置。
  3. 分清服务器订阅和规则配置。服务器订阅通常用于提供服务器条目;规则文件或配置中的规则部分才可能决定域名、IP 或其他请求条件如何分流。不同订阅格式可能把两者合并,也可能完全分开,因此不能仅凭“更新订阅成功”判断规则已经更新。
  4. 检查策略名称。常见动作包括 PROXY、DIRECT 和 REJECT,但你的配置也可能使用策略组或自定义名称。规则引用的策略必须在当前配置中存在;如果规则写的是一个不存在的名称,即使匹配条件正确,也可能无法按预期连接。
  5. 检查匹配类型。DOMAIN适合精确域名,DOMAIN-SUFFIX适合域名及其子域名,DOMAIN-KEYWORD是关键字匹配,IP-CIDR和IP-CIDR6分别面向 IPv4 与 IPv6 地址范围。App Store 产品说明明确列出了这些规则能力,但具体字段格式仍应以当前配置格式和应用界面为准。核对应用支持的规则类型
  6. 再看顺序和兜底。在许多常见配置示例中,规则按照文件顺序检查,较具体的条件放在较宽泛的条件之前,FINAL通常作为未命中请求的兜底项放在后面。这个结论属于配置实践,不应当当作 App Store 对所有版本界面的完整保证。社区配置示例也通常采用“具体规则在前、宽泛规则和 FINAL 在后”的组织方式。查看一个公开配置示例

结构示例,不可直接复制:

[Rule]
DOMAIN-SUFFIX,替换为你的域名,替换为实际策略
DOMAIN,替换为精确域名,替换为实际策略
FINAL,替换为默认策略

上面的占位符必须替换;策略名称必须与当前配置一致;修改前请备份原配置。不要把示例中的域名、策略名或 FINAL 直接当成你的真实配置。

用请求记录验证:不要只看网页能不能打开

App Store 产品说明明确提到可以记录并显示 HTTP、HTTPS 和 DNS 请求,因此请求记录应作为排查规则的必经检查点之一。它能帮助你先回答“请求有没有经过客户端”,但不能仅凭一条记录就断定服务器一定可用或规则一定成功。

  1. 打开 Shadowrocket 的请求记录或日志入口,具体名称以当前版本界面为准。
  2. 清除或记下旧记录,然后关闭目标网页或应用,重新发起一次请求。
  3. 搜索目标域名的完整主机名,例如网页实际使用的图片、接口或登录域名,而不要只看首页域名。
  4. 如果完全看不到请求,先检查连接开关、系统 VPN 权限、应用是否使用自己的网络通道,以及域名是否写错。
  5. 如果能看到请求,但访问仍失败,记录目标域名、请求类型、时间和失败现象,再进入 Proxy 对照测试。

“能看到请求”只说明请求进入了客户端的记录范围;“命中代理策略”与“代理服务器成功建立连接”是两个不同问题。排查时要把规则选择、DNS 解析、节点握手和网页打开分别记录。

Proxy 与 Config 对照:快速区分规则问题和节点问题

对照结果优先怀疑下一步
Config 失败,Proxy 成功配置未启用、规则未匹配、策略名称错误、FINAL 过早或 DNS 分流差异重新确认当前配置、规则类型、顺序和请求记录。
Config 和 Proxy 都失败服务器条目、认证、网络环境、DNS 或节点本身先测试一个明确可用的服务器,再检查 DNS 与网络切换。
Config 可访问但走错路线域名写法不准确、宽泛规则抢先匹配、策略组引用不符合预期把目标域名拆成精确域名和后缀规则,逐条验证。
只有旧页面仍表现异常旧连接、缓存、应用保持的长连接或旧 DNS 结果关闭目标应用或网页,断开并重新开启连接,再测试同一地址。

测试完成后记得恢复原来的 Global Routing 设置。Proxy 模式适合做对照,不代表规则已经正确;Direct 模式也只能说明当前网络的直连表现,不能证明节点或规则没有问题。

DNS、IPv6 和应用绕过:规则正确也可能看起来像失效

  • DNS 解析差异:域名规则和 IP 规则依赖的信息不同。若你写的是 IP-CIDR,但请求实际使用的是域名,或 DNS 解析结果发生变化,可能出现“规则没命中”的表象。
  • IPv6 路径:设备、网络和配置同时启用 IPv6 时,目标可能优先获得 IPv6 地址。若只写了 IPv4 范围,不能据此断定 IPv6 请求也会按同一规则处理。
  • 应用自身网络机制:部分应用可能使用独立连接、内置 DNS 或其他网络通道。此时浏览器请求能被记录,不代表每个应用的所有请求都一定可见。
  • HTTPS 细节:只看主域名可能遗漏接口、CDN、登录和静态资源域名。若首页能打开但登录或图片失败,应在请求记录中找出实际失败的主机名,再为该主机设计规则。

处理这些情况时,先保留原配置,暂时只改一个 DNS 或 IPv6 相关选项,重新连接并测试同一目标。不要在没有记录结果的情况下连续切换多个解析方案。

恢复方法:改乱配置后如何回滚

  1. 在继续修改前,导出或复制当前配置,保留原始文件。
  2. 撤销最近一次规则改动,优先恢复规则顺序和策略名称。
  3. 将 Global Routing 临时恢复到之前的模式,并关闭后重新开启连接。
  4. 使用同一个目标域名测试,不要同时更换服务器、DNS 和网络。
  5. 如果恢复原配置后仍异常,再单独测试节点连接和系统网络。

如果问题只在某个版本或某台设备出现,记录设备系统版本、应用版本、当前网络、配置文件名称和请求记录时间;不要根据单次成功访问就判断长期稳定。

常见问题

1. Global Routing 已经是 Config,为什么规则还是不生效?

继续确认 Config 页面中是否真正启用了目标文件,以及你修改的文件是否就是当前文件。之后检查规则策略名称、域名拼写和请求记录。Config 只是让连接按照配置处理,不等于每条规则都一定匹配。

2. 服务器订阅更新成功,为什么规则没有变化?

服务器订阅和规则配置可能是两个独立对象。更新服务器条目不一定会更新配置中的 Rule 部分;应分别查看订阅内容、当前配置和规则文件的更新时间或内容。

3. FINAL 一定要放在最后吗?

在常见规则配置中,FINAL 通常用于处理前面没有命中的请求,因此通常放在具体规则之后。它的实际语法和行为应以当前配置格式为准;如果 FINAL 或其他宽泛规则提前出现,可能让后面的更具体规则失去机会。

4. 能看到请求记录,是不是说明节点没有问题?

不是。请求记录只能说明请求进入了客户端记录范围。还要区分规则选择、DNS 解析、代理握手和目标网站响应;可以用 Proxy 模式对照,并记录相同网址的结果。

5. 需要使用 Test Rule 功能吗?

如果当前版本提供类似功能,可以把它作为可选辅助工具,但不要把它当成必经步骤。更稳妥的必经方案是清理旧记录、重新发起请求,并结合请求记录和 Proxy/Config 对照判断。菜单是否存在、名称是什么,需以当前版本界面为准。

常见问题

Shadowrocket 规则不生效,第一步检查什么?

先打开 Home,确认 Global Routing 为 Config 或“配置”模式,再到 Config 页面确认正在使用的文件就是你修改的文件。

规则匹配了但网页打不开,是规则问题吗?

不一定。规则匹配和代理连接是两层问题;如果 Proxy 和 Config 都失败,应优先检查服务器、DNS、认证和当前网络。

为什么修改规则后必须重新连接?

旧网页、应用长连接或 DNS 缓存可能继续沿用之前的结果。关闭目标应用或网页,断开并重新开启连接后再测试。

DOMAIN 和 DOMAIN-SUFFIX 有什么区别?

DOMAIN 通常用于精确域名,DOMAIN-SUFFIX 通常用于域名及其子域名。具体字段格式应以当前配置文件格式为准。

规则文件和服务器订阅是同一个东西吗?

不一定。服务器订阅可能只提供服务器条目,规则可能位于独立配置或配置文件的规则部分,必须分别确认。

相关阅读

参考资料

  1. App Store:Shadowrocket 产品说明与版本信息
  2. GitHub:公开的 Shadowrocket 配置示例