Shadowrocket怎么设置代理规则:添加、排序与命中测试教程
简答:Shadowrocket设置代理规则,核心是先在 Home → Global Routing 选择 Config,再到 Config 打开当前配置并编辑 Rule。添加规则后要确认配置已启用、规则顺序正确,并通过新请求或连接记录验证是否命中。若仍不生效,优先检查当前模式、活动配置、节点状态和规则中的策略名称。
定义:Shadowrocket代理规则是由“匹配条件+处理策略”组成的分流条目,用来决定某个域名或IP地址走代理、直连还是拒绝。
先做这三步:让规则真正参与分流
如果你只是想让某个网站走代理、直连或拒绝,先不要修改大量规则。Shadowrocket官方 App Store 页面确认其支持按域名、域名后缀、域名关键词、CIDR IP范围和 GeoIP 配置规则;但它本身不提供代理服务或服务器资源,服务器和配置需要用户自行准备。可先参考Shadowrocket App Store 页面核对客户端信息。
- 选择规则模式:打开 Shadowrocket,进入 Home,点击 Global Routing,选择
Config。如果选择的是Proxy或Direct,测试结果不能直接代表自定义规则是否生效。 - 确认当前配置:进入底部的 Config,打开你准备使用的配置文件,确认它处于当前选中状态。配置文件列表里“存在”不等于已经被 Global Routing 使用。
- 添加并测试:在配置文件的 Rule 页面添加一条规则,保存后返回 Home,确认连接已开启,再关闭并重新打开测试页面或重新发起请求。
不同版本的菜单名称或位置可能略有变化,若找不到完全相同的入口,应以当前版本界面为准。公开使用教程也将 Config、Add Rule 和规则文件编辑列为主要配置路径,可参考Shadowrocket 使用教程中的相关说明。
Global Routing、Config、Proxy、Direct 分别是什么
新手最容易混淆的是 Global Routing 和 Config:前者是整体流量处理模式,后者是配置文件管理入口。只有当 Global Routing 设为 Config 时,当前配置文件中的规则才是主要分流依据。
| 项目 | 作用 | 适合什么时候使用 | 排查时要看什么 |
|---|---|---|---|
| Config | 按照当前配置文件中的规则选择策略 | 需要让不同网站分别走代理、直连或拒绝 | 活动配置、规则顺序、FINAL、策略名称 |
| Proxy | 以代理方式处理流量,主要用于整体路径对比 | 临时判断所选节点是否具备连接能力 | 节点是否可用、协议参数、连接状态 |
| Direct | 以直连方式处理流量 | 对比本地网络、DNS或目标服务是否可访问 | 本地网络、DNS、目标地址是否可达 |
| Config 页面 | 管理和编辑配置文件、规则及相关内容 | 添加规则、查看规则顺序、更新远程配置 | 文件是否选中、修改是否保存、远程更新是否覆盖改动 |
可以把它理解成三层:Global Routing 决定“采用哪种总体处理方式”,Config 决定“使用哪份配置”,Rule 决定“匹配后采用哪种策略”。订阅或服务器列表只负责提供连接条目,不会自动替代你的分流规则。
进入规则页面并添加规则
常见操作路径是:Config → 当前配置文件 → 规则编辑入口 → Add Rule。部分版本可能先需要点击配置文件右侧的信息按钮,再进入 Rule 页面;如果界面名称不同,应以当前版本显示为准。
- 打开 Config,点击准备修改的配置文件。
- 先保存原配置或复制一份,避免远程更新或误删后无法回滚。
- 进入 Rule 页面,点击 Add Rule。
- 选择匹配类型,填写域名、IP网段或规则集地址。
- 选择处理策略,例如
PROXY、DIRECT或REJECT。 - 保存配置,确认当前使用的仍是刚刚修改的文件。
- 回到 Home → Global Routing,选择 Config,然后重新连接并发起新请求。
如果使用文本配置,也可以在 [Rule] 区域添加规则。下面的域名仅用于说明语法,不代表实际服务地址:
DOMAIN,api.example.com,PROXY:只匹配一个准确的主机名。DOMAIN-SUFFIX,example.com,PROXY:匹配根域名及其子域名。DOMAIN-KEYWORD,ads,REJECT:匹配域名中包含指定关键词的请求,范围通常比后缀规则更宽。IP-CIDR,192.0.2.0/24,DIRECT:匹配指定 IPv4 网段。FINAL,DIRECT:前面没有规则命中时,采用直连作为兜底策略。
Shadowrocket 的 App Store 说明列出了域名、域名后缀、域名关键词和 CIDR 等规则能力;配置时仍应根据连接记录中的实际域名或IP选择匹配类型,而不是把网页标题、完整网址路径或应用名称直接填入域名字段。
三种常见分流案例:代理、直连和拒绝
案例一:指定网站或域名走代理
如果目标站点会使用多个子域名,通常应考虑 DOMAIN-SUFFIX;如果只需要匹配一个明确主机名,则使用 DOMAIN。示例:
DOMAIN-SUFFIX,example.com,PROXY
这条规则的含义是:匹配 example.com 及其子域名,并交给名为 PROXY 的策略处理。PROXY 是策略名称,不是服务器地址;当前配置中必须存在对应的代理策略或策略组。
案例二:指定网站直连
如果整体规则默认走代理,但某个明确域名需要直连,可把例外规则放在更宽泛的规则之前:
DOMAIN,local.example.com,DIRECTDOMAIN-SUFFIX,example.com,PROXY
这样,local.example.com 先命中直连规则;同一根域名下其他主机仍可继续命中后面的代理规则。
案例三:拒绝特定广告域名
如果只是测试某个明确的广告域名,可以使用:
DOMAIN-SUFFIX,ads.example.net,REJECT
REJECT 会拒绝匹配请求,可能影响页面资源、登录、通知或应用功能。因此应从单个域名开始测试,不要一开始就使用过宽的关键词规则。
规则顺序是关键
规则通常按从上到下的顺序检查,第一次匹配后就采用对应策略。建议按“明确例外→较窄范围→较宽范围→FINAL”的顺序排列。不要把 FINAL 放在需要继续匹配的规则前面,否则后面的规则通常不会得到执行。
如何导入和更新远程规则集
如果不想手动维护大量域名,可以在配置文件中导入远程规则集。具体入口和字段名称可能随版本变化,常见思路是进入 Config,打开当前配置,使用 Add Rule 或远程规则集相关入口,填写规则集 URL 后保存并更新。
- 先确认规则集来源可信,并保存当前配置副本。
- 在配置文件中添加远程规则集,选择它对应的策略,例如代理、直连或拒绝。
- 手动执行更新,观察是否出现下载失败、解析失败或规则数量异常。
- 更新后检查规则集所在位置,确认没有覆盖你手动添加的例外规则。
- 重新选择活动配置,再通过一个明确域名发起新请求验证。
远程规则集更新成功,只能说明文件被读取或更新完成,不代表每条规则都符合你的需求。若更新后原本有效的规则失效,优先检查是否被新的规则顺序、FINAL 或更宽泛的规则覆盖。
规则已添加但不生效:按现象排查
| 现象 | 优先检查 | 处理方法 |
|---|---|---|
| 添加规则后完全没有变化 | Global Routing 是否为 Config | 回到 Home → Global Routing,选择 Config,再确认当前配置文件已选中 |
| 规则列表里有文件但没有效果 | 活动配置是否是修改的那一份 | 在 Config 中重新确认选中状态,避免只编辑了未使用的文件 |
| 指定域名没有命中 | 实际请求主机名是否不同 | 查看连接记录,检查重定向、登录、图片或 API 是否使用了其他域名 |
| 规则命中但仍然打不开 | 节点、DNS或目标服务 | 先用 Proxy 模式做临时对比,再恢复 Config;不要仅凭一次访问结果断定规则错误 |
| 部分页面能开,部分功能失败 | 规则覆盖范围是否过窄或过宽 | 检查页面实际请求的多个域名,逐条增加必要规则 |
| 规则更新后手动修改消失 | 远程更新是否覆盖本地内容 | 保留本地副本,把自定义例外放在可维护的位置,并在更新后复核 |
测试时不要只刷新已经打开的页面。浏览器缓存、长连接和应用后台请求可能让旧连接继续使用原策略。更可靠的做法是关闭测试页面,重新发起请求,再查看连接记录中的域名、目标地址和实际策略。
如果连接记录显示命中了预期规则,但请求仍失败,问题可能在节点参数、DNS、目标服务或网络路径,而不是规则顺序。此时应一次只改一个变量,并记录修改前的配置,便于回滚。
发布前自查清单
- 模式:Home → Global Routing 已选择 Config。
- 配置:编辑的文件就是当前活动配置。
- 格式:域名规则中没有加入
https://、路径、查询参数或端口。 - 类型:准确主机名用 DOMAIN,根域名及子域名用 DOMAIN-SUFFIX,IP网段用 IP-CIDR。
- 策略:PROXY、DIRECT、REJECT 和自定义策略名称在当前配置中确实存在。
- 顺序:具体规则在前,宽泛规则在后,FINAL 放在需要兜底的位置。
- 测试:使用新请求验证,并查看连接记录,而不是只看网页是否打开。
- 回滚:修改前保留原配置,远程规则集更新后再次检查自定义规则。
本文为 CreamData 站点的第三方使用指南,不是 Shadowrocket 官方页面;客户端菜单和规则行为如有差异,应以当前版本界面及开发者资料为准。
常见问题
Shadowrocket为什么要把 Global Routing 设置为 Config?
因为 Config 才会按照当前配置文件中的规则进行分流。若当前选择的是 Proxy 或 Direct,流量处理方式会改变,测试结果不能直接说明你添加的规则是否命中。
DOMAIN和DOMAIN-SUFFIX有什么区别?
DOMAIN通常用于匹配一个准确主机名,例如 api.example.com;DOMAIN-SUFFIX用于匹配根域名及其子域名,例如 example.com 和其下级主机。需要覆盖多个子域名时,不要只写一个可能不完整的 DOMAIN 条目。
Shadowrocket规则应该放在FINAL前面吗?
通常应该。规则一般从上到下检查,第一次命中后采用对应策略,因此具体例外应放在宽泛规则和 FINAL 前面。FINAL应作为未匹配请求的兜底规则。
规则已经添加,为什么访问结果没有变化?
依次检查 Global Routing 是否为 Config、修改的配置是否处于活动状态、规则格式是否正确、策略名称是否存在,以及测试请求是否真的使用了目标域名。关闭旧页面并重新发起请求,再查看连接记录。
订阅导入成功后,为什么规则还是不生效?
服务器订阅和分流配置是两件事。订阅导入通常只增加或更新服务器条目,不代表当前配置文件已经启用,也不代表 Global Routing 已切换到 Config。需要分别检查服务器、活动配置和规则模式。
远程规则集更新后,本地手动规则消失怎么办?
先恢复更新前保存的配置,确认远程更新是否覆盖了本地内容,再把自定义例外放到可维护的位置。之后每次更新都重新检查规则顺序和 FINAL 位置。
相关阅读
参考资料
- Shadowrocket App Store 页面:功能、规则类型与客户端说明
- Shadowrocket 使用教程:Config、Add Rule 与配置路径(shadowrocket.gitbook.io)