feat : attempt to bypass bot detection even more
This commit is contained in:
+17
-10
@@ -172,16 +172,25 @@ def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx
|
||||
)
|
||||
return driver
|
||||
security_prefs = {
|
||||
"profile.default_content_setting_values.media_stream": 2,
|
||||
"profile.default_content_setting_values.geolocation": 2,
|
||||
"profile.default_content_setting_values.notifications": 2,
|
||||
"profile.default_content_setting_values.camera": 2,
|
||||
"profile.default_content_setting_values.microphone": 2,
|
||||
# Set all permissions to prompt (1=allow, 2=block, 0=prompt)
|
||||
"profile.default_content_setting_values.geolocation": 0,
|
||||
"profile.default_content_setting_values.notifications": 0,
|
||||
"profile.default_content_setting_values.camera": 0,
|
||||
"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,
|
||||
"credentials_enable_service": False,
|
||||
"profile.password_manager_enabled": False,
|
||||
"webkit.webprefs.accelerated_2d_canvas_enabled": True,
|
||||
"webkit.webprefs.force_dark_mode_enabled": False,
|
||||
"webkit.webprefs.accelerated_2d_canvas_enabled": True,
|
||||
"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("excludeSwitches", ["enable-automation"])
|
||||
@@ -688,15 +697,13 @@ class Browser:
|
||||
input_elements = self.driver.execute_script(script)
|
||||
|
||||
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)
|
||||
|
||||
input("press enter to continue")
|
||||
print("AntiCaptcha / Form Test")
|
||||
browser.go_to("https://browserleaks.com/webgl")
|
||||
time.sleep(20)
|
||||
browser.go_to("https://bot.sannysoft.com/")
|
||||
time.sleep(5)
|
||||
time.sleep(50)
|
||||
browser.go_to("https://antoinevastel.com/bots/")
|
||||
time.sleep(5)
|
||||
#txt = browser.get_text()
|
||||
|
||||
@@ -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.';
|
||||
// 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
|
||||
};
|
||||
}
|
||||
if (parameter === 37446) { // UNMASKED_RENDERER_WEBGL
|
||||
return 'Intel Iris OpenGL Engine';
|
||||
return null;
|
||||
},
|
||||
__proto__: WebGLRenderingContext.prototype
|
||||
};
|
||||
|
||||
// Override getExtension
|
||||
const originalGetExtension = gl.getExtension;
|
||||
gl.getExtension = function(name) {
|
||||
if (name === 'WEBGL_debug_renderer_info') {
|
||||
return debugInfo;
|
||||
}
|
||||
return this.__proto__.getParameter(parameter);
|
||||
return originalGetExtension.call(gl, name);
|
||||
};
|
||||
|
||||
// Freeze objects to prevent detection
|
||||
Object.freeze(gl);
|
||||
Object.freeze(debugInfo);
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch(e) {}
|
||||
Reference in New Issue
Block a user