我正在开发 chrome 扩展。我需要能够将每个客户识别为唯一的客户。
我无法将 guid 存储在 cookie 中,因为可以删除 cookie。我需要从系统本身读取一些独特的东西。
现在 - 我知道 JS 无法访问客户端资源(本地资源)但是 - 这是我的问题:
问题
chrome 扩展 Js 是否提供用于获取唯一客户端信息的 API(我不关心什么数据 - 只要它是唯一的)。
编辑 :
只是为了澄清:
用户将看到一个唯一的密钥(这是他计算机的哈希数据)。此代码将发送给我,我将提供匹配结果(通过电子邮件)发送给用户,只有这样 - 他才能使用扩展程序。
(不,并非所有国家/地区都支持通过钱包进行延期付款,我在其中一个国家/地区)
原文由 Royi Namir 发布,翻译遵循 CC BY-SA 4.0 许可协议
为了唯一标识用户,我建议生成一个随机令牌并将其存储在扩展程序的存储中(
chrome.storage
)。当存储中不存在令牌时,用户 ID 只需生成一次。例如:
这个机制依赖于
chrome.storage.sync
,还是比较靠谱的。此存储的 ID 只会在以下情况下丢失:这不会发生,因为唯一的写操作发生在您的扩展的第一次运行时。 - Chrome 的存储损坏,无法保存数据。
即使用户没有启用 Chrome 同步,数据仍会保存在本地。 Chrome 的内部结构存在导致数据丢失的错误,但这些都是事件。 - 用户已打开您的扩展页面的开发人员工具 并运行了
chrome.storage.sync.clear()
或类似的东西。您无法防止拥有破坏 Chrome 扩展程序内部知识的用户。
如果你想唯一标识一个用户,前面的方法就足够了。如果您 真的 想获得基于硬件的 ID,请同时使用
chrome.storage.cpu
和chrome.storage.memory
。不过,我看不到使用这些额外来源有任何好处,因为如果用户更换硬件,它们可能会发生变化,而且它们也不是唯一的(例如,两台相同的笔记本电脑会报告相同的值)。