gpt4 book ai didi

javascript - 从 chrome 扩展中获取唯一的 ClientID?

转载 作者:IT王子 更新时间:2023-10-29 03:20:05 24 4
gpt4 key购买 nike

我正在开发 Chrome 扩展程序。我需要能够将每个客户识别为唯一的客户。

我无法将 guid 存储在 cookie 中,因为可以删除 cookie。我需要从系统本身读取一些独特的东西。

现在 - 我知道 JS 无法访问客户端资源(本地资源)但是 - 这是我的问题:

问题

chrome extensions Js 是否提供用于获取唯一客户端信息的 API(我不关心什么数据 - 只要它是唯一的)。

编辑:

澄清一下:

用户将看到一个唯一的 key (这是他计算机的哈希数据)。此代码将发送给我,我将提供匹配结果,用户将发送(通过电子邮件),只有这样 - 他才能使用扩展程序。

(不,并非所有国家都支持通过钱包进行延期付款,我在其中一个国家)

最佳答案

为了唯一标识用户,我建议生成一个随机 token 并将其存储在扩展程序的存储空间 (chrome.storage) 中。当存储中不存在 token 时,用户 ID 只需生成一次。

例如:

function getRandomToken() {
// E.g. 8 * 32 = 256 bits token
var randomPool = new Uint8Array(32);
crypto.getRandomValues(randomPool);
var hex = '';
for (var i = 0; i < randomPool.length; ++i) {
hex += randomPool[i].toString(16);
}
// E.g. db18458e2782b2b77e36769c569e263a53885a9944dd0a861e5064eac16f1a
return hex;
}

chrome.storage.sync.get('userid', function(items) {
var userid = items.userid;
if (userid) {
useToken(userid);
} else {
userid = getRandomToken();
chrome.storage.sync.set({userid: userid}, function() {
useToken(userid);
});
}
function useToken(userid) {
// TODO: Use user id for authentication or whatever you want.
}
});

这个机制依赖于chrome.storage.sync , 还是比较靠谱的。此存储的 ID 只会在以下情况下丢失:

  • 用户重新安装扩展程序。卸载扩展程序时将清除本地存储。
  • 已超出其中一个存储配额(阅读 documentation )。
    这不会发生,因为唯一的写入操作发生在您的扩展程序的第一次运行时。
  • Chrome 的存储损坏,无法保存数据。
    即使用户没有启用 Chrome 同步,数据仍会保存在本地。 Chrome 的内部结构存在导致数据丢失的错误,但这些都是事故。
  • 用户已打开您的扩展页面的开发者工具并运行了 chrome.storage.sync.clear() 或类似的东西。
    您无法防止拥有破坏 Chrome 扩展程序内部知识的用户。

如果你想唯一标识一个用户,前面的方法就足够了。如果您真的想要获得基于硬件的 ID,请使用 chrome.storage.cpuchrome.storage.memory以及。不过,我看不出使用这些额外来源有任何好处,因为如果用户更换硬件,它们可能会发生变化,而且它们也不是唯一的(例如,两台相同的笔记本电脑会报告相同的值)。

关于javascript - 从 chrome 扩展中获取唯一的 ClientID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23822170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com