Shadowrocket 只让部分网站走代理:DOMAIN-SUFFIX 规则写法

用 DOMAIN-SUFFIX、DOMAIN-KEYWORD 指定少数网站走 PROXY,其余流量交给 FINAL,DIRECT,再配合 Config 模式验证规则是否生效。

本文速览

本文适合已经在 Shadowrocket(小火箭)中导入自己的订阅、希望仅让指定网站使用代理的用户。操作重点是编辑当前生效的 Config,把需要代理的域名规则放在前面,以 FINAL,DIRECT 收尾,并在 Home → Global Routing 中选择 Config。下面分别说明匹配范围、规则顺序、保存与验证方法,不改变用户已有订阅的来源。

一、先区分规则、策略与连接模式

“只让部分网站走代理”包含两个条件:目标网站命中指向 PROXY 的规则,其余请求落到 DIRECT。订阅提供可用的服务器信息,Config 决定请求如何分配;仅切换服务器或更新订阅,并不会自动形成这套分流逻辑。开始前,应确认 Home 中已有可用服务器,并为当前配置保留备份。

本文使用内置策略 PROXY 与 DIRECT。PROXY 将请求交给当前代理选择,DIRECT 直接连接目标;如果现有配置使用自定义策略组,规则末尾也可以填写该组的准确名称,但必须先确认组已定义且有可用成员。第一次调整建议先采用下文的最小结构,避免同时修改策略组与匹配条件。

2 个策略
本文使用 PROXY 与 DIRECT 分配请求
4 种模式
Global Routing:Proxy / Direct / Config / Scene
1 条兜底
FINAL,DIRECT 放在 Rule 列表最后

Home → Global Routing 中的 Proxy 与 Direct 用于整体选择代理或直连,不能用来检验本文的逐条分流结果。Config 才是这里需要的按配置规则处理方式。Scene 用于场景切换,初次验证时先固定在 Config,减少场景条件引入的变化。Settings → On Demand 处理按需建立连接的行为,也不是域名规则编辑入口。

二、DOMAIN-SUFFIX 与 DOMAIN-KEYWORD 怎么选

域名规则匹配的是请求对应的主机名,不是整段网页地址。以 https://www.example.com/account 为例,应填写 example.com 或 www.example.com,不要把 https://、路径 /account、查询参数或端口一起写进域名字段。规则使用半角逗号分隔,规则关键字保留英文。

规则写法 匹配范围 适用情况
DOMAIN,www.example.com,PROXY 只匹配 www.example.com 这个主机名。 只需要一个明确的站点入口。
DOMAIN-SUFFIX,example.com,PROXY 匹配 example.com 及其子域名,如 api.example.com。 同一根域名下的网页与接口一起代理。
DOMAIN-KEYWORD,example,PROXY 匹配主机名中含 example 字符串的请求。 确实需要跨域名的关键词匹配,且能够接受更大范围。
FINAL,DIRECT 处理此前未被任何规则匹配的请求。 作为“其他流量直连”的最后一条规则。

DOMAIN-SUFFIX 按域名后缀边界匹配:example.com 的规则可以覆盖 img.example.com,但不会因为字符串相似就覆盖 notexample.com。DOMAIN-KEYWORD 没有这种后缀边界约束,关键词 example 会同时扩大到其他含有该字符串的主机名。因此,已知目标域名时优先使用 DOMAIN 或 DOMAIN-SUFFIX,而不是用短关键词猜测站点归属。

结论:先列域名,再决定是否使用关键词

先用 DOMAIN-SUFFIX 覆盖目标根域名;只有日志确认多个必要域名确实共享稳定关键词、且逐条列举不适合维护时,才加入 DOMAIN-KEYWORD。

三、最小规则片段与从上到下的顺序

下面的片段表示 example.com 与 example.net 及各自子域名使用代理,其他请求直连。[Rule] 是配置文件的规则区段标记:在文本编辑中粘贴时使用一次即可;若通过规则列表逐项添加,分别填写规则类型、域名和策略,不需要把区段标记填进某一条规则。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT

规则通常按从上到下的顺序匹配,先命中的规则决定该请求的策略。把 FINAL 放在列表上方,会让后面的目标规则失去处理机会。同样,若前面已有覆盖目标域名的 DIRECT 规则或宽泛的规则集,新增的 PROXY 规则应放到这些规则之前,否则只修改末尾仍可能看不到变化。

需要让某个子域名保持直连时,把更具体的例外写在宽泛规则之前。以下片段中,status.example.com 走 DIRECT,www.example.com 等其他子域名走 PROXY;不要把例外放到 DOMAIN-SUFFIX 后面再期待它覆盖先前的结果。

