阻止特定脚本中的特定功能在浏览器内执行

时间:2018-02-10 17:39:12

标签: javascript firefox dom google-chrome-extension adblock

是否可以阻止特定脚本中的特定功能在浏览器内执行,可能是通过使用预定义规则将该功能的调用重定向到脚本文件的静态/修改版本? (类似于我们如何使用adblocker扩展或用户脚本来自定义DOM,但这次是自己操纵脚本。)

考虑这种情况,website.com大量使用客户端渲染。访问https://website.com/article.html时,捆绑的大型JS文件https://website.com/entire-app.js将呈现整个网页,包括内容和广告。

最后,isAdblockerFound()中名为https://website.com/entire-app.js的函数将由antiAdBlockerMethod()在同一个脚本文件中调用。它会检查页面上的广告是否确实已加载,并执行其他广告拦截器检测程序。如果此函数返回true,则antiAdBlockerMethod()将使用一些大的警告文本废弃并替换DOM中的所有渲染元素。

在这种情况下,脚本https://website.com/entire-app.js会处理所有客户端页面呈现,包括广告和内容,因此只需将其阻止加载即可使网站无法访问。

为了绕过/欺骗isAdblockerFound(),我提出的想法是以某种方式用isAdblockerFound()函数替换false函数,该函数在调用之前始终返回isAdblockerFound() 。也就是说,告诉浏览器将isAdblockerFound()的调用重定向到脚本文件的静态/修改版本中的自定义website.com,在本地托管或暂时驻留在浏览器中。

我知道如果我们不需要预定义规则,我们可以使用devtools使用断点冻结脚本并轻松地在行之间执行任何操作。但是我们如何使用预定义规则自动执行此操作?需要哪些扩展/工具?

Google没有给我任何有用的信息(所有结果都是关于快递路由等)。

编辑:我了解我可以随时停用我的广告拦截器,这对于这个问题来说是一个简单的解决方案。我也理解为什么广告首先存在于网络上,并欣赏广告带来的有价值的内容。实际上我从来没有动机将这个应用到我访问的任何网站,而且我不知道任何网站在我的示例中使用与{{1}}完全相同的adblocker检查程序。我问了这个问题,因为我只是好奇是否有可能绕过这种检查。

我想,在不同的情况下,一个网站可能是恶意的,安全工程师需要进行分析。他可能会发现在这种情况下愚弄环境检查程序。

1 个答案:

答案 0 :(得分:1)

Firefox提供webextension API webRequest.filterResponseData()来检查和重写任何网络请求的内容,包括javascript加载。这将允许您解析javascript并替换相关方法。

这只留下了构建强大的流式javascript匹配和重写引擎的任务。