首页
/ uBlockOrigin/uAssets项目中关于Wikiwand广告过滤的技术分析

uBlockOrigin/uAssets项目中关于Wikiwand广告过滤的技术分析

2025-06-12 13:56:25作者:劳婵绚Shirley

问题背景

在uBlockOrigin/uAssets开源项目中,用户报告了Wikiwand网站存在广告残留问题。该问题表现为页面中仍然显示广告内容,影响了用户体验。经过技术团队分析,确认这是一个可以通过EasyList过滤器解决的问题。

技术分析

广告元素特征

通过分析页面结构,发现Wikiwand网站上的广告具有以下特征:

  1. 广告容器使用div元素
  2. 广告容器的class属性以"wrapper_wrapper"开头
  3. 广告容器内部包含id以"ezoic-pub-ad"开头的子元素

解决方案

针对这种广告模式,技术团队提出了以下过滤规则:

wikiwand.com##div[class^="wrapper_wrapper"]:has(> div[id^="ezoic-pub-ad"])

这条规则的工作原理是:

  1. 匹配wikiwand.com域名下的所有页面
  2. 查找所有class属性以"wrapper_wrapper"开头的div元素
  3. 进一步筛选出那些包含直接子元素且子元素id以"ezoic-pub-ad"开头的div元素
  4. 将这些匹配的元素从页面中移除

技术实现细节

该过滤规则使用了CSS选择器的两个高级特性:

  1. 属性选择器([class^="wrapper_wrapper"]):匹配class属性以特定字符串开头的元素
  2. :has()伪类:匹配包含特定子元素的父元素

这种组合选择器能够精确地定位到广告容器,而不会误伤正常内容。uBlock Origin的过滤引擎会解析这条规则,并在页面加载时动态移除匹配的广告元素。

项目意义

这个问题的解决体现了uBlockOrigin/uAssets项目的几个重要特点:

  1. 社区驱动:用户报告问题,开发者快速响应
  2. 精准过滤:使用高级选择器确保只移除广告内容
  3. 开源协作:解决方案公开透明,可供所有人审查和改进

该过滤规则已被合并到项目中,将随下次过滤器更新推送给所有用户,为Wikiwand网站的访问者提供更清洁的浏览体验。

登录后查看全文
热门项目推荐