[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT

已有配置可能还包含 DNS、Host、策略组及其他区段。上述代码仅展示 Rule 部分,不是要求删除整个配置再重建。编辑前先复制一份现有配置,并检查是否已经存在 [Rule],不要在原文件末尾重复追加整个区段。

四、在 Config 中保存,并切换到规则模式

以下按 Home、Config、Settings 的界面结构说明。编辑对象必须是实际启用的配置,而非同名的远程配置副本。远程配置更新可能替换本地改动,适合长期保留的规则应写入单独保存的本地副本,并在每次切换后确认当前选择。

  1. 备份配置

    进入 Config,找到当前使用的配置,先保留副本。记录原来使用的配置名称,便于验证失败时切回,不要直接覆盖唯一的一份文件。

  2. 编辑规则

    在 Config 中打开该本地配置的编辑入口,进入 Rule。通过规则列表添加 DOMAIN-SUFFIX,域名填写 example.com 对应的实际目标域名,策略选择 PROXY;或在文本编辑中修改现有 [Rule] 区段。

  3. 整理顺序

    把指定网站的 PROXY 规则放在可能冲突的宽泛规则之前,确认最后一条为 FINAL,DIRECT。保存修改,并在 Config 列表中选中这份配置作为当前配置。

  4. 选择模式

    回到 Home → Global Routing → Config,再确认当前代理选择有效。若这里停在 Proxy 或 Direct,不能用访问结果判断刚才编辑的域名规则。

  5. 重新测试

    开启连接后重新打开目标网页;修改前已建立的连接可能继续沿用原有路径。必要时关闭网页、重新建立连接,再同时测试一个目标域名和一个不在清单中的域名。

订阅更新解决的是服务器列表与参数更新,Config 编辑解决的是请求路由,两者不要混为同一个操作。若只是增加一个需要代理的网站,通常不必重新导入订阅,也不必调整服务器的端口、密码、SNI 或 TLS 参数。首次导入与连接步骤可参考快速上手,模式差异见代理模式说明。

五、用连接记录验证,不只看网页能否打开

页面打开成功并不能单独证明走了代理:某些网站直连同样能访问。页面打不开也不能证明规则未命中,因为服务器连接、DNS 解析及网站自身状态都可能导致失败。验证时应在连接记录或日志中核对目标主机名、匹配规则及最终策略;记录入口的呈现可能随平台不同,但需要核对的信息一致。

测试请求 预期匹配 预期策略
example.com 与 www.example.com DOMAIN-SUFFIX,example.com PROXY
status.example.com,已添加前文例外 DOMAIN,status.example.com DIRECT
不在目标清单、也未命中其他规则的域名 FINAL DIRECT

上表是前文规则的预期结果,不是对示例站点的连通性测量。实际测试时换成用户需要的目标域名,并一次只改变一个条件。如果记录显示目标已命中 PROXY,却仍然连接失败,应转向检查当前服务器及服务商提供的参数,而不是反复扩大 DOMAIN-KEYWORD。

一个网页常会访问独立的图片、登录、验证码和接口域名。主页面命中 PROXY,不代表这些请求也会自动跟随主页面。遇到“文字能显示但图片不出”或“主页正常、登录一直转圈”时,重新触发相关操作,查找失败请求对应的主机名,再把确有必要的域名补入清单。

六、超时、解析失败与常见问题

排查时先区分“没有按规则路由”和“已经按规则路由但连接失败”。下面两项是浏览器可能显示的真实错误代码,不是 Shadowrocket 的固定提示文本;不同浏览器的显示方式可能不同。应结合连接记录判断原因,不能仅凭一个错误代码认定服务器或规则有问题。

报错:ERR_CONNECTION_TIMED_OUT

原因与解法:浏览器等待连接或响应超时,可能涉及目标服务、当前网络或代理链路——先核对该请求最终走 PROXY 还是 DIRECT;已命中 PROXY 时测试当前服务器的连通性,未命中时检查生效配置和规则顺序。

报错:ERR_NAME_NOT_RESOLVED

原因与解法:浏览器未能获得可用的域名解析结果——先核对域名拼写与 Config 中的 DNS 设置,并检查浏览器是否另设 DNS;不要通过重复添加 DOMAIN-SUFFIX 来代替解析排查。

规则已经加了,怎么所有网站还是走代理?

先检查 Home → Global Routing 是否停在 Proxy,切回 Config;再检查当前生效配置的末尾是否仍是 FINAL,PROXY,以及前面是否存在覆盖范围过大的 PROXY 规则。保存后重新建立连接,再查看一个清单外域名的最终策略。

为什么加了主域名,登录还是失败?

登录可能跳转到另一根域名,DOMAIN-SUFFIX,example.com 不会匹配 example.net。触发登录后查看连接记录,将必要的登录或接口域名单独添加到 FINAL 之前,不要直接改成全局 Proxy 作为长期处理。

能不能只让某一个网页路径走代理?

DOMAIN 与 DOMAIN-SUFFIX 匹配主机名,不区分 /news 与 /account 等路径。同一主机名下的 HTTPS 页面不能靠这两种规则按路径拆分;若服务使用不同子域名,可分别用 DOMAIN 明确指定。

更新订阅后还要重写这些规则吗?

单纯更新服务器订阅通常不等于替换 Config。先到 Config 核对当前配置及 Rule 是否仍在;若更新的是远程配置,内容可能被替换,改用保留了自定义规则的本地副本,再回到 Home → Global Routing → Config 验证。

最后保留一个可重复的检查顺序:当前 Config 正确、Global Routing 为 Config、指定域名规则在前、FINAL,DIRECT 在后、当前服务器有效,再用新连接核对日志。需要扩充规则类型时,可继续查阅配置字段参考,不必为每一个显示异常的网站直接增加整段 IP 规则。

获取 Shadowrocket 与首次配置

iPhone / iPad 版在 App Store $2.99 一次性付费,Mac(Apple 芯片 / Intel)、Windows、安卓、Linux 版免费。iPhone / iPad 系统要求以 App Store 页面标注为准。前往下载页选择平台;已有应用的用户可按教程导入自己的订阅,再设置 Config 规则。

下载 Shadowrocket