如何从Chrome扩展中获取设备名称(或主机名)?

9

有没有一种方法可以从Chrome扩展中检索设备名称?

理想情况下,我希望能够获得与“其他设备”菜单中显示的字符串相同的字符串... 扩展程序是否可以获取这些信息?

或者,主机名是否可用?

我所能获取的是通过访问window.navigator.userAgent获取的用户代理,但仅限于此...

2个回答

9

编号。与用户硬件相关联的持久且唯一的标识符基本上就是一个不可删除的cookie。出于隐私原因,浏览器(和浏览器扩展API)不会提供这样的标识符。

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


会话菜单中的设备名称并不唯一,有时会使用操作系统名称(我的 Debian 机器仅列为“Debian GNU/Linux 7.0 (wheezy)”),因此我认为它们泄露的信息不比用户代理更多。你有任何参考资料吗? - michele b
用户代理绝对会泄露信息,标准的“无论如何都不是私人的”链接是https://panopticlick.eff.org/。只是为了明确,当你说“设备名称”时,你是指像“Nexus 7”这样的东西(更像是硬件能力),还是像“Michele's Nexus 7”这样的唯一标识符?既然你问到主机名,我就假设是后者的解释。 - sowbug
很有趣想知道Chrome是如何获取这些名称的,它们看起来像是用户代理的一部分,经过操作使其更加用户友好。例如,我的Android设备是通过其型号名称列出的(例如GT-I9100),而我的Windows 7虚拟机标记为MICHELE-LAPTOP7(我猜这是主机名?现在无法检查)。我可以让用户解决名称冲突,所以我不需要唯一性...可能型号名称就足够了。我会等待看看是否还有其他内容出现,否则我会接受这个答案,谢谢! - michele b
谢谢。很抱歉我不能给出更有帮助的答案。Chrome总是比Chrome扩展更强大,因为它是一个本地应用程序。它可能会调用操作系统级别的API(例如,在Windows上http://msdn.microsoft.com/en-us/library/windows/desktop/ms724295(v=vs.85).aspx)。但是出于我回答中提到的原因,这种信息不会通过扩展API提供。 - sowbug

7

是的。自Chrome 43版本发布以来(该版本发布时间晚于此问题和其他答案),您可以使用chrome.instanceID.getID()在Chrome扩展中获取唯一设备ID。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接