feat : attempt to bypass bot detection even more

This commit is contained in:
martin legrand
2025-05-14 21:55:59 +02:00
parent 201b3de15c
commit 637ca0f826
2 changed files with 65 additions and 27 deletions
+48 -17
View File
@@ -4,6 +4,7 @@ Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
delete window.cdc_adoQpoasnfa76pfcZLmcfl_Array;
delete window.cdc_adoQpoasnfa76pfcZLmcfl_Promise;
delete window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol;
Object.keys(window).forEach((key) => {
if (key.includes("webdriver") || key.includes("selenium") || key.includes("driver")) {
delete window[key];
@@ -174,21 +175,51 @@ Object.defineProperty(navigator, 'languages', {
get: () => ['en-US', 'en'],
});
try {
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
if (gl) {
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
Object.defineProperty(WebGLRenderingContext.prototype, 'getParameter', {
value: function(parameter) {
if (parameter === 37445) { // UNMASKED_VENDOR_WEBGL
return 'Intel Inc.';
}
if (parameter === 37446) { // UNMASKED_RENDERER_WEBGL
return 'Intel Iris OpenGL Engine';
}
return this.__proto__.getParameter(parameter);
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
if (gl) {
// Store original getParameter function
const originalGetParameter = gl.getParameter;
// Override getParameter to spoof values
gl.getParameter = function(parameter) {
// UNMASKED_VENDOR_WEBGL
if (parameter === 37445) return 'Intel Inc.';
// UNMASKED_RENDERER_WEBGL
if (parameter === 37446) return 'Intel Iris Pro OpenGL Engine';
// Other common fingerprint points
if (parameter === gl.VERSION) return 'WebGL 2.0 (OpenGL ES 3.0 Intel)';
if (parameter === gl.SHADING_LANGUAGE_VERSION) return 'WebGL GLSL ES 3.00 (OpenGL ES GLSL ES 3.0)';
// Default to original behavior
return originalGetParameter.call(gl, parameter);
};
// Spoof debug renderer info extension
const debugInfo = {
getExtension: function(name) {
if (name === 'WEBGL_debug_renderer_info') {
return {
UNMASKED_VENDOR_WEBGL: 37445,
UNMASKED_RENDERER_WEBGL: 37446,
__proto__: WebGLExtension.prototype
};
}
});
}
} catch(e) {}
return null;
},
__proto__: WebGLRenderingContext.prototype
};
// Override getExtension
const originalGetExtension = gl.getExtension;
gl.getExtension = function(name) {
if (name === 'WEBGL_debug_renderer_info') {
return debugInfo;
}
return originalGetExtension.call(gl, name);
};
// Freeze objects to prevent detection
Object.freeze(gl);
Object.freeze(debugInfo);
}