📚 本文是 科学上网完全指南(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——直接丢弃请求,不发出任何数据

整个流程是这样的:

  1. 你打开一个网页,浏览器除了加载正文,还会请求 doubleclick.netgooglesyndication.com 这类广告/追踪域名
  2. 这些请求经过 Clash 时,规则表里如果写了 DOMAIN-SUFFIX,doubleclick.net,REJECT,请求就被丢弃
  3. 广告位加载不出来——要么显示空白,要么显示网页主自己的占位图
  4. 原本要追踪你的 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-ADhttps://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 等「滑块验证」服务被误杀,登录页面卡住

排查方法(按症状定位):

  1. 网页打不开 / 加载不全:临时把 RULE-SET,reject,REJECT 这条注释掉,重新加载页面。能正常打开 = 确认是 reject 误杀。
  2. 找出具体误杀域名:打开浏览器开发者工具(F12)→ Network 面板 → 看哪些请求显示 “blocked” 或超时——这些就是被 REJECT 的域名。
  3. 加白名单:把误杀域名写到 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 是否被前面的 MATCHGEOIP,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 完全教程