十大机场 Airport Lab
教程

如何编写自己的Clash分流规则?拦截广告与指定出口

手把手教你编写 Clash 分流规则,实现广告拦截与指定出口。从规则语法到实战案例,打造专属极客配置。

十大机场评测组

前言:为什么需要自定义分流规则?

Clash 作为一款强大的代理客户端,其核心优势在于灵活的分流规则系统。默认规则往往无法满足个性化需求:你希望 Netflix 走香港节点、YouTube 走美国节点,同时拦截烦人的广告。编写自己的规则,才能实现真正的指哪打哪

极客提示:高质量的分流规则能显著提升代理体验。如果你还没有稳定的节点来源,可以先到本站机场库按线路类型筛选,Clash 配置教程见入门篇

1. 规则语法基础

Clash 规则文件通常为 .yaml 格式,规则部分位于 rules: 字段下。每条规则由三部分组成:类型匹配值策略

# 示例规则
rules:
  - DOMAIN-SUFFIX,google.com,Proxy  # 域名后缀匹配
  - DOMAIN-KEYWORD,ad,REJECT        # 域名关键字匹配,REJECT 即拒绝
  - IP-CIDR,192.168.1.0/24,DIRECT   # IP 段匹配,DIRECT 直连
  - GEOIP,CN,DIRECT                 # 地理 IP 匹配
  - MATCH,Proxy                     # 兜底规则,匹配所有剩余流量

常用类型:

  • DOMAIN-SUFFIX:匹配域名后缀,如 example.com 匹配 sub.example.com
  • DOMAIN-KEYWORD:匹配域名中包含的关键字
  • DOMAIN:精确匹配完整域名
  • IP-CIDR:匹配 IP 段
  • GEOIP:匹配国家/地区 IP
  • MATCH:兜底规则

策略可以是:Proxy(走代理)、DIRECT(直连)、REJECT(拒绝,用于广告拦截)或自定义策略组名称。

2. 实战:编写广告拦截规则

广告拦截的核心是将广告域名或 IP 指向 REJECT 策略。推荐结合社区维护的广告列表,并添加自己的规则。

2.1 基础广告规则示例

rules:
  # 常见广告联盟域名
  - DOMAIN-SUFFIX,doubleclick.net,REJECT
  - DOMAIN-SUFFIX,adsrvr.org,REJECT
  - DOMAIN-SUFFIX,googlesyndication.com,REJECT
  - DOMAIN-KEYWORD,adservice,REJECT
  - DOMAIN-KEYWORD,analytics,REJECT
  - DOMAIN-KEYWORD,tracking,REJECT

注意:Clash 规则只能匹配域名和 IP,无法匹配 URL 路径——所以 YouTube 视频内嵌广告(与正片同域名 googlevideo.com)用 Clash 规则去不掉,硬拦会连正片一起挂。这类广告交给浏览器插件(uBlock Origin 等)处理,Clash 只负责拦域名级的广告联盟与统计上报。

2.2 使用外部规则集(推荐)

Clash 支持 rule-provider 功能,可以引用远程规则文件,自动更新。

rule-providers:
  adblock:
    type: http
    behavior: classical
    url: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list"
    path: ./ruleset/adblock.yaml
    interval: 86400

然后在 rules 中引用:

rules:
  - RULE-SET,adblock,REJECT
  - MATCH,Proxy

3. 指定出口:多节点分流

假设你有三个节点:香港(HK)、美国(US)、日本(JP),希望不同流量走不同出口。

3.1 定义策略组

proxy-groups:
  - name: Netflix
    type: select
    proxies:
      - HK
      - JP
  - name: YouTube
    type: select
    proxies:
      - US
      - HK
  - name: 其他
    type: select
    proxies:
      - HK

3.2 编写分流规则

rules:
  # Netflix 走 Netflix 策略组
  - DOMAIN-SUFFIX,netflix.com,Netflix
  - DOMAIN-SUFFIX,nflxvideo.net,Netflix
  - DOMAIN-SUFFIX,nflximg.com,Netflix
  # YouTube 走 YouTube 策略组
  - DOMAIN-SUFFIX,youtube.com,YouTube
  - DOMAIN-SUFFIX,googlevideo.com,YouTube
  - DOMAIN-SUFFIX,ytimg.com,YouTube
  # 国内网站直连
  - DOMAIN-SUFFIX,cn,DIRECT
  - GEOIP,CN,DIRECT
  # 其他流量走默认代理
  - MATCH,其他

优化建议:将 .cn 域名和国内 IP 段设置为 DIRECT,避免绕路。同时,MATCH 兜底规则务必放在最后。

4. 测试与调试

编写规则后,务必进行测试:

  1. 使用 Clash 内置的 日志 功能(log-level: info),查看匹配情况。
  2. 访问被拦截的网站,检查是否成功 REJECT
  3. 使用 curl -x http://127.0.0.1:7890 http://ip-api.com 测试出口 IP。

常见问题排查:

  • 规则未生效:检查规则顺序,Clash 是从上到下匹配,第一条匹配即停止。
  • 代理节点不可用:先按节点超时排查指南定位问题层级,再考虑换节点或换服务商。

总结

编写 Clash 分流规则并不复杂,关键在于理解语法和策略组。通过自定义规则,你不仅能拦截广告,还能实现精细化流量管理。建议从简单规则开始,逐步迭代,配合社区规则集,打造专属于你的高效代理配置。

最后提醒:规则文件请妥善备份,更新时注意合并冲突。好的规则是代理体验的灵魂,值得花时间打磨。

#Clash#分流规则#广告拦截#代理配置#教程