Shadowrocket规则设置详解:从基础配置到高级分流

在 Shadowrocket 中,规则(Rules)是决定流量走向的核心机制。许多用户配置完订阅后,发现国内网站加载缓慢、视频无法播放或连接不稳定,往往不是节点本身的问题,而是规则设置不当导致流量被错误地全局代理或漏网。

本文将针对 Shadowrocket 的规则配置逻辑,详细拆解如何设置规则以实现高效分流。重点涵盖规则类型的区别、手动添加逻辑、常见场景的配置方法以及验证手段,帮助通用用户建立正确的分流思维。

规则引擎的工作逻辑与核心概念

Shadowrocket 的规则引擎采用“自上而下”的匹配机制。当网络请求发起时,客户端会依次检查规则列表,一旦匹配成功,即执行对应的动作(如 Proxy、Direct 或 Reject),后续规则不再对该请求生效。因此,规则的排列顺序至关重要。

理解规则配置前,需明确三个核心概念:
匹配字段:规则依据什么来判断?通常是域名(Domain)、IP 地址、端口(Port)或 URL 路径。对于普通用户,最常用的是域名匹配。
动作类型
* Proxy:流量走代理节点。用于访问被屏蔽或需要加速的外部服务。
* Direct:流量直接连接本地网络。用于访问国内网站、局域网设备或不需要代理的服务,以节省节点带宽并降低延迟。
* Reject:直接丢弃连接。用于屏蔽广告、追踪器或恶意网站。
* FALLBACK:通常用于特殊场景,如某些应用层协议的分流,普通用户较少涉及。
默认策略(Default Policy):当请求不匹配列表中任何一条规则时,流量如何处理?通常建议设置为 Proxy(默认全局代理)或 Direct(默认直连,需手动添加代理规则)。对于大多数中国用户,推荐默认策略为 Direct,然后通过显式规则将需要代理的流量指向 Proxy,这样可以减少因规则遗漏导致的连接失败。

规则文件的选择与导入

Shadowrocket 允许用户导入外部规则文件,也可以手动编辑内置规则。

使用外部规则文件

许多开源社区提供维护良好的规则集(如 GFWList、ChinaList 等)。这些文件通常以 `.txt` 或 `.list` 格式存在。
• 在 Shadowrocket 主界面,点击左侧菜单的 配置(Config)
• 点击右上角的 设置(齿轮图标)管理(Manage)
• 找到 规则(Rules) 选项,选择 管理规则(Manage Rules)编辑规则(Edit Rules)
• 选择 导入(Import)从 URL 加载
• 输入规则文件的 URL 地址。确保 URL 有效且为纯文本格式。

注意事项
* 导入后务必检查规则数量。如果规则数量异常少(如少于 500 条),可能文件已失效。
* 导入的规则会覆盖原有规则,建议先备份当前配置。
* 部分规则文件可能包含过时的域名,需定期更新。

手动编辑规则

对于需要自定义分流的场景,手动编辑更为灵活。
• 进入 编辑规则 界面。
• 每一行代表一条规则,格式通常为:`类型, 匹配内容, 动作`。
• 例如:`DOMAIN, google.com, PROXY` 表示域名包含 “google.com” 的请求走代理。
• 修改后点击 保存应用配置

常见分流场景的规则配置

不同的使用需求对应不同的规则配置策略。以下是几种典型场景的设置方法。

1. 国内网站直连,国外网站代理

这是最基础的需求,目的是加速国内访问并节省代理带宽。

* 逻辑:优先匹配国内常见域名(Direct),其次匹配被屏蔽域名(Proxy),最后默认直连或代理。
* 配置步骤
• 确保默认策略为 Direct
• 添加一条规则:`DOMAIN-SUFFIX, cn, DIRECT`(将 .cn 域名直连)。
• 添加一条规则:`DOMAIN-KEYWORD, google, PROXY`(包含 google 的域名走代理)。
• 添加一条规则:`DOMAIN-SUFFIX, facebook.com, PROXY`(具体域名走代理)。
关键点:必须保留一条兜底规则。如果默认策略是 Direct,则无需兜底;如果默认策略是 Proxy,则需添加 `DOMAIN, final, DIRECT` 或类似规则,但更推荐默认策略设为 Direct,并通过显式规则添加所有需要代理的域名。

原因:如果默认策略为 Proxy,且未正确配置国内直连规则,所有国内流量都会经过代理服务器,导致速度极慢甚至断开。

2. 屏蔽广告与追踪器

通过 Reject 规则屏蔽恶意广告,提升浏览体验并节省流量。

* 逻辑:匹配常见的广告域名或图片后缀,执行 Reject 动作。
* 配置步骤
• 在规则列表顶部添加广告拦截规则(优先级最高)。
• 示例规则:
* `DOMAIN-SUFFIX, ad.com, REJECT`
* `DOMAIN-KEYWORD, tracker, REJECT`
* `DOMAIN-SUFFIX, doubleclick.net, REJECT`
• 确保这些规则位于所有 Proxy 和 Direct 规则之前。

原因:规则引擎自上而下匹配。如果广告规则放在后面,请求可能先被 Proxy 或 Direct 处理,导致广告加载失败但未被正确拦截,甚至可能泄露用户行为数据。

3. 特定应用或域名不走代理(反代)

