我想为阻止第三方弹出式广告的浏览器实施扩展程序,这是广告拦截器的一部分。但我不知道从哪里开始。有人能指出我可以用来了解更多有关过滤网页内容的参考资料吗? 提前致谢。
答案 0 :(得分:1)
我讨厌只是把你推到你可能找到的链接上,但你需要的一切都在这里:
http://developer.chrome.com/extensions/index.html
如果您花时间阅读它,您将了解扩展程序是如何构建并存在于浏览器中的。如果你阅读的时间足够长,你会发现这一部分:
http://developer.chrome.com/extensions/content_scripts.html
详细介绍了如何将javascript注入选项卡并使用页面上下文与插件上下文一起运行。
资源非常详细,您只需要阅读它们。
要跟进您的评论,否。每个浏览器环境的架构都不同,即使目标相同,您也可能不得不针对同一问题采取不同的方法。 / p>
我看到它的方式,有两种方法(在高级别)。阻止传输甚至发生,或者在加载后从页面中追溯删除元素。
如果你停止传输,它会更好,因为它应该防止大量的偷渡式漏洞利用,因为字节永远不会进入计算机,或至少到达页面。
正如duskwuff解释的那样,chrome有一个API,可以让你拦截请求并在那时作出决定。 IE将与chrome完全不同,而firefox与两者都不同。
采用后瞻性的方法,您可能会构建一些针对该页面运行的x-platform javascript并删除广告。如果您可以在所有浏览器的选项卡中找到注入/执行此脚本的唯一方法,那么这将是“跨浏览器”,但该部分的实现对于平台来说是唯一的。
不同的浏览器甚至使用不同的语言。
Chrome使用JS / HTML5进行大多数扩展,您可以使用本机DLL,但是当您将扩展程序提交到商店时,您会受到更严格的审查,因为二进制文件需要经过审查,因为它不会为浏览器暴露问题,因为html / js版本位于沙箱内,可以正确隔离。
Firefox在最后一段时间里发生了很大的变化,但是我还没有跟上他们的变化,但这是一个完全不同的球赛。他们的扩展框架已经成熟到足以构建小型独立应用程序iirc,但我可能错了。
IE主要是COM扩展,它可能在最后一段时间内发生了一些变化,但你可能会制作与浏览器的COM接口互操作的.NET或C ++ .dll。
因为你可以看到它对每个浏览器都有很大不同,那就是所有异常值(Safari / Opera /等......)
我们不要忘记很多这些浏览器也是跨平台的,并且根据您如何攻击问题,您可能必须考虑到这一点。
值得注意的是:Chrome是一种异步模型,每个标签/插件彼此“孤立”,并且基本上使用异步消息进行通信。这使得使用浏览器的一般方法与其他浏览器根本不同,因为你需要在回调方法中工作很多。
答案 1 :(得分:1)
对于谷歌浏览器,广告屏蔽的基础是chrome.webRequest
API,它会提供有关正在进行的网络请求的扩展信息,并允许它拦截或修改正在进行的请求。