📚 本文是 科学上网完全指南(2026最新版) 系列教程之一。想系统了解 VPN、Clash 机场、VPS 三大方案与全平台配置,欢迎访问总览页。
📚 本文是 Clash 完全教程(2026):客户端、订阅与规则分流 的配套教程。想系统搞懂 Clash 客户端、订阅导入、规则分流与排障,先看总览页;这篇只聊一个具体场景——用 Clash 的规则系统去广告。
很多人装 Clash 是为了翻墙,但装完发现一个意外惊喜:网页上的弹窗、追踪器、第三方广告 SDK 全消失了。这不是错觉——Clash 的规则系统天然就能去广告,而且比不少专门做去广告的工具更省心。
这篇讲清原理、配置方法、和专业去广告工具的定位差异、以及副作用怎么避。
30 秒速答
- 原理:Clash 规则分流,命中广告域名就 REJECT 丢弃请求,广告根本发不出去。
- 怎么配:用
rule-provider引用 Loyalsoldier/clash-rules 的reject规则集,自动更新。 - 效果边界:只挡域名级广告(弹窗、追踪、SDK),不挡元素级广告(视频片头、App 内广告)。
- 副作用:可能误杀 CDN/统计/验证码服务,导致网页打不开——排查方法见第五节。
- 最强组合:Clash 挡域名 + uBlock Origin 挡元素,组合覆盖率最高。
一、为什么 Clash 能去广告:规则层拦截的原理
Clash 区别于”一键 VPN”的核心能力是规则分流:每条网络流量先过一遍规则表,命中哪条就按哪条走。规则有 17 种类型,其中最关键的去广告去向是 REJECT——直接丢弃请求,不发出任何数据。
整个流程是这样的:
- 你打开一个网页,浏览器除了加载正文,还会请求
doubleclick.net、googlesyndication.com这类广告/追踪域名 - 这些请求经过 Clash 时,规则表里如果写了
DOMAIN-SUFFIX,doubleclick.net,REJECT,请求就被丢弃 - 广告位加载不出来——要么显示空白,要么显示网页主自己的占位图
- 原本要追踪你的 Cookie、指纹、行为数据的请求根本发不出去
和 AdGuard 这种专业工具不同,Clash 的去广告是”规则层拦截”,只看域名。它不知道页面上的哪个 <div> 是广告位(这是元素级拦截,需要浏览器扩展如 uBlock Origin 干),但它能在域名请求发出前就把它掐断,效率高、对系统资源消耗低。
二、Clash 去广告 vs AdGuard / uBlock Origin:定位差异
很多人会问:既然有专门的去广告工具,为什么还要用 Clash 去广告?答案是定位不同、层次不同:
| 维度 | Clash 去广告 | AdGuard Home | uBlock Origin |
|---|---|---|---|
| 拦截层次 | 规则层(域名) | DNS 层(域名) | 元素层(页面元素) |
| 部署难度 | 已装 Clash 就免费可用 | 需要单独部署服务 | 浏览器装扩展即可 |
| 拦截范围 | 全设备所有流量 | 全设备所有 DNS 请求 | 仅浏览器内 |
| 挡视频片头广告 | 不能 | 不能 | 部分能 |
| 挡 App 内广告 | 能(App 走 Clash 时) | 能 | 不能 |
| 挡网页弹窗/追踪 | 能 | 能 | 能 |
| 误杀风险 | 中(规则集可能误收) | 中 | 低(元素级精确) |
结论:
- 日常上网、想清爽网页:Clash 去广告就够,全设备生效、零额外部署。
- 想覆盖更深、不怕折腾:Clash + AdGuard Home 组合,前者管分流后者管 DNS 层。
- 想挡视频片头广告、App 内的元素广告:Clash + uBlock Origin 浏览器扩展,前者挡域名后者挡元素。
三、Loyalsoldier reject 规则集:最省心的配置
去广告的规则手动写不现实——广告域名每天新增,靠自己维护一份黑名单要累死。最省心的方式是引用社区维护的规则集,自动更新、永不落后。
Loyalsoldier/clash-rules 是 Clash 圈里最主流的去广告规则集之一,基于 AdGuard’s Chinese filter + EasyList + 各种社区贡献整理,收录了常见广告、追踪、统计类域名。
完整配置抄作业:
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.txt
interval: 86400 # 24 小时自动更新一次
rules:
- RULE-SET,reject,REJECT
# ... 你原有的其他规则继续写在后面
注意 rules 段的顺序很重要——Clash 是「先命中先赢」,reject 规则应该放在比较靠前的位置(但要在 DOMAIN-SUFFIX,local,DIRECT 这类直连规则之后,避免误杀局域网)。
四、其他去广告规则源
Loyalsoldier 不是唯一选择,可以多源组合提升覆盖率:
- anti-AD(
https://anti-ad.net/clash.yaml):国内维护,广告+追踪+隐私域名合集,覆盖偏国内 - EasyList China(通过 anti-AD 等聚合项目间接引用):经典广告过滤规则
- AdGuard DNS filter:AdGuard 官方维护,国际广告覆盖更全
组合配置示例:
rule-providers:
reject-loyalsoldier:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/loyalsoldier-reject.txt
interval: 86400
reject-antiad:
type: http
behavior: domain
url: "https://anti-ad.net/clash.yaml"
path: ./ruleset/anti-ad.yaml
interval: 86400
rules:
- RULE-SET,reject-loyalsoldier,REJECT
- RULE-SET,reject-antiad,REJECT
# ... 其他规则
多源组合的代价是规则集体积变大、内存占用略增,但 Clash 对此处理得很轻松,普通设备无感。
五、副作用排查:误杀与网页打不开
去广告规则最大的副作用是误杀——某个非广告域名被收进了 reject 名单,导致网站功能异常。
典型误杀场景:
- CDN 域名:某些 CDN 同时托管广告和正常资源,被规则一刀切
- 统计/分析服务:网站用来统计访问量的服务(如 cnzz、百度统计)被当追踪拦掉,导致页面 JS 报错
- 登录验证码服务:极验、geetest 等「滑块验证」服务被误杀,登录页面卡住
排查方法(按症状定位):
- 网页打不开 / 加载不全:临时把
RULE-SET,reject,REJECT这条注释掉,重新加载页面。能正常打开 = 确认是 reject 误杀。 - 找出具体误杀域名:打开浏览器开发者工具(F12)→ Network 面板 → 看哪些请求显示 “blocked” 或超时——这些就是被 REJECT 的域名。
- 加白名单:把误杀域名写到 reject 规则前面(rules 是先命中先赢),例如:
rules:
- DOMAIN-SUFFIX,gmwu.com,DIRECT # 先放行
- RULE-SET,reject,REJECT # 再拦截
常见白名单域名(统计/验证码类容易误杀):
rules:
- DOMAIN-SUFFIX,cnzz.com,DIRECT
- DOMAIN-SUFFIX,umeng.com,DIRECT
- DOMAIN-SUFFIX,geetest.com,DIRECT
- DOMAIN-SUFFIX,baidu.com,DIRECT # 百度统计/统计类
- RULE-SET,reject,REJECT
六、和 DNS 层去广告的协同
如果你装了 Clash 之后还想要更深层的去广告,可以在 dns 段配上 AdGuard DNS 作为 fallback:
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- https://dns.google/dns-query
- https://cloudflare-dns.com/dns-query
fallback:
- https://dns.adguard.com/dns-query # AdGuard 的去广告 DNS
- https://doh.pub/dns-query
这样的好处是:域名解析阶段就过滤一遍广告,连规则层都不用走到——广告域名 DNS 查询直接返回空。代价是 DNS 解析可能稍慢(多了一层过滤判断),但对体感影响不大。
更深的 DNS 层去广告、和 AdGuard Home 的本地部署对比,看 Clash DNS 配置完全指南,那里讲了 fake-ip、fallback、DNS 泄露等机制的完整逻辑。
七、FAQ
Q:配置完 reject 规则,广告还是没少?
A:可能是规则没生效。检查三点:①客户端有没有重新加载配置;②rules 段顺序里 reject 是否被前面的 MATCH 或 GEOIP,CN,DIRECT 等大范围规则抢了命中(reject 要靠前);③rule-provider 的 url 能不能访问(jsdelivr 偶尔抽风,可换 github raw 地址)。
Q:去广告规则会让 Clash 变慢吗?
A:不会。规则匹配是内存查表操作,纳秒级,几十万条规则也感受不到。真正影响速度的是规则顺序——把高频命中的规则放前面。
Q:能在 Clash Verge Rev 里直接开启去广告吗?
A:能。Clash Verge Rev 自带的「规则模式」就内置了去广告规则,开启即用。想自定义就用本文的 rule-provider 方式。
Q:去广告规则集会自动更新吗?
A:会,interval: 86400 表示 24 小时更新一次。嫌慢可以改成 3600(1 小时),但太频繁会增加网络请求,24 小时是合理默认。
Q:为什么 Clash 挡不了抖音/微博的 App 内广告?
A:因为这些广告走的是 App 自有 CDN 域名(不是第三方广告域名),和正文内容混在一起,规则层无法区分。要挡 App 内广告得用 DNS 层过滤 + 元素级工具(如 AdGuard 移动端 App)。
想搞懂 Clash 规则系统的完整机制(17 种规则类型、rule-provider 行为、规则集 behavior 详解),看 Clash 自定义规则完全指南;想理解 fake-ip、DNS 泄露与 fallback 的深层逻辑,看 Clash DNS 配置完全指南;新手从零开始接触 Clash,看 Clash 完全教程。