Shadowrocket怎么设置指定网站直连?DIRECT规则与验证步骤
简答:在 Shadowrocket 中不要直接切换到全局 Direct,而应选择 Home → Global Routing → Config。然后在当前生效配置的 [Rule] 段加入 DOMAIN-SUFFIX,example.com,DIRECT,检查它位于会覆盖它的宽泛规则之前,并确认已有 FINAL,PROXY 位于规则末尾。保存后重新建立连接,在连接记录中查看目标请求实际命中的规则和策略。
定义:Shadowrocket 指定网站直连,是用域名匹配规则把目标请求交给 DIRECT,同时让未被更早规则命中且最终到达 FINAL,PROXY 的请求继续使用代理。
30秒速查:先复制这一条,再检查规则顺序
如果你要实现“指定网站直连,其他未命中请求继续代理”,先不要把 Global Routing 切换成 Direct。Direct 是整体路由模式;需要按域名分流时,应选择 Config,让当前活动配置中的规则参与判断。Shadowrocket 的 App Store 页面明确列出其支持按域名、域名后缀、关键词、CIDR 和 GeoIP 配置规则,并支持导入规则文件和查看 HTTP、HTTPS、DNS 请求:Shadowrocket App Store 页面。
| 你的需求 | 规则写法 | 范围 |
|---|---|---|
| 只直连一个主机名 | DOMAIN,login.example.com,DIRECT | 只匹配该主机名,不自动包含其他子域名 |
| 直连主域名及其子域名 | DOMAIN-SUFFIX,example.com,DIRECT | 匹配 example.com 及其子域名 |
| 其他未命中请求走代理 | FINAL,PROXY | 仅处理前面规则都没有命中的请求 |
把示例中的 example.com 换成你要处理的真实域名。域名字段只填写主机名或域名,不要加入 https://、页面路径、查询参数、端口或 * 通配符。以上规则格式和匹配范围来自公开参考文档,文档的官方归属未核实;如果当前客户端界面或配置解析结果不同,应以设备实际表现为准:公开规则语法与匹配顺序参考。
最小配置示例:先检查现有 FINAL,再添加 DIRECT
假设你需要让 example.com 及其子域名直连,其他请求在没有更早匹配规则的前提下继续使用名为 PROXY 的策略,可以把目标规则放在当前配置的 [Rule] 段中:
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,PROXY
这只是最小语法示例,不建议直接用它替换整份配置。编辑前先搜索当前配置中是否已经存在 FINAL。如果已有 FINAL,PROXY,通常只需确认它位于规则段末尾;不要为了保险重复添加多条 FINAL。只有在确实没有兜底规则、并且当前配置已经定义了可用的 PROXY 策略时,才考虑补充。
“其他请求继续代理”也有前提:请求没有被更早的 DIRECT、REJECT、RULE-SET、GEOIP 或其他宽泛规则命中,并且最终使用的 PROXY 策略确实存在可用成员。如果前面已有一条覆盖范围更大的规则,后面的 FINAL 不会重新尝试改变它的结果。
规则通常按从上到下的顺序检查,先匹配的规则先决定策略。因此,精确的例外规则应放在会覆盖它的宽泛规则之前,普通域名规则应放在 FINAL 之前。公开参考资料对这种“首条命中”和 FINAL 兜底逻辑有说明,但不应把该资料称为 Shadowrocket 官方文档。
iPhone中怎么设置:区分“活动配置”和“路由模式”
- 先确认目标。本文讨论的是“某个网站直连、其他未命中请求继续代理”,不是让所有流量直连。因此不要用 Direct 作为最终设置。
- 选择规则路由。打开 Shadowrocket 的 Home,找到 Global Routing,选择 Config。App Store 页面确认应用支持基于域名和规则文件的流量处理,但不同版本的按钮名称、编辑方式和配置权限可能变化,不能把某一套菜单路径视为所有版本都固定一致。
- 确认活动配置。进入 Config 页面,确认当前被选中的配置文件。配置文件“存在”、配置文件“被选中”、请求“命中目标规则”是三个不同检查点。编辑前先保存一份可恢复副本。
- 找到规则位置。优先寻找当前配置的编辑、代码视图或 Rule 编辑入口,并定位到
[Rule]段。如果当前配置来自远程订阅且没有本地编辑权限,不要把订阅文本、节点链接或任意 TXT 内容直接粘贴成规则;可以先确认客户端是否提供复制、另存为本地配置或规则编辑能力。若当前版本找不到入口,应以 Config 页面实际显示为准,不能凭其他版本截图猜测。 - 加入最小规则。只让一个主机名直连时使用
DOMAIN,主机名,DIRECT;需要覆盖主域名和子域名时使用DOMAIN-SUFFIX,主域名,DIRECT。将新规则放在可能覆盖它的宽泛规则之前,并放在 FINAL 之前。 - 保存并重新连接。保存后再次确认刚编辑的文件仍是活动配置,Global Routing 仍为 Config。断开并重新建立连接,再访问同一个目标网站。
远程配置更新可能覆盖本地改动,所以每次更新后都要重新检查活动文件、目标 DIRECT 规则和 FINAL 位置。不要同时修改 DNS、节点、规则顺序和代理策略,否则无法判断变化来自哪一项。
DOMAIN和DOMAIN-SUFFIX怎么选?
| 场景 | 建议 | 注意事项 |
|---|---|---|
| 只有 login.example.com 需要直连 | DOMAIN,login.example.com,DIRECT | 范围较小,不会自动覆盖 api.example.com 或 cdn.example.com |
| example.com、www.example.com、api.example.com 都需要直连 | DOMAIN-SUFFIX,example.com,DIRECT | 范围更大,要确认同一主域名下的其他服务也适合直连 |
| 同一主域名下只有某个接口需要代理 | 把精确 DOMAIN 规则放在后缀规则之前 | 否则前面的 DOMAIN-SUFFIX 可能先命中 |
域名规则匹配的是请求中的域名,不是浏览器地址栏中的完整页面路径。因此,不能用一条普通 DOMAIN 规则实现“同一个主机名下只有某个 URL 路径直连、其他路径代理”。如果网页的登录、图片、脚本、验证码、API 或 CDN 使用了不同域名,首页域名直连并不代表整页所有请求都会直连。
建议先用单个 DOMAIN 做小范围验证。确认结果后,再根据连接记录中实际出现的附属域名逐个补充规则,避免一开始就使用过宽的后缀范围。
规则不生效时:按“现象→检查→处理→回滚”排查
| 现象 | 先检查 | 处理与回滚 |
|---|---|---|
| 目标请求仍显示 PROXY | Global Routing 是否为 Config;目标规则前是否有更早的宽泛规则 | 把精确 DOMAIN 或目标 DOMAIN-SUFFIX 移到覆盖规则之前,保存后重新连接 |
| 添加规则后完全没变化 | 是否编辑了当前活动配置;规则是否放在 FINAL 后面 | 确认活动文件,把新规则移到 FINAL 前;无效时删除新行恢复原配置 |
| 首页直连但登录或图片失败 | 连接记录中是否出现其他登录、API、图片或 CDN 域名 | 只为确有需要的附属域名添加规则,不要立即扩大到整个后缀 |
| 记录显示 DIRECT,但网页仍打不开 | 记录显示的是请求策略,还是底层连接已经成功 | 继续排查 DNS、本地网络、证书、站点状态和其他资源域名 |
| 远程更新后规则消失 | 配置是否由远程来源覆盖;活动文件是否发生变化 | 恢复编辑前副本,再决定使用本地可编辑配置或按更新机制重新维护 |
连接记录显示 DIRECT,只能说明该请求选择了直连策略,不能单独证明整个网页已经成功加载。一个页面可能同时发起多个域名请求,某一条记录成功并不等于所有资源都成功。
验证时尽量只改变一个条件:先确认活动配置,再确认命中规则,最后确认策略本身能否连接。如果需要对比,可以临时切换到 Proxy 或 Direct 做测试,但测试完成后要恢复 Config,避免把测试模式误当成最终分流设置。
最小回滚方式是删除刚加入的规则,或恢复编辑前保存的配置副本,然后重新建立连接。不要为了“试试看”一次性加入多条相似域名、修改 DNS 和更换节点。
结论:一条规则开始,按实际请求扩展
最稳妥的配置顺序是:Home → Global Routing → Config;确认活动配置;先加入一条范围最小的 DIRECT 规则;检查已有 FINAL 是否位于规则末尾;保存并重新建立连接;最后在连接记录中确认目标请求命中了预期策略。
如果只需要一个主机名直连,优先使用 DOMAIN;如果要覆盖主域名及其子域名,再使用 DOMAIN-SUFFIX。未命中请求只有在没有更早覆盖规则、确实到达 FINAL,PROXY 且 PROXY 策略可用时,才会继续走代理。
本文是第三方使用指南,不代表 Shadowrocket 官方页面;应用名称、开发者和功能信息请以当前 App Store 页面及设备实际界面为准。
常见问题
Shadowrocket设置指定网站直连,应该选Direct还是Config?
应选择 Config。Direct 是整体路由模式,不等于只让某一个网站直连。进入当前活动配置的 [Rule] 段,加入 DOMAIN 或 DOMAIN-SUFFIX 的 DIRECT 规则,再检查规则顺序和 FINAL 兜底。
DOMAIN和DOMAIN-SUFFIX有什么区别?
DOMAIN 用于匹配一个明确的主机名,例如 login.example.com;DOMAIN-SUFFIX 用于匹配主域名及其子域名,例如 example.com、www.example.com 和 api.example.com。后者范围更大,使用前应确认同一主域名下的其他服务也适合直连。
为什么写了DIRECT,目标网站还是走代理?
先确认 Home → Global Routing 为 Config,并确认编辑的是当前活动配置。然后检查目标规则前是否已有更早命中的 DOMAIN-SUFFIX、RULE-SET、GEOIP 或其他宽泛规则。规则通常按从上到下检查,前面的匹配会先决定策略。
FINAL,PROXY需要重复添加吗?
不要直接重复添加。先搜索当前 [Rule] 段是否已有 FINAL。如果已有 FINAL,PROXY,通常只需确认它位于规则末尾,并且 PROXY 是当前配置中已经定义的有效策略。
记录显示DIRECT,但网页还是打不开,规则是不是失败了?
不一定。DIRECT 表示该请求选择了直连策略,不等于整个网页的所有资源都已成功加载。登录、图片、脚本、验证码和 CDN 可能使用不同域名,应查看连接记录并继续排查 DNS、本地网络和其他资源域名。
远程配置更新后,刚添加的直连规则消失了怎么办?
先恢复编辑前保存的配置副本,再确认远程更新是否覆盖了本地规则。之后可使用客户端允许的本地可编辑配置,或按当前配置的维护方式重新加入规则。每次更新后都应复查活动文件、目标规则和 FINAL 位置。
相关阅读
参考资料
- App Store:Shadowrocket应用页面与功能说明
- 公开参考资料:规则格式、DOMAIN、DOMAIN-SUFFIX与FINAL匹配顺序(shadow-help.com)