REJECT 是与 DIRECT、代理组并列的一种出口:命中的连接被直接拒绝。把广告与跟踪域名的规则指向 REJECT,就实现了系统级去广告——对所有走 Clash 的应用生效,不限于浏览器。
接入拦截规则集
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.example.com/reject-list.txt" # 换成所选规则源
path: ./ruleset/reject.yaml
interval: 86400
rules:
- RULE-SET,reject,REJECT
# ……其余规则
中文环境常用的拦截源有 anti-AD、Loyalsoldier reject 等。拦截规则应放在直连/代理规则之前,否则广告域名会先被“国内直连”之类的宽规则放走。
网络层拦截的边界
- 能拦:独立域名投放的广告、App 内嵌广告 SDK 的请求、跟踪统计上报。
- 不能拦:与正文同域名同链接下发的广告(如部分视频平台的贴片)——网络层无法区分,需要浏览器插件做元素级处理。
- 因此实践中“Clash REJECT + 浏览器插件”双层组合效果最好,两者互不冲突。
误杀排查与放行
某网站功能异常、图片加载不出来时,怀疑误杀的排查步骤:
- Connections 页面按域名过滤,看是否有连接 Chains 列显示
REJECT。 - 确认误杀后,在拦截规则之前插入放行规则:
DOMAIN-SUFFIX,被误杀的域名.com,DIRECT。 - 不确定时可临时把整条 RULE-SET 注释掉对比验证。
提示:拦截列表越激进误杀越多。首次启用建议选择口碑良好的保守列表,稳定使用一段时间再考虑加强。