我使用 uBlock Origin 作为我的广告拦截器。通过选择器工具可以轻松添加自定义过滤器,该工具可以识别元素的 HTMLid和class属性。
有一些网站会id在每次加载页面时为广告部分生成一个随机数。阻止此类广告的有效方法是什么?id不再可能阻止特定对象。
这是此类页面的示例。注意随机id。
http://www.thelocal.fr/20170219/france-denounces-cyberattacks-blamed-on-moscow
需要明确的是,目前我对这个特定网站上的这些广告并不太在意,因为它们被清楚地标记和突出显示,因此在浏览页面时很容易跳过它们。但过去,这个网站并没有给它们贴标签,而且很难将“赞助”文章与普通文章区分开来。这就是促使我试图阻止他们的原因。如果我将来想再做一次,我想知道如何做。
首先,这都是关于 CSS 的。因为没有唯一的 ID,所以您需要以某种方式进行仅匹配不需要的元素的查询。您可以使用浏览器的开发人员工具测试它们
document.querySelectorAll("...")
Run Code Online (Sandbox Code Playgroud)
有时,这些元素具有唯一标识它们的其他属性,例如内联样式。您可以使用属性选择器匹配它们:
div[style="background: ..."]
Run Code Online (Sandbox Code Playgroud)
有时,这些元素出现在 DOM 树中的某个固定点,就像在这种情况下一样。有时很难做到正确,但在这里很容易,因为在他们之前总是有另一个(已经被屏蔽的)广告:
div.ad_container + div[id*=-widget]
Run Code Online (Sandbox Code Playgroud)
也许这是最后一个元素:
div:last-child
Run Code Online (Sandbox Code Playgroud)
您可以在Mozilla Developer Network阅读更多关于 CSS 选择器的信息。
但是,如果操作正确,没有脚本您将无法执行任何操作。我已经看到脚本会<uaUZGI>在 DOM 树中的随机位置创建一个带有随机名称(如)的标签,然后以某种方式使其出现在屏幕上所需的位置。
除了常规的 CSS,uBlock Origin 还支持“程序性化妆品过滤器”。它们是常规 CSS 过滤器的非常强大的扩展。例如,您可以:
| 归档时间: |
|
| 查看次数: |
7198 次 |
| 最近记录: |