如何使用随机 HTML id 属性来屏蔽广告?

如何使用随机 HTML id 属性来屏蔽广告?

我使用 uBlock Origin 作为广告拦截器。它可以通过一个可以识别 HTMLidclass元素属性的选择器工具轻松添加自定义过滤器。

有些网站id每次加载页面时都会随机生成广告部分。有什么有效的方法可以屏蔽此类广告?id现在无法屏蔽特定广告了。

以下是此类页面的示例。请注意随机的id

http://www.thelocal.fr/20170219/france-denounces-cyberattacks-blamed-on-moscow

在此处输入图片描述

需要说明的是,目前我对这个网站上的这些广告并不太在意,因为它们有清晰的标签和突出显示,因此浏览页面时很容易跳过。但过去,这个网站没有对它们进行标记,很难区分“赞助”文章和普通文章。这就是我试图屏蔽它们的原因。如果将来我想再次这样做,我想知道该怎么做。

答案1

首先,这都是关于 CSS 的。由于没有唯一 ID,您需要以某种方式进行查询,仅匹配不需要的元素。您可以在浏览器的开发人员工具中使用以下命令对其进行测试

document.querySelectorAll("...")

有时,这些元素具有其他唯一标识它们的属性,例如内联样式。您可以使用属性选择器来匹配它们:

div[style="background: ..."]

有时,这些元素会出现在 DOM 树中的固定点,就像本例一样。有时很难做到正确,但在这里却很容易,因为它们前面总是有另一个(已被屏蔽的)广告:

div.ad_container + div[id*=-widget]

也许是最后一个元素:

div:last-child

您可以阅读有关 CSS 选择器的更多信息Mozilla 开发者网络

但是,如果操作正确,没有脚本您就什么也做不了。我已经看到过这样的脚本,它们会<uaUZGI>在 DOM 树中的随机位置创建一个带有随机名称(如)的标签,然后以某种方式使其出现在屏幕上的所需位置。


除了常规 CSS,uBlock Origin 还支持“程序化美容滤镜”。它们是常规 CSS 过滤器的非常强大的扩展。例如,您可以:

  • 匹配(并隐藏)包含特定文本的元素
  • 匹配已应用特定样式的元素
  • 匹配包含与不同选择器匹配的元素的元素

答案2

一些网站使用浏览器的本地存储来保存“随机 ID”广告。如果是这种情况,请尝试在浏览器中阻止来自该网页的 Cookie/第三方 Cookie。

对于 Chrome,它位于此页面的底部:chrome://settings/cookies

相关内容