Adguard的 rel=nofollow 的自定义广告屏蔽规则(以梦璃为例)
00 分钟
2023-8-7
2024-3-11
type
category
status
summary
tags
password
slug
创建时间
Aug 7, 2023 04:43 PM
上次编辑时间
Mar 11, 2024 01:27 PM
icon
Date
😀
这篇文章主要讨论了如何使用Adguard的自定义规则来屏蔽梦璃网站的广告。由于广告的dom元素无法准确定位,且Adguard插件生成的基于css选择器的拦截规则并不好用,提出了一个新的方法:利用广告中的a标签中都有一个固定的属性rel值为nofollow来进行广告屏蔽。
 

📝 主要内容

1. 梦璃网站广告现状

梦璃网站存在着很多的广告,如网站页眉页脚、文章的开头和结尾部分和评论区部分都存在较大的广告,因各种原因我决定将其屏蔽
不要纠结于为什么屏蔽,你纠结这个的话,那你为什么会看到这篇文章呢
notion image
notion image

2. 问题分析

通过F12打开开发者工具后,选择元素可以发现,其广告的dom元素无法准确的定位,是采取了随机class的方式
notion image
notion image
但分析其class样式可知,其实又为伪随机,但不确定其是否会变化,所以常规的class定位元素屏蔽方式并不合适
notion image
与其同时,也还有Adguard插件生成的基于css选择器的拦截规则,但就实际尝试而言这并不好用,因为其结果是与DOM树结构高度绑定的,且因为不同页面的DOM结构不一样,而其广告结构类似,很容易导致在其他页面误杀,Adguard插件生成的结果其实并没有针对广告拦截做太多的优化,其用了两个不普遍性的筛选规则,一个是文章的ID,还一个是前面提到的随机生成的class
notion image
要避免这种情况,要不就针对URL路径本身在进行二次限制或通过其他方式,但那样终究复杂度会过高

3. 解决方案

所以只能通过其他方式进行拦截,不过可以注意到,其广告中的a标签中都有一个固定的属性rel值为nofollow
notion image
nofollow 链接属性由 Google 于 2005 年引入,用于处理用来欺骗系统的垃圾链接。一般来说,nofollow 链接属性应用于非自然链接以及网站所有者不想与链接的目标 URL 关联时。 简单来说就是因为这个链接是通往广告的,它并不希望这个link被搜索引擎收录,所以他的广告属性中都有此属性
所以我们可以针对其广告写如下的规则
🚫
moeli-desu.com##div > a[rel="nofollow"]
🕵️‍♂️
规则解释
moeli-desu.com 域名下的 <div> 元素内,选择具有 rel 属性值为 nofollow<a> 元素,并进行屏蔽(隐藏)操作。
这个规则将会选择 moeli-desu.com 域名下的所有 <div> 元素中具有 rel="nofollow" 属性的 <a> 元素,并尝试将其屏蔽掉,从而达到过滤的目的。
参考

📖 延伸阅读

Adguard的 ShadowRoot 的自定义广告屏蔽规则(以 Monica搜索增强广告 为例)
Adguard的 ShadowRoot自定义广告屏蔽规则(以 Monica搜索增强广告 为例)

🤗 总结归纳

  • 广告屏蔽采用网页修改的方式并不是上策,最通用最佳的方式还是进行url拦截,不过根据我对于其的分析其广告url与正常图片url并无法区分,最多只能定向拦截具体图片,但这样反而更不是一个可以长久的方案

📎 参考文章

主要参考
 
欢迎在底部评论区分享您的想法和经验,让我们一起共同探讨,共同进步!

评论
Loading...