Shadowrocket(小火箭)只让指定网站走代理,需要同时满足三个条件:Global Routing 使用 Config、当前配置包含目标域名的 PROXY 规则、最后以 FINAL,DIRECT 处理其余请求。本文适合已经有自己的服务商与可用连接资料的用户,按准备配置、添加规则、检查命中记录的顺序操作,并区分“规则没有匹配”和“匹配后连接失败”。
一、先选 Config,再检查当前配置
规则写对但没有生效,首先应核对 Home → Global Routing。本文的目标是按域名决定去向,因此需要选择 Config。只在 Config 中修改文件,却让 Global Routing 保持 Proxy,不能用来验证“指定网站代理、其他网站直连”的效果。
下面只对照与本次操作直接相关的三种选项,不是 Global Routing 的完整选项清单。Config 决定使用配置规则;规则中的 PROXY 决定请求交给代理策略。两者名称相近,但不是同一个设置。
Config
推荐按当前生效配置中的规则处理请求。目标域名可以走 PROXY,其他请求可以由 FINAL,DIRECT 直连。
适合:只让明确列出的域名经过代理。
Proxy
将接管的请求交给代理处理,而不是按本文的域名清单划分去向。临时使用后应切回 Config 再做分流测试。
适合:临时检查已有代理连接能否访问目标。
Direct
将接管的请求按直连方式处理,不会因为配置中写有 PROXY 域名规则就自动改用代理。
适合:核对目标在当前网络下的直连表现。
结论:先固定测试条件
开始修改前记录当前配置文件名、所选连接和 Global Routing。后续每次只改一项规则,否则无法判断现象来自配置切换、连接变更还是规则本身。
二、按四步建立最小规则配置
先在 Home 确认可用连接已经选中,再进入 Config 处理配置。已有订阅用于管理连接资料,并不等于已经启用本文需要的域名分流规则。连接列表更新与配置规则修改应分别核对。
-
备份配置
进入 Config,记录当前选中的文件,使用可用的分享或导出操作保留原内容。修改已有配置时,尤其要保留原先的 DNS、Host 与策略设置,避免为了添加域名而覆盖整个文件。
-
编辑规则
在 Config 中打开准备使用的配置并进入编辑,在已有的
[Rule]段内添加下文示例。若原文件已有该段,就编辑原段,不要再追加第二个同名段。 -
启用文件
保存后回到 Config,确认选中的是刚才编辑的文件,而不是名称相近的另一份配置。仅保存文件不应被当作“已经切换到该文件”的证据。
-
选择姿态
回到 Home → Global Routing → Config,确认 Home 中的目标连接仍然选中,再开启或重新建立连接。接下来通过新的请求检查规则结果,不以已经打开的页面作为唯一依据。
三、用 DOMAIN-SUFFIX 列出代理域名
以下域名仅作语法示例,不是连接服务地址。将它们替换为实际需要访问的网站域名。规则中的域名不带 https://,不带端口,也不带路径;例如目标页面位于 https://www.example.com/account,需要考虑的匹配对象是 www.example.com。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.org,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 匹配 example.com 本身及其子域名,例如 www.example.com 和 api.example.com。它不是“域名中含有 example 就匹配”,因此不会把 notexample.com 当成该域名的子域名。
若只希望某一个主机名经过代理,而不包含整个域名下的其他主机,应使用更窄的 DOMAIN 规则。例如下面只匹配 api.example.com;访问 www.example.com 不会命中这一行,而会继续向下寻找规则。
[Rule]
DOMAIN,api.example.com,PROXY
FINAL,DIRECT
DOMAIN 与 DOMAIN-SUFFIX 不能区分同一域名下的网页路径。若希望同一网站的 /video 走代理、/news 直连,不能通过在 DOMAIN-SUFFIX 后面添加路径实现。先确定需求是按域名区分,还是按页面内容区分,再决定是否适用本文方法。
四、检查规则顺序与 FINAL 的位置
规则按顺序匹配,命中后通常不再继续寻找后面的规则。更具体的例外应写在范围较大的规则前面。FINAL 是剩余请求的兜底项,不应放在待匹配的域名规则之前,也不应把多份配置的 FINAL 原样堆叠在同一个规则段里。
[Rule]
DOMAIN,account.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
这个例子使 account.example.com 先命中 DIRECT;同属 example.com 的其他主机仍可命中后面的 PROXY 规则。如果将前两行交换,范围较大的 DOMAIN-SUFFIX 会先匹配,前述直连例外便无法达到预期。
- 检查原有代理规则:配置中若还有其他 PROXY 规则,未列入新清单的网站仍可能经过代理。“只代理这些域名”要求检查整个生效规则段,而不是只看新加的两行。
- 检查规则集引用:外部规则集或其他策略也可能覆盖请求。用于定位时,可在保留备份的前提下使用独立的最小配置验证,再逐项恢复原规则。
- 区分域名与 IP:GEOIP 依据 IP 归属数据库匹配,IP-CIDR 依据 IP 网段匹配;它们都不等同于网站域名清单。
- 检查共享地址:多个网站可能共用服务地址。不要仅因某个 IP 出现在目标网站连接中,就为它添加宽泛的 IP-CIDR 代理规则。
五、用连接记录验证分流结果
页面能打开,只能说明这次访问成功,不能证明走了预期策略。应同时检查目标主机名、命中规则和实际策略。验证时先使用目标网站与一个不在清单内的网站各产生一组新请求,减少已有连接与页面缓存对判断的干扰。
- 确认 Home → Global Routing 仍为 Config,Config 中仍选中刚修改的文件,并确保连接已经开启。
- 重新发起对目标网站的访问,在应用内连接记录中查找对应主机名,核对是否命中预期的 DOMAIN 或 DOMAIN-SUFFIX 规则,以及是否交给 PROXY。
- 访问一个未写入代理清单的站点,核对相应请求是否由 FINAL 处理并交给 DIRECT。不要用同一网站的另一个子域名充当这个对照样本。
- 若有跳转、登录或图片加载,再分别查看新增请求的主机名。把页面主域名与它依赖的资源域名分开记录,不要只看地址栏。
| 观察到的现象 | 优先核对 | 下一步操作 |
|---|---|---|
| 目标请求命中 FINAL,DIRECT | 域名范围与生效配置 | 检查记录里的实际主机名,确认它是否属于已写入的域名后缀。 |
| 目标命中 PROXY,但请求超时 | 所选连接与服务端可达性 | 保持规则不变,核对已有连接资料和连接测试结果。 |
| 未列入清单的站点也走 PROXY | Global Routing 与其他代理规则 | 确认不是 Proxy,并检查更早的规则或规则集引用。 |
| 网页文字出现,图片或登录失败 | 资源与认证域名 | 查找失败请求的主机名,按实际需要补充窄范围规则。 |
这些是用于判读连接记录的预期现象,不是对任意网络环境的测速结论。若记录已经显示正确命中 PROXY,继续重复添加同一域名没有帮助;此时应转向连接参数、服务端状态或目标访问限制的排查。
六、处理资源域名、DNS 与自动连接干扰
一个网页可能同时请求主站、登录接口、图片域名和独立的内容分发域名。给主站添加 DOMAIN-SUFFIX,不代表页面的全部依赖都在同一个后缀下。应先从失败记录确认域名用途,再决定是否添加,避免为了修复一个资源而代理过大的公共域名范围。
- DNS 与策略分开判断:域名解析失败时,请求可能还未进入预期的后续连接过程。先确认是否能获得解析结果,不要把所有失败都解释为 FINAL 的问题,也不要在同一次测试中同时替换 DNS 与规则。
- 直接使用 IP 的请求另行检查:当记录只有目标 IP、没有可用于匹配的域名时,不能假定 DOMAIN-SUFFIX 必然命中。先查清请求来源,再考虑是否确有使用 IP-CIDR 的必要。
- On Demand 影响连接状态:在 Settings → On Demand 核对自动连接设置。它处理按条件建立连接的行为,不负责替代 DOMAIN-SUFFIX 或 FINAL。需要手动断开作对照时,应同时观察是否又被自动连接。
- 新请求比旧页面更可靠:已建立的长连接或应用内缓存可能继续呈现旧结果。规则保存并重新连接后,应重新发起目标请求,再检查对应的记录。
如果为了排查暂时调整了 On Demand,验证结束后应恢复原先需要的设置。不要用“连接开关一直开启”替代对实际策略的检查;连接状态说明流量接管是否建立,规则记录才用于判断具体请求的去向。
七、保存可回退的规则清单
验证通过后,保留一份能够工作的配置,并记录每个新增域名的用途。后续遇到某个功能失败时,先看它是否新增了请求域名,再做小范围调整。维护目标是让规则与实际需要一致,而不是不断扩大代理范围。
- 每次修改前备份;一次只新增或调整一组关联域名。
- 每次保存后核对 Config 中的选中文件与 Home → Global Routing → Config。
- 每次测试同时检查一个应走 PROXY 的请求和一个应走 DIRECT 的请求。
- 连接资料更新后,确认所选连接仍可用;域名规则正确不代表连接资料始终有效。
Shadowrocket 是闭源商业应用,客户端买断 ≠ 线路套餐。本文以用户已有自己的服务商和连接资料为前提。应用主要用于 iPhone、iPad,也可在 App Store 页面核对 Mac、Apple TV 与 Apple Vision 的兼容性;系统要求与购买适用性以 App Store 页面标注为准,唯一获取入口是 App Store。