【问题标题】:How to override "WebKit Built in pdf" of safari 10 with adobe pdf?如何用adobe pdf覆盖safari 10的“WebKit Built in pdf”?
【发布时间】:2017-05-02 14:52:11
【问题描述】:

我想用 adobePDFViewer.plugin 覆盖 safari 10 的“webkit built in pdf”,以便 JavaScript 中的 navigator.plugins 可以检测 adobePDFViewer Plugin 而不是“WebKit Built in pdf”

这是我从最新 safari 10 控制台中的 navigator.plugins 获取的插件数组。

平台:“MacIntel”

插件:PluginArray

0: Plugin {0: MimeType, 1: MimeType, 2: MimeType, name: "WebKit built-in PDF", filename: "", description: "", length: 3, item: function, ...}

长度:1

PluginArray 原型

产品:“壁虎”

productSub: "20030107"

userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50"

供应商:“Apple Computer, Inc.”

vendorSub: ""

网络驱动程序:未定义

【问题讨论】:

  • 谢谢我找到了为什么它没有发生..!

标签: safari


【解决方案1】:

大家好,我自己找到了这个解决方案的答案......! 截至目前,Safari 和其他最新浏览器和 Firefox 限制通过 navigator[] 对象数组进行枚举,这意味着它不允许插件对枚举 navigator.plugins[] 的内容进行枚举。此更改不会禁用任何插件;它只是从枚举中隐藏了一些插件名称。

取自https://wiki.mozilla.org/Fingerprinting 理论上,所有插件名称都可以被隐藏,因为 Web 内容可以通过插件名称查询 navigator.plugins[]。不幸的是,我们无法隐藏所有插件名称,因为许多流行的网站通过枚举 navigator.plugins[] 并一一比较插件名称来检查 Flash 或 QuickTime,而不仅仅是按名称询问 navigator.plugins["Shockwave Flash"]。这些网站应该是固定的。

 for (plugin of navigator.plugins) { console.log(plugin.name); }

 "Shockwave Flash"
 "QuickTime Plug-in 7.7.3"
 "Default Browser Helper"
 "Unity Player"
 "Google Earth Plug-in"
 "Silverlight Plug-In"
 "Java Applet Plug-in"
 "Adobe Acrobat NPAPI Plug-in, Version 11.0.18"
 "WacomTabletPlugin"

  navigator.plugins["Adobe Acrobat NPAPI Plug-in, Version 11.0.18"].name // get cloaked plugin by name

  "Adobe Acrobat NPAPI Plug-in, Version 11.0.18"

【讨论】:

    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多