检测浏览器已安装的插件和扩展
检测浏览器是否内置真实的 PDF 预览功能,可识别插件伪装
比对插件列表与 MIME 类型的逻辑关系
检测 navigator.plugins 是否被脚本劫持或伪装
注意:为了防止浏览器指纹识别,现代浏览器的plugins接口通常只能看到内置的 PDF Viewer 等极少数插件。
检测已被现代浏览器弃用的传统插件状态
插件和扩展为浏览器增添强大功能,但每一个也可能留下痕迹,让你的浏览器更容易被识别。理解它们如何被检测、以及一组不寻常的扩展如何抬高你的唯一性,有助于你在便利与隐私之间取得平衡。
扩展是定制浏览器的小程序,可增添广告拦截、密码管理或翻译等功能。插件则是更早的技术,如 Flash 和 Java 小程序,用于运行嵌入式内容,因安全原因已基本退役。如今几乎一切都以基于网络技术的现代扩展形式运行,但在指纹识别的讨论中两个术语仍会出现,因为它们各自都能暴露独特的信号。
旧式插件使用 NPAPI 等接口,可被直接枚举,因此已安装列表曾是丰富的指纹来源。浏览器多年前移除了该能力以堵上安全漏洞,于是经典的插件列表如今大多为空或趋于标准化。扩展取代了插件,并被刻意设计得更难枚举——但正如后续章节所述,它们的影响仍能以间接方式被观察到。
尽管浏览器不再暴露你的扩展列表,这些扩展对页面所做的改动却清晰可见。广告拦截器会移除特定元素,密码管理器会注入表单字段,翻译工具会改动文字,许多扩展还会从可预测的内部地址加载资源。通过观察这些影响,网站无需直接询问浏览器,便能推断出你正在运行哪些扩展。
检测依赖副作用。脚本可以探测扩展的可被网页访问的资源、观察它对 DOM 的改动、测量它引入的时序差异,或检测它注入的内容脚本。每确认一个扩展都会增加识别信息。由于这些技术利用的是扩展自身的行为而非特权接口,因此很难在不停用引发问题的扩展的前提下加以阻止。
扩展由个人喜好决定,因此一组不寻常的组合可能比你的硬件更具识别性。几个小众扩展凑在一起,便可能形成一个几乎无人共享的集合,把你为隐私或便利安装的工具变成强而持久的指纹。讽刺的是,某些反追踪扩展本身足够罕见,反而抬高了你的唯一性而非降低它。
只从官方商店和可信开发者处安装扩展,因为恶意扩展能读取你在线上所做的一切。定期检视清单,移除不再使用的扩展,既为安全也为缩小指纹。处理敏感任务时,使用干净的配置文件或隐身窗口——它会停用大多数扩展——可同时减少你的攻击面和可追踪性。
插件检测会查看你的浏览器向网站暴露了什么:navigator.plugins 列表中的条目、浏览器声称能处理的 MIME 类型,以及那些即便未被直接列出、也能揭示热门扩展的行为线索。出于隐私考虑,现代浏览器不再暴露完整的扩展列表,因此检测依赖副作用——被注入的元素、被修改的页面资源,或扩展自带的可被网页访问的文件。运行检测能显示你的配置泄漏了其中哪些信号,以及它们给你的指纹增加了多少。
过去,网站会读取 navigator.plugins 数组来枚举已安装的插件,如 Flash 或 PDF 查看器。如今逻辑反了过来:为抑制指纹识别,现代浏览器会返回一份标准化、硬编码的列表——通常只有寥寥几个内置 PDF 查看器条目,而且在 Chrome、Edge 和 Firefox 之间几乎完全一致——因此这份列表本身如今几乎不携带信息熵。但该接口对检测依然重要,因为无头或被伪装的浏览器往往无法完美复现它,而一个与所声称的 User-Agent 不符的插件列表,就是一项立即可判的机器人信号。
不能直接看到。现代浏览器不再交出你的扩展列表。然而,网站往往能通过检测扩展对页面所做的改动或加载的资源来推断出你运行了哪些,因此你的扩展并不像看上去那么私密。
可能会。由于扩展选择因人而异,一组不寻常的扩展会为你的指纹增加信息熵,可能比硬件更精确地识别你。即使是隐私扩展,若足够罕见也会适得其反。保持一组精简、常见且可信的扩展是更安全的平衡。
默认情况下,大多数扩展在隐身或无痕窗口中会被关闭,除非你明确允许。这在敏感浏览时既降低安全风险也减少指纹识别,这也是隐身模式让人感觉更匿名的原因之一,尽管它本身并不能阻止指纹识别。
优先选择信誉良好的开发者出品、用户众多、近期有更新且权限最少的知名扩展。广泛使用的工具通常审计更充分,且因使用者众多,对你唯一性的贡献也小于冷门扩展。任何不再实际使用的都应移除。
运行一次插件检测。它会读取你的 navigator.plugins 列表和受支持的 MIME 类型,并查找那些能揭示常见扩展的副作用,然后显示网站会检测到的内容。由于浏览器已收紧了直接列出扩展的能力,检测重点放在仍会泄漏的信号上——以及你的插件数据是否与浏览器其余部分相一致。
基本上不再使用了。Flash 和 Java 小程序等旧式插件已从现代浏览器中移除,被内置功能和网络标准所取代。如今留下的是一份小而基本固定的 navigator.plugins 列表(往往只有一个 PDF 查看器),外加浏览器扩展,而后者是另一套独立系统。不过旧式插件接口仍然存在,如今更多用于指纹识别和机器人检测,而非真正的功能。