只让指定网站走代理,需要同时满足三个条件:Global Routing 选择 Config、目标域名命中 PROXY 规则、其余请求由 FINAL,DIRECT 兜底。本文适合已经有自己的服务商与可用连接配置的用户,按备份、编辑、启用、验证的顺序操作,并用域名例外说明规则为什么必须按顺序排列。
一、先确定范围:按域名分流,不是按网页地址分流
Shadowrocket(小火箭)的 DOMAIN-SUFFIX 匹配域名后缀。写入 example.com 后,可以覆盖这个域名本身以及 www.example.com、api.example.com 等子域名。它不是在浏览器地址栏里寻找一段文字,也不依赖网页标题。
如果目标是整个站点及其子域名,使用 DOMAIN-SUFFIX;如果只允许一个确定的主机名走代理,使用 DOMAIN。不要把 https://、路径、查询参数或端口号填进域名字段。例如访问 https://example.com:443/account 时,域名字段仍然只写 example.com。
| 规则 | 会匹配 | 不会匹配 |
|---|---|---|
DOMAIN,example.com,PROXY | example.com | www.example.com |
DOMAIN-SUFFIX,example.com,PROXY | example.com 及其子域名 | badexample.com |
DOMAIN,api.example.com,DIRECT | api.example.com | www.example.com |
所有示例域名均为语法说明,不代表可用的代理服务。规则只决定请求交给哪一种策略,不会生成连接参数,也不会让不可用的代理恢复连接。
二、先备份,再在 Config 中写入最小规则
开始前,在 Home 确认已有可用的代理配置。若连接参数来自用户已有的订阅,先完成必要的更新,再确认当前选中的代理可以连接。编辑规则与更新订阅是两件事:前者改变请求走向,后者通常用于更新连接信息。
- 保留原配置。进入 Config,先通过配置操作保留副本或导出备份,记住原来正在使用的配置,便于恢复。
- 打开准备使用的配置。在 Config 中进入对应配置的编辑界面,找到规则部分。若使用文本编辑,定位
[Rule]。 - 整理已有规则。检查是否已有
FINAL、较宽泛的域名规则或指向其他策略的规则。不要只把新规则追加到原有兜底规则之后。 - 保存并启用。保存修改,在 Config 中确认启用的是刚编辑的配置,而不是名称相近的另一份文件。
最小示例只需要两条规则。下面是配置文件的规则片段,不是完整连接配置;应放入现有配置的规则部分,不要用它覆盖整个文件。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
第一行规则把 example.com 及其子域名交给 PROXY;最后一行把没有命中前面规则的请求交给 DIRECT。其中 PROXY 使用当前代理选择,DIRECT 表示直接连接目标。若原配置使用自定义策略组,应另行核对策略组名称与实际选项,不要把不存在的名称填进规则。
三、Global Routing 选 Config,才能执行这套规则
返回 Home,打开 Global Routing 并选择 Config,随后开启连接。这里决定的是全局处理姿态:选择 Proxy 不等于“只代理规则里的网站”,选择 Direct 也不会执行本文的指定站点代理目标。
| 姿态 | 处理方式 | 本场景如何选择 |
|---|---|---|
Config | 按当前启用配置中的规则决定策略。 | 使用此项验证本文规则。 |
Proxy | 以代理作为全局处理方式。 | 不用于验证“其余直连”的规则效果。 |
Direct | 以直接连接作为全局处理方式。 | 不用于验证指定域名的 PROXY 规则。 |
Scene | 按已配置的场景决定处理方式。 | 初次排查先用 Config,减少场景切换带来的变量。 |
Settings → On Demand 控制按条件自动建立连接的行为,不是网站名单的编辑入口。即使已经设置 On Demand,仍要核对当前配置、Global Routing 和代理选择。自动建立连接与连接后如何分流属于不同层面的设置。
- 目标网站需要代理:检查 Global Routing 为
Config。 - 目标规则已经保存:检查 Config 中启用的确实是修改后的配置。
- 规则命中
PROXY:检查 Home 当前选择的代理本身可用。
四、例外规则放前面,FINAL 放最后
规则按顺序匹配,命中后采用对应策略。假设整个 example.com 都要走代理,但 assets.example.com 必须直连,那么更具体的例外应放在宽泛后缀规则之前。否则资源域名会先命中后缀规则,后面的例外没有机会生效。
[Rule]
DOMAIN,assets.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
结论:先写例外,再写范围,最后写兜底
遇到某个子域名走向不对,先把它与上方规则逐条比对;优先修正规则顺序,不要立即更换协议或重建连接配置。
同样需要留意已有的 GEOIP 与 IP-CIDR 规则。它们针对 IP 范围或地理归属匹配,不等同于网站域名名单;IP 类规则与 DNS 解析相关设置也会影响匹配条件。要实现严格的“名单内代理、名单外直连”,应逐条审查所有可能指向代理的旧规则,而不是仅把末尾改成 FINAL,DIRECT。
五、用三类请求验证,不把延迟测试当分流结果
保存后重新建立连接,并让测试页面发起新请求。浏览器已经建立的连接可能继续复用,页面缓存也可能让刷新没有产生预期的新请求。可以关闭原标签页后重新打开,再到应用内连接记录核对目标主机与实际策略。
| 测试对象 | 预期命中规则 | 预期策略 |
|---|---|---|
www.example.com | DOMAIN-SUFFIX,example.com,PROXY | PROXY |
assets.example.com | DOMAIN,assets.example.com,DIRECT | DIRECT |
| 不属于名单的实际测试域名 | FINAL,DIRECT | DIRECT |
表格描述的是示例配置的预期结果,不是对示例域名的实测报告。实际验证时请换成自己需要访问的域名。延迟测试只能帮助判断所选代理的连接情况,不能证明某一次网页请求命中了哪条规则;分流是否正确,应以该请求的主机、匹配规则与策略记录为依据。
一个页面往往不止访问一个域名。正文可能来自主站,登录、图片、脚本或媒体来自其他域名。如果只有图片加载失败,先查失败请求实际访问的主机,再决定是否补充规则。不要因为某个资源失败,就把整个网络改成 Proxy。
- 记录失败资源的完整主机名,不记录网页标题作为规则对象。
- 判断只需要匹配这个主机,还是需要覆盖它所属域名的全部子域名。
- 选择
DOMAIN或DOMAIN-SUFFIX,把新增规则放在FINAL前。 - 重新发起请求,确认策略变化,再判断资源是否恢复。
六、规则命中正确但访问失败,分开检查连接错误
“走错策略”和“策略正确但连接失败”不是同一种问题。先确认请求是否命中预期规则;如果已经命中 PROXY,再查看具体连接错误。以下是连接错误中可能出现的英文片段,实际显示内容以应用内记录为准。
报错:Connection refused
原因与解法:连接被目标端或中间设备明确拒绝;先从记录确认失败连接指向代理服务器还是网站,再核对对应地址、端口及服务状态,不要把拒绝连接直接解释成域名规则未生效。
报错:Operation timed out
原因与解法:连接在等待期限内未完成;先确认当前请求的策略,再分别检查所选代理可达性或目标网站的直接连接情况,并核对已有服务商提供的地址与端口。
如果同一目标通过 DIRECT 失败、通过 PROXY 成功,只能说明两条连接路径的结果不同,不能据此判断所有网站都需要代理。如果两种路径都失败,应继续检查域名解析、目标服务状态与网络环境,而不是反复增加重复规则。
为什么写了规则,其他网站也在走代理?
先在 Home → Global Routing 确认选择 Config,再到 Config 检查当前配置中的其他规则。若有更宽泛的 PROXY 规则,仍可能命中名单以外的请求;末尾的 FINAL,DIRECT 只处理前面没有命中的请求。
只想让一个子域名走代理,要写后缀吗?
如果只需要 api.example.com,写 DOMAIN,api.example.com,PROXY。若连同它下一级的子域名也需要覆盖,再考虑 DOMAIN-SUFFIX,api.example.com,PROXY;两者覆盖范围不同。
同一个网站只有登录页面打不开,怎么办?
重新触发登录请求,到连接记录检查登录服务实际使用的主机名。如果它不属于已配置的域名后缀,按需求添加独立规则;不要把登录 URL 的路径或查询参数填进 DOMAIN-SUFFIX。
更新订阅之后,为什么规则效果变了?
先在 Home 检查原来选择的代理是否仍存在且可用,再到 Config 核对当前启用文件。若同时更新了远程配置,还要对照备份检查规则是否被替换;恢复确认过的本地规则后,再重新测试。
最终检查顺序保持不变:启用正确配置、选择 Config、核对匹配范围与规则顺序、查看请求策略、排查连接错误。这样可以把配置问题与网络问题分开,每次只修改一个变量,避免修改后无法判断哪一步起了作用。