gpt4 book ai didi

javascript - 更改 WebGL 的 Chrome 扩展

转载 作者:行者123 更新时间:2023-12-05 07:32:10 25 4
gpt4 key购买 nike

我正在为 Chrome 开发一个扩展,它会根据 https://panopticlick.eff.org/results?aat=1&dnt=111#fingerprintTable 改变我的“WebGL 指纹哈希”。

我开始使用以下链接中提供的代码 https://intoli.com/blog/making-chrome-headless-undetectable/ ,基本上是将其复制到我的 concept.js 文件中,如下所示:

const getParameter = WebGLRenderingContext.getParameter;
WebGLRenderingContext.prototype.getParameter = function(parameter) {
// UNMASKED_VENDOR_WEBGL
if (parameter === 37445) {
return 'Intel Open Source Technology Center';
}
// UNMASKED_RENDERER_WEBGL
if (parameter === 37446) {
return 'Mesa DRI Intel(R) Ivybridge Mobile ';
}

return getParameter(parameter);
};

我的 list json 相当简单,设置为在 document_start 运行,它确实如此。但是,使用上述扩展,我的 WebGL 散列没有区别。我知道扩展中的代码实际上运行了,因为我已经用一堆小的 javascript 警报对其进行了测试。

我完全不知所措,已经在这个问题上工作了几个小时都无济于事,非常感谢所有帮助j

编辑:为了完整起见,以下是我的 manifest.json

{
"manifest_version": 2,
"name": "JavaScript Injection",
"version": "1.0.0",

"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["injected-javascript.js"],
"run_at": "document_start"
}
]
}

最佳答案

答案是 - isolated code .
您可以使用此代码,但它无法完美运行。我仍在寻找更好的解决方案,因为此代码段取决于页面加载时间。如果您按下 Shift + Ctrl + C,它会很好地工作,但简单的 Ctrl + C 不会,因为页面加载速度快于间隔启动。

const getParameter = WebGLRenderingContext.getParameter;
const a = setInterval(() => {
if (!document.body) {
return
}
clearInterval(a);
var script_tag = document.createElement('script');
script_tag.type = 'text/javascript';
script_tag.text = 'WebGLRenderingContext.prototype.getParameter = function(parameter) {' +
'if (parameter === 37445) { return "Intel Open Source Technology Center"; };' +
'if (parameter === 37446) { return "Mesa DRI Intel(R) Ivybridge Mobile "; }; return getParameter(parameter);' +
'}';
document.body.appendChild(script_tag);
}, 1);

阅读有关此问题的更多信息 in this stackoverflow question

关于javascript - 更改 WebGL 的 Chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431340/

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