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
+17 -10
View File
@@ -172,16 +172,25 @@ def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx
) )
return driver return driver
security_prefs = { security_prefs = {
"profile.default_content_setting_values.media_stream": 2, # Set all permissions to prompt (1=allow, 2=block, 0=prompt)
"profile.default_content_setting_values.geolocation": 2, "profile.default_content_setting_values.geolocation": 0,
"profile.default_content_setting_values.notifications": 2, "profile.default_content_setting_values.notifications": 0,
"profile.default_content_setting_values.camera": 2, "profile.default_content_setting_values.camera": 0,
"profile.default_content_setting_values.microphone": 2, "profile.default_content_setting_values.microphone": 0,
"profile.default_content_setting_values.midi_sysex": 0,
"profile.default_content_setting_values.clipboard": 0,
"profile.default_content_setting_values.media_stream": 0,
"profile.default_content_setting_values.background_sync": 0,
"profile.default_content_setting_values.sensors": 0,
"profile.default_content_setting_values.accessibility_events": 0,
"safebrowsing.enabled": True, "safebrowsing.enabled": True,
"credentials_enable_service": False,
"profile.password_manager_enabled": False,
"webkit.webprefs.accelerated_2d_canvas_enabled": True, "webkit.webprefs.accelerated_2d_canvas_enabled": True,
"webkit.webprefs.force_dark_mode_enabled": False, "webkit.webprefs.force_dark_mode_enabled": False,
"webkit.webprefs.accelerated_2d_canvas_enabled": True,
"webkit.webprefs.accelerated_2d_canvas_msaa_sample_count": 4, "webkit.webprefs.accelerated_2d_canvas_msaa_sample_count": 4,
"enable_webgl": True,
"enable_webgl2_compute_context": True
} }
chrome_options.add_experimental_option("prefs", security_prefs) chrome_options.add_experimental_option("prefs", security_prefs)
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
@@ -688,15 +697,13 @@ class Browser:
input_elements = self.driver.execute_script(script) input_elements = self.driver.execute_script(script)
if __name__ == "__main__": if __name__ == "__main__":
driver = create_driver(headless=False, stealth_mode=False) driver = create_driver(headless=False, stealth_mode=True)
browser = Browser(driver, anticaptcha_manual_install=False) browser = Browser(driver, anticaptcha_manual_install=False)
input("press enter to continue") input("press enter to continue")
print("AntiCaptcha / Form Test") print("AntiCaptcha / Form Test")
browser.go_to("https://browserleaks.com/webgl")
time.sleep(20)
browser.go_to("https://bot.sannysoft.com/") browser.go_to("https://bot.sannysoft.com/")
time.sleep(5) time.sleep(50)
browser.go_to("https://antoinevastel.com/bots/") browser.go_to("https://antoinevastel.com/bots/")
time.sleep(5) time.sleep(5)
#txt = browser.get_text() #txt = browser.get_text()
+48 -17
View File
@@ -4,6 +4,7 @@ Object.defineProperty(navigator, 'webdriver', {get: () => undefined});
delete window.cdc_adoQpoasnfa76pfcZLmcfl_Array; delete window.cdc_adoQpoasnfa76pfcZLmcfl_Array;
delete window.cdc_adoQpoasnfa76pfcZLmcfl_Promise; delete window.cdc_adoQpoasnfa76pfcZLmcfl_Promise;
delete window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol; delete window.cdc_adoQpoasnfa76pfcZLmcfl_Symbol;
Object.keys(window).forEach((key) => { Object.keys(window).forEach((key) => {
if (key.includes("webdriver") || key.includes("selenium") || key.includes("driver")) { if (key.includes("webdriver") || key.includes("selenium") || key.includes("driver")) {
delete window[key]; delete window[key];
@@ -174,21 +175,51 @@ Object.defineProperty(navigator, 'languages', {
get: () => ['en-US', 'en'], get: () => ['en-US', 'en'],
}); });
try { const canvas = document.createElement('canvas');
const canvas = document.createElement('canvas'); const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
if (gl) { if (gl) {
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info'); // Store original getParameter function
Object.defineProperty(WebGLRenderingContext.prototype, 'getParameter', { const originalGetParameter = gl.getParameter;
value: function(parameter) { // Override getParameter to spoof values
if (parameter === 37445) { // UNMASKED_VENDOR_WEBGL gl.getParameter = function(parameter) {
return 'Intel Inc.'; // UNMASKED_VENDOR_WEBGL
} if (parameter === 37445) return 'Intel Inc.';
if (parameter === 37446) { // UNMASKED_RENDERER_WEBGL // UNMASKED_RENDERER_WEBGL
return 'Intel Iris OpenGL Engine'; if (parameter === 37446) return 'Intel Iris Pro OpenGL Engine';
} // Other common fingerprint points
return this.__proto__.getParameter(parameter); 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
};
} }
}); return null;
} },
} catch(e) {} __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);
}