【问题标题】:How do you get the device name (or hostname) from a Chrome Extension?如何从 Chrome 扩展程序中获取设备名称(或主机名)?
【发布时间】:2013-03-21 17:31:56
【问题描述】:

有没有办法从 Chrome 扩展程序中检索设备名称?

理想情况下,我希望获得与新标签页的“其他设备”菜单中显示的字符串相同的字符串...该信息可用于扩展程序吗?

或者,主机名是否可用?

我通过访问window.navigator.userAgent 设法得到的是用户代理,但仅此而已......

【问题讨论】:

    标签: google-chrome google-chrome-extension google-chrome-app


    【解决方案1】:

    没有。与用户硬件相关的持久且唯一的标识符基本上是不可删除的 cookie。出于隐私原因,浏览器(和浏览器扩展 API)不提供此类标识符。

    编辑:从experimental.systemInfo.* 中,您可能能够构建一些描述用户系统某些属性的东西。例如,它的独特性不足以保证下拉菜单的唯一性,但它可能是朝着正确方向迈出的一步。请注意,这些 API 是实验性的,因此您将无法通过网络商店使用它们分发扩展。

    【讨论】:

    • 会话菜单中的设备名称不是唯一的,有时会使用操作系统名称(我的 Debian 机器被简单地列为Debian GNU/Linux 7.0 (wheezy)),所以我认为他们没有给出比用户代理更多的信息.​​.你有什么参考吗?
    • 用户代理肯定会泄露信息,标准的“反正没有什么是私有的”链接是panopticlick.eff.org。需要明确的是,当您说“设备名称”时,您是在谈论“Nexus 7”(更像是硬件功能)还是“Michele 的 Nexus 7”(更像是唯一标识符)之类的东西?由于您询问主机名,我假设后一种解释。
    • 想知道 Chrome 是如何获得这些名称的会很有趣,它们看起来像是经过处理的用户代理的一部分,看起来更加用户友好。例如,我的 Android 设备是通过它们的型号名称(例如 GT-I9100),而我的 Windows 7 VM 标记为 MICHELE-LAPTOP7(我猜它是主机名?现在无法检查)。我可以让用户解决名称冲突,所以我不需要唯一性.. 可能模型名称就足够了。我会等待看看是否有其他问题出现,否则我会接受这个答案,谢谢!
    • 谢谢。抱歉,我无法给出更有帮助的答案。 Chrome 总是比 Chrome 扩展更强大,因为它是一个原生应用程序。它可能正在调用操作系统级别的 API(例如,Windows 上的 msdn.microsoft.com/en-us/library/windows/desktop/…)。但由于我的回答中的原因,不会通过扩展 API 提供此类信息。
    【解决方案2】:

    是的。由于 Chrome 版本 43,在此处的问题和其他答案之后发布了一段时间,因此您可以使用 chrome.instanceID.getID() 在 Chrome 扩展程序中获得唯一的设备 ID。

    其他设备菜单 (chrome://history/syncedTabs) 中的设备名称可以通过 chrome.sessions.getDevices() 找到,但它只包括您的所有其他设备,而不是当前设备!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 2012-02-04
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多