gpt4 book ai didi

javascript - 覆盖浏览器 API

转载 作者:行者123 更新时间:2023-11-29 10:06:12 26 4
gpt4 key购买 nike

我正在为 Firefox、Chrome 等开发一个 javascript 的 webextension。

它旨在防止用户浏览器被指纹识别。

由于用于构建浏览器指纹的大部分信息来自浏览器本身的 javascript API,是否有可能更改/欺骗常见 API 可能从网络扩展/插件中返回的值?

如果这不是直接可行的,那么是否有任何方法可以控制这些 API 返回到进行指纹识别的网站的值以保护用户隐私?

我正在谈论的 API 示例是:

user agent
screen print
color depth
current resolution
available resolution
device XDPI
device YDPI
plugin list
font list
local storage
session storage
timezone
language
system language
cookies
canvas print

最佳答案

您可以尝试使用 Object.defineProperty() :

The Object.defineProperty() method defines a new property directly on an object, or modifies an existing property on an object, and returns the object.

console.log(window.screen.colorDepth); // 24

Object.defineProperty(window.screen, 'colorDepth', {
value: 'hello world',
configurable: true
});

console.log(window.screen.colorDepth); // hello world

在上面我们使用 Object.defineProperty 来改变属性 window.screen.colorDepth 的值。这是您可以使用任何您想要的方法欺骗值的地方。您可以使用相同的逻辑来修改您想要欺骗的任何属性(例如 navigator.userAgent)

但是页面的全局对象和插件的全局对象是分开的。您应该能够通过将脚本注入(inject)文档来克服这个问题:

var code = function() {
console.log(window.screen.colorDepth); // 24

Object.defineProperty(window.screen, 'colorDepth', {
value: 'hello world',
configurable: true
});

console.log(window.screen.colorDepth); // hello world
};

var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);

参见 herehere获取更多信息。您可以使用上面的代码下载一个可用的 chrome 扩展 here (解压缩文件夹,在 chrome 中导航到 chrome://extensions 并将文件夹拖放到窗口中)

关于javascript - 覆盖浏览器 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42735221/

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