某些应用(如银行 App、游戏、视频播放器)在代理模式下会出现验证码失败、延迟高或无法登录的问题。

* 逻辑:将这些特定域名强制设为 Direct。
* 配置步骤
• 找到问题应用的域名(可通过浏览器或抓包工具获取)。
• 在规则列表中添加:`DOMAIN-SUFFIX, example-bank.com, DIRECT`。
• 将该规则移动到 Proxy 规则之前。

原因:代理服务器可能更改了 IP 地址或 TLS 指纹,导致银行或游戏服务器拒绝连接。强制直连可确保使用本地真实 IP。

4. 绕过局域网访问限制

在家庭或公司网络中,可能需要访问局域网内的设备(如 NAS、打印机),但代理规则可能将其错误地指向远程服务器。

* 逻辑:添加局域网 IP 段直连规则。
* 配置步骤
• 添加 IP 段规则:`IP-CIDR, 192.168.0.0/16, DIRECT`
• 添加 `IP-CIDR, 10.0.0.0/8, DIRECT`
• 添加 `IP-CIDR, 172.16.0.0/12, DIRECT`
• 将这些规则放在 Proxy 规则之前。

原因:Shadowrocket 默认可能将所有流量都走代理,包括局域网请求。明确指定局域网 IP 段直连可确保本地设备正常通信。

规则调试与验证方法

配置规则后,必须验证其是否生效。Shadowrocket 提供多种调试工具。

1. 使用“日志”功能

* 在主界面点击 日志(Log)
* 开启 详细日志DNS 日志
* 访问一个已知域名(如 `www.baidu.com` 和 `www.google.com`)。
* 观察日志输出:
* 如果 `www.baidu.com` 显示 `DIRECT`,则直连规则生效。
* 如果 `www.google.com` 显示 `PROXY` 且连接成功,则代理规则生效。
* 如果显示 `FAIL` 或 `TIMEOUT`,则规则可能未匹配或节点问题。

2. 使用“测试页面”

* Shadowrocket 内置了一些测试页面(如访问 ` 或 `。
* 在浏览器中访问这些页面,查看返回的 IP 地址。
* 如果 IP 地址与代理节点 IP 一致,说明代理生效。
* 如果 IP 地址与本地 IP 一致,说明直连生效。

3. 检查 DNS 解析

* 在 设置 > DNS 中,查看 DNS 服务器是否配置正确。
* 如果 DNS 走代理,可能导致国内网站解析到国外 IP,造成访问失败。
* 建议将国内 DNS(如 `223.5.5.5`)设置为直连,国外 DNS 设置为代理。

常见错误与排查

1. 规则顺序错误

* 现象:国内网站走代理,速度慢;或国外网站直连,无法访问。
* 原因:`DIRECT` 规则放在了 `PROXY` 规则之后,或反之。
* 解决:检查规则顺序。通常顺序为:`Reject` > `Direct`(国内/局域网) > `Proxy`(国外) > `FALLBACK`。

2. 规则匹配不精确

* 现象:部分子域名未被正确分流。
* 原因:使用了 `DOMAIN` 而非 `DOMAIN-SUFFIX` 或 `DOMAIN-KEYWORD`。
* `DOMAIN, google.com` 仅匹配 `google.com`,不匹配 `mail.google.com`。
* `DOMAIN-SUFFIX, google.com` 匹配 `google.com` 及其所有子域名。
* `DOMAIN-KEYWORD, google` 匹配包含 `google` 的任何域名。
* 解决:根据需求选择合适的匹配类型。对于子域名较多的服务,优先使用 `DOMAIN-SUFFIX`。

3. 默认策略冲突

* 现象:部分流量行为不可预测。
* 原因:默认策略与显式规则冲突,或规则列表中存在重复条目。
* 解决:清除所有规则,重新添加。确保默认策略与预期一致,并通过显式规则覆盖例外情况。

4. DNS 污染或泄露

* 现象:国内网站无法访问,或访问国外网站时出现 DNS 泄露。
* 原因:DNS 服务器配置不当,或 DNS 走代理但未正确处理。
* 解决:在 DNS 设置中,启用 Fake-IP(如果支持)或配置独立的 DNS 服务器。确保国内 DNS 直连,国外 DNS 走代理。

规则维护与优化

规则不是一劳永逸的。随着网络环境变化,规则需要定期维护。

1. 定期更新规则

* 订阅的规则文件可能已过期,需手动更新。
* 关注开源社区(如 GitHub)发布的最新规则集。
* 避免使用来源不明的规则文件,以防包含恶意规则。

2. 精简规则

* 过多的规则会影响匹配速度。
* 删除不再使用的规则。
* 合并相似的规则(如将多个 `DOMAIN-SUFFIX` 合并为 `DOMAIN-KEYWORD`,如果适用)。

3. 备份配置

* 在修改规则前,导出当前配置备份。
* 使用 Shadowrocket 的 导出 功能,保存为 `.srconfig` 文件。
* 在 导入 时,选择备份文件恢复。

总结

Shadowrocket 的规则设置是实现高效网络分流的关键。用户应根据自身需求,合理配置默认策略、匹配类型和动作类型。通过日志和测试页面验证规则生效情况,并定期维护规则列表,可确保网络访问的稳定性和安全性。记住,规则的核心在于“精确匹配”和“合理顺序”,避免过度依赖全局代理或盲目添加规则。