创建浏览器指纹



我希望为我网站上的每个用户创建一个浏览器指纹。我通过迭代 winow.screen window.navigator 对象属性来做到这一点。我将它们复制到一个对象中。

当我使用 JSON.stringify 时,问题出在 window.navigator.plugins 上,我没有安装插件的文件名。该属性在那里,但不知何故没有使用 JSON.stringify 序列化。

对象类似于这个窗口.navigator.plugins[0].filename

如何使用字符串获取所有对象内容?!

这会将其转换为数组并从那里仅提取文件名,然后可以正确字符串化:

[].slice.call(navigator.plugins).map(function(plugin){return plugin.filename})
JSON.stringify([].slice.call(navigator.plugins).map(function(plugin){return plugin.filename}))

window.navigator.plugins不是普通的JSON对象。这是包含self值的循环 JSON。这无法转换为String JSON.stringfy()

这是参考

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value

我们可以使用它扁平化来转换字符串或解析。

最新更新