域名规则 `||`:拦截某个域名的全部请求
最常用的规则写法
||域名^ 是自定义规则里出现频率最高的一条:
||doubleclick.net^
这条规则的意思是:
- 匹配所有以 doubleclick.net 结尾的域名;
- 不管什么协议(http:// https://);
- 不管什么子域名(cdn1.doubleclick.net、static.doubleclick.net);
- 不管 URL 后面还跟什么参数;
- 只要请求 URL 里出现 doubleclick.net 作为域名部分,一律拦截。
为什么用 || 而不是 *doubleclick.net*
*doubleclick.net*会误匹配——如果某个合法 URL 里恰好有 "doubleclick.net" 这个字符串(比如example.com/guide-doubleclick.net.html),也会被拦;||doubleclick.net^更精确——它只匹配域名部分是 doubleclick.net 的,URL 的路径部分不会被匹配;^是"分隔符结束"标记——确保域名在这里真正结束了,不会和路径里的字符合并。
实际例子
下面三条规则覆盖了谷歌广告体系的大部分请求:
||doubleclick.net^
||googlesyndication.com^
||googleadservices.com^
这三条加起来几乎能拦掉 80% 以上的国际网站广告(前提是这些广告真的走谷歌的广告域名)。
写域名规则前的确认
在写 ||域名^ 之前,先在浏览器开发者工具里确认:
- 打开 Network 面板;
- 点开被你标记为广告的那个请求;
- 看它的请求 URL 里域名部分是什么;
- 确认其他同类广告也走同一个域名。
确定了再写,不要盲猜域名。
加上请求类型选项
更精确的写法:
||doubleclick.net^$script,image
这表示只拦 doubleclick.net 域名下的脚本和图片请求,其他类型(如主页面 document、字体)不拦。这样误伤概率更低,但也可能漏拦某些广告类型。