我使用 uBlock Origin 作为广告拦截器。它可以通过一个可以识别 HTMLid
和class
元素属性的选择器工具轻松添加自定义过滤器。
有些网站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