自定义规则语法总览:每一个符号的含义
规则分类
ABP 的规则大致分四类:
| 类型 | 用途 | 符号标志 |
|---|---|---|
| 地址拦截 | 拦网络请求 | 无特殊开头 |
| 地址例外 | 放行网络请求 | @@ 开头 |
| 元素隐藏 | CSS 隐藏 DOM 节点 | ## 分隔 |
| 元素隐藏例外 | 放行元素隐藏 | @ 放在域名前 |
通配符与特殊符号
| 符号 | 含义 | 例子 | |||||
|---|---|---|---|---|---|---|---|
* | 匹配任意长度字符(包括空) | banner*.jpg 匹配 banner1.jpg、banner-big.jpg | |||||
^ | 分隔符结束——URL 在这里要么结束,要么后面跟着 / ? = : & # ` | ` 其中之一 | example.com^ 匹配 example.com 及所有子域名请求 | ||||
| ` | ` | URL 边界。开头的 ` | 匹配协议(http:// 或 https://),结尾的 | ` 匹配 URL 结束 | ` | https://example.com/ads | ` 精确匹配完整 URL |
| ` | ` | 域名边界。匹配域名开头(包括协议和任意子域名) | ` | doubleclick.net^` 拦截所有 doubleclick.net 的请求 | |||
## | 元素隐藏分隔符。左边域名,右边 CSS 选择器 | example.com##div.ad-banner | |||||
@@ | 例外规则标记。后面的匹配内容会覆盖对应的拦截规则 | `@@ | facebook.com^` 放行 Facebook 域名的所有请求 | ||||
$ | 规则选项。写在规则最后,$ 后面是选项列表,逗号分隔 | ` | tracker.com^$script` 只拦该域名的脚本请求 | ||||
$ 选项 script | 只匹配 JS 脚本请求 | — | |||||
$ 选项 image | 只匹配图片请求 | — | |||||
$ 选项 document | 只匹配 HTML 文档(主页面) | — | |||||
$ 选项 third-party | 只匹配第三方请求(域名与当前页面不同) | — | |||||
$ 选项 important | 强制优先级——覆盖所有普通规则和例外 | ` | doubleclick.net^$important` |
优先级
例外规则(@@)默认优先于拦截规则。但如果你写了 $important,它会反过来压过普通的例外规则。这是做"强制拦截"的手段。
注释
以 ! 开头的行是注释,ABP 会忽略它。用来给自己的规则写说明:
! 下面这条拦掉微博的右侧推荐栏
weibo.com##div.recommend-list
规则顺序不影响优先级
ABP 的规则引擎在处理请求时会并行遍历所有规则,不是按文件顺序一条条匹配。所以你自己写的自定义规则放在订阅的前面还是后面不重要——优先级由规则类型和 $important 决定,不由位置决定。