Skip to content

Clash 自定义规则编写实战:网络抓包、域名提取与规则验证全流程 ​

直接答案:掌握自定义规则编写是区分普通 Clash 用户与进阶网络工程师的核心分水岭。第三方公开规则库(如 ACL4SSR 或 Loyalsoldier)固然庞大,但永远无法覆盖企业内网 OA、私有 VPS 隧道、小众专业开发文档、以及刚上线的海外突发服务。编写一条高可用自定义规则的标准工业流程包括:① 通过 Clash 控制台日志或浏览器抓包捕获目标 Host -> ② 提炼二级根域名 -> ③ 依据匹配决断树挑选最优规则原语 -> ④ 注入配置并执行无感热重载验证。


一、网络抓包与目标域名提取三大手段 (一手实测对比) ​

在手写规则之前,首要任务是“抓出应用程序在后台悄悄请求了哪些域名或 IP”。以下为三种主流抓包方式的适用场景对比:

抓包工具 / 方式捕获能力层级操作复杂度适用分析场景
Clash 客户端 Connections 面板L4 ~ L7 传输层极低 (一键查看)首选工具! 实时捕获全局所有 App 流量与当前命中规则
浏览器开发者工具 (F12)L7 应用层低 (浏览器内置)网页打不开、图片/CSS 切片资源加载失败排查
Wireshark 原始数据包捕获L2 ~ L7 物理链路高 (需解密 TLS)排查底层 UDP 丢包、非标准私有协议握手

二、利用 Clash 控制台捕获真实请求实操 (一手实战案例) ​

假设你遇到一个海外新兴的 AI 绘画工具 paint-cloud.xyz 打不开,如何从 0 编写规则?

步骤 1:打开 Clash 控制台“连接 (Connections)”面板 ​

  1. 在 Clash Verge Rev 或 Mihomo 仪表盘中,进入 连接 (Connections) 页面;
  2. 清空当前已有记录,在浏览器中刷新打不开的网页;
  3. 在搜索过滤框中输入关键字(如 paint);
  4. 观察捕获到的连接详情:
    Host: api-v2.paint-cloud.xyz:443
    Network: TCP
    Process: chrome.exe
    Rule: MATCH --> DIRECT (发现问题:未命中任何代理规则,默认被兜底走直连导致被墙)

步骤 2:识别次级关联域名与静态 CDN 资源 ​

很多现代 Web 应用的前端与后端 API、鉴权服务、图片存储是解耦的。在控制台往往会看到伴随产生的多条请求:

  • auth.paint-cdn.net (鉴权中心)
  • static.paint-assets.org (静态图床)

如果只写了 paint-cloud.xyz,就会出现“网页文字打开了,但图片全部裂开、无法登录”的半死不活现象。因此必须将这一组关联域名全部收纳。


三、规则类型选型决断树 (一手工程标准) ​

提取出域名后,切忌无脑使用全通配。应当依据以下决断逻辑挑选开销最小、安全性最高的规则原语:

                    [获得捕获到的目标]
                            |
           目标是纯 IP 吗? (如 192.168.1.50)
             /                              \
          (是)                              (否: 是域名)
           |                                     |
   选用 IP-CIDR 规则                   是否需要匹配主域及所有子域名?
   (加 no-resolve 避免多余解析)               /                      \
                                          (是)                     (否)
                                           |                        |
                              选用 DOMAIN-SUFFIX       该服务仅开放单一 API 接口?
                              (如 DOMAIN-SUFFIX,               /             \
                                  paint-cloud.xyz)           (是)            (否)
                                                              |               |
                                                         选用 DOMAIN    选用 DOMAIN-KEYWORD
                                                         (严格单点匹配)   (粗粒度包含匹配)

常见原语选择避坑军规: ​

  1. 尽量少用 DOMAIN-KEYWORD: 例如你写了 DOMAIN-KEYWORD,google,PROXY,不仅匹配了 Google 服务,还会误伤国内诸如 google.cn、甚至某些带有 google 字符的国内软件测试包。
  2. 绝对优先使用 DOMAIN-SUFFIX: DOMAIN-SUFFIX,github.com 会完美覆盖 api.github.com、raw.githubusercontent.com(若包含二级主域),精准且由于底层采用 Trie 树索引,性能损耗趋近于零。

四、注入主配置并热验证实战模板 ​

提取好规则后,打开你的自定义配置文件,将其精准插入到合适的位置:

yaml
# ========================================================
# 自定义规则注入区 (Custom User Rules)
# 必须放置于 GEOIP,CN 以及 MATCH 兜底规则之前!
# ========================================================
rules:
  # ========================================================
  # 实战案例 1:私有海外 AI 工具全家桶走代理
  # ========================================================
  - DOMAIN-SUFFIX,paint-cloud.xyz,🚀 节点选择
  - DOMAIN-SUFFIX,paint-cdn.net,🚀 节点选择
  - DOMAIN-SUFFIX,paint-assets.org,🚀 节点选择

  # ========================================================
  # 实战案例 2:公司内网研发系统走直连 (防被代理劫持)
  # ========================================================
  - DOMAIN-SUFFIX,corp.internal.mycompany.com,DIRECT
  - IP-CIDR,10.200.0.0/16,DIRECT,no-resolve

  # ========================================================
  # 实战案例 3:精准阻断顽固弹窗广告
  # ========================================================
  - DOMAIN,tracking.ad-analytics-bad.com,REJECT

  # ========================================================
  # 下方承接常规开源规则集与兜底规则
  # ========================================================
  - RULE-SET,direct-list,DIRECT
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,🚀 节点选择

热重载与生效验证: ​

  1. 保存 YAML 文件后,客户端通常会自动检测热重载;
  2. 重新访问此前打不开的目标网站;
  3. 再次切回 Clash 控制台 Connections 面板,查看该 Host 的连接属性:
    Host: api-v2.paint-cloud.xyz:443
    Rule: DOMAIN-SUFFIX,paint-cloud.xyz --> 🚀 节点选择
    Status: Connected (握手成功,延迟 35ms)
    至此,一条高可用的自定义规则即宣告闭环上线!

五、编写自定义规则的“防误杀”三大铁律 ​

  1. 铁律一:绝不在规则顶部放置宽泛的 IP-CIDR,0.0.0.0/0: 这会导致后续所有规则被短路,整个配置直接瘫痪。
  2. 铁律二:国内知名云厂商对象存储(如 OSS / COS)必须审慎配置: 许多国内小软件的升级包托管在阿里云 OSS,但如果写成了包含整个 aliyuncs.com 走代理,会导致国内所有阿里云直连业务全部绕路境外。
  3. 铁律三:IP 规则后必须带 no-resolve 防污染: 除非你明确要求客户端必须发起权威 DNS 解析,否则任何自定义 IP 段规则均应追加 no-resolve 标示符。

六、常见问题解答 (FAQ) ​

Q1: 为什么我添加了 DOMAIN-SUFFIX 规则并保存了,网页还是打不开? ​

A: 常见原因有三点:

  1. 浏览器 DNS 缓存:浏览器本地缓存了此前的“连接失败”或虚假 IP 状态,关闭浏览器或清空缓存即可;
  2. 规则位置放反:你的自定义规则被写在了 GEOIP,CN,DIRECT 之后,且该域名此前被国内 DNS 解析为了某个大陆临时 IP 被短路拦截;
  3. 域名拼写错误:少写了点号或使用了带 http:// 的完整 URL(规则中只能写纯域名主机名,不能带协议头和路径)。

Q2: 自定义规则很多时,手写几百行在主配置里太乱,如何整理? ​

A: 将这些自定义规则提炼为一个独立的本地文本文件(如 custom.list),并在主配置中声明一个 type: file 的 rule-providers,让主配置文件永远保持精简清爽。


七、延伸阅读与相关资源 ​