一般附加组件/扩展
一般来说,没有:
网页无法确定 Firefox 浏览器/配置文件中安装的附加组件的一般列表。
但是,您可以根据附加组件对环境、DOM 以及可能的脚本操作的影响,很有可能检测到特定附加组件的安装。这些效果完全取决于附加组件。
URI资源泄漏:
As the8472 https://stackoverflow.com/users/1362755/the8472's answer https://stackoverflow.com/a/39334880/3773011指出,某些附加组件可能对环境造成的影响之一是泄露可通过 Web 访问的 URI。您可以测试您所知道的由特定附加组件泄露/提供的内容的有效性。一些可能的 URI 包括以下方案:about:
, moz-extension:
, and resource:
。与测试互联网上存在哪些网页一样,可能的 URI 组合非常广泛,因此进行详尽的搜索是不合理的。对于某些特定扩展,您可以测试确切的已知资源。
DOM/计算样式更改:
您可以测试 DOM 或应用的 CSS 的更改。如果您知道特定附加组件对 DOM(插入、删除等)或特定元素的计算样式的影响,则可以显式测试这些影响。您还可以对您不希望看到的更改进行一般性测试。虽然通常测试意外更改可能会告诉您某个加载项可能影响了您的页面,但如果不知道已知加载项所做的具体预期更改并能够将实际更改与预期更改进行比较,您将不会能够说出哪个附加组件执行了此类更改。
全局范围的变化:
您还可以测试对环境所做的更改。附加组件可能会阻止加载您期望的资源、对这些资源进行更改或添加/注入其他资源/属性/变量/函数。您可以测试是否有任何新的、缺失的或更改的属性。与 DOM/CSS 更改一样,如果您知道附加组件对您的环境产生的影响,您只能声明它可能是特定的附加组件。与 DOM 更改一样,您可以与您期望在每个浏览器(和版本)中看到的内容进行一般比较。同样,这可以告诉您某些内容已更改,但如果不将其与已知更改进行比较,您将无法说它是特定的附加组件(或只是 Firefox 的新版本)。
检测特定的附加组件:
您必须确定任何特定附加组件具有哪些可以被您的页面检测到的效果。这可以通过实验和/或查看附加组件的源代码来确定。对于绝大多数附加组件,附加组件主要是用 JavaScript 编写的。其源代码位于安装包中(通常是.xpi文件,为zip格式文件,扩展名改为.xpi
).
不能 100% 保证任何检测都是准确的附加组件:
你只会知道发生了一些变化。您也许能够识别出您期望由特定附加组件进行的更改,但这并不意味着这些更改不是由另一个附加组件进行的。在这种情况下,更改很可能是您尝试识别的附加组件,但不能 100% 保证。
Plugins
您的问题文本提出了与问题标题截然不同的问题。Plugins https://developer.mozilla.org/en-US/Add-ons/Plugins是一附加组件类型 https://web.archive.org/web/20170910014948/https://stackoverflow.com/documentation/firefox-addon/3235/getting-started-with-firefox-addon/13574/introduction#t=201709100149489262324它提供“用户可以安装的共享库来显示浏览器本机无法显示的内容”。非常具体地说,它们旨在提供网页可用的功能。您绝对可以检测浏览器中可用的插件。您可以使用window.navigator.plugins https://developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/plugins它提供了一个插件数组 https://developer.mozilla.org/en-US/docs/Web/API/PluginArray of 插件对象 https://developer.mozilla.org/en-US/docs/Web/API/Plugin描述已安装的插件。