Firefox是否有标准的API来检查特定插件的安装?

Does Firefox have a standard API to check installation of specific Addons?

本文关键字:插件 安装 检查 是否 标准 API Firefox      更新时间:2023-09-26

我正在尝试使用纯JavaScript检测某些限制我们网站功能的插件(如Ghostery或DoNotTrackMe)的存在。如果Firefox有一个标准的API来查询插件的存在,它会缩短我的工作。可能是这样的:

AddonManager.getAddonByID("?")

可以检测插件,如Java和Flash (navigator.plugins),但还不能检测插件。

如果您是插件的开发人员,

检测也是可能的。

不,没有这样的API,也不会有。如果浏览器允许网站检测安装了什么扩展,那么这是一个错误和隐私问题——Firefox和Chrome过去修复了这样的问题,目前不应该存在这样的问题。为什么网页不应该知道这个:

  • 插件列表允许相当精确的用户指纹识别,即使cookie和类似机制被禁用,也可能允许跟踪用户。
  • 如果网站可以提前检查是否安装了易受攻击的扩展/扩展版本,那么攻击扩展漏洞会变得简单得多。依赖于特定扩展的社会工程攻击也是如此。
  • 总是有一个机会,网站决定排除网站访问者安装了不受欢迎的软件(各种广告拦截器,漏洞扫描器,下载助手等)。
  • 安装的扩展列表告诉了很多关于用户,他的浏览习惯和偏好-将这些信息提供给网站将是一个巨大的隐私问题。

navigator.plugins功能当然有许多相同的问题——它是在互联网的黑暗时代引入的,当时没有人考虑到这些问题。这就是为什么这个功能正在被积极讨论,并可能在未来受到限制的原因。

当然,现在网站仍然可以尝试通过它们的效果来检测扩展。然而,这不是一个非常可靠的方法,例如,你链接到的广告拦截检测器对我说"没有广告拦截检测",显然是错误的。

奖金信息:谷歌浏览器确实提供了安装的扩展列表,但只对一个网站:Chrome网络商店。Web Store使用它来指示您已经安装了哪些扩展。至于它是否使用这些数据做了其他的事情,我和你一样也不知道。

您可以在FF, IE, Chrome中检测AdBlock

  • http://adblockdetector.com/

你可以检测FlashBlock在FF, IE, Chrome和其他

  • https://gist.github.com/artlung/1420308
  • https://github.com/browserstack/flashblock-detector/blob/master/flashblock-detector.js

你可以检测Ghostery Chrome

  • http://blog.securitee.org/?p=277

请注意,这些脚本使用推理来检测这些插件的存在,没有API。我还没有找到其他插件的检测器,但它们可能存在....(正在进行)