内容拦截,铬浏览器扩展

今年的“阻塞”的主要趋势(如下所述)使您可以感受到浏览器中内容的强大功能。


我记得很长一段时间,在儿童时期,在看电视,在广告单元中,总是会有一个放假的机会,例如放学休息,去厨房或厕所,切换到其他频道,以及随着年龄的增长而抽烟。

现在我很少看电视,在互联网上阅读新闻,使用广告拦截器。 当他们打电话并尝试使用金融服务或窗口向导时,我会挂断电话。 有时,除了极少数例外,会有一些有趣或有趣的广告,但即使是第二次观看后的此类视频也会变成常规广告。

几年前,我注意到,在所有新闻网站上,您都可以说没有一天没有关于博客的新闻了:某类博客与此类博客发生冲突,或者是杜马州的博客。 博客作者就是这样的“一些新名字”,并且通常是所有其他博客作者中“最多,最多”的博客作者。 同时,当他们写出为什么他“最高,最高”的标准时,这种情况很少见,以便读者可以观看视频或在Internet上搜索(下一个博客作者“他自己,他自己”)。 博客作者引入了新词“ zashkvar”,博客作者对此表示反对,博客作者正在做自己的表演。

关于新闻博客作者的去年有所减少,现在的领导者是“ B ... va”,我没有特别提及,有可能将文章变成有关“ B ... va”的下一个新闻,因此每天都有新新闻。 记者经常被迫在标题上加双关。

我会再写一些例子,但我不会,因为上面所描述的例子并不是在别人批评的帮助下成为一个好自我的尝试。 不管发生什么事情,都有可能是破坏或过量。 我非常确定,每个人在新闻中都有自己的“领导者”,他们宁愿看不到,没有他们,他们的日子会变得更好。

上面的示例本质上是一种广告,但是当以新闻的形式分发时,它们不会受到任何广告屏蔽。 许多浏览器具有内置的广告拦截功能,但不幸的是,无法通过内容中的单词来拦截内容。 我尝试搜索扩展程序,但没有找到必要的说明,广告拦截器引起了我的注意,它们似乎能够根据文字进行屏蔽,但我没有尝试下注。 最近,我看到几篇文章指出,并非所有扩展程序都是安全的,而编写自己的,简单的,仅具有剪切内容必要功能的功能会更有趣。

关于创建扩展的文章很多,但是本文不是有关创建扩展的说明。
该扩展程序的第一个版本仅用了几个小时就出现了,切割算法简单且通用。 普遍性的缺点是该算法可能不适用于所有站点。 但是要使扩展正常工作,我必须编写很多代码来显示计数器,每个页面的隐藏内容。

content_script.js部分是阻止内容的主要逻辑:

let search = document.evaluate('/html/body//*[contains(., "...") and count(child::node())<childsLimit]', document.body, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); let thisHeading = search.iterateNext(); while (thisHeading) { if (thisHeading.tagName !== 'script' && thisHeading.style.display != 'none') { thisHeading.style.display = 'none'; } thisHeading = search.iterateNext(); } 

上面的代码片段显示使用了“ document.evaluate”方法。 在标签中搜索文本时,根元素也会落入结果中。 例如,整个页面的文本,新闻块的文本等。 为了消除不必要的元素,使用了关于嵌套子代数的第二个条件。 在我的案例中,数字9出现了,在三个站点上,多余的东西迅速而简单地隐藏了,尽管有时在某个街区中的一个站点上有一张照片,但是没有新闻链接和图片链接。

最初是希望同时创建扩展程序设置页面,也许以后再做。 同时,基本设置直接在代码中进行。

background.js的一部分是内容阻止设置:

 let childsLimit = 9; let blockString = '[contains(., "...") and count(child::node())<childsLimit]'; let blockOnlyUrlOpt = false; let urlOptions = [{url: 'https://exampleSite.com', unBlock: true, childsLimit: 4}]; 

第一个变量“ childsLimit”使您可以设置锁定元素的整体嵌套级别。

第二个变量“ blockString”包含xpath条件,添加一个新单词时,您需要将所有内容与方括号一起复制,并在单词末尾添加“或”,然后用双引号替换搜索词。

 let blockString = '[contains(., "1") and count(.//*)<childsLimit] or [contains(., "2") and count(.//*)<childsLimit]'; 

第三个变量“ urlOptions”使您可以微调不同站点的设置。
属性“ url”-包含将应用设置的地址。
“ unBlock”属性-布尔值true允许不阻止在“ url”中指定的网站上的内容
“ childsLimit”属性是被阻止的内容项的嵌套级别。
第四个变量“ blockOnlyUrlOpt”允许您定义通用逻辑。 如果值为true,则阻止仅在变量数组urlOptions中列出的站点上起作用,其中unBlock属性为false。

扩展文件在这里可用。

要安装,您必须:

  • 将所有文件下载到任何方便的文件夹中。
  • 在浏览器中,转到扩展并启用开发人员模式。
  • 在“下载已解压缩的扩展名...”按钮上,从第一点开始指定文件夹。

在Opera浏览器中开发和测试的其他铬浏览器也可以使用。

Source: https://habr.com/ru/post/zh-CN425361/


All Articles