def setup_driver(self, use_stealth=True): """Configure Chrome driver with stealth options""" options = webdriver.ChromeOptions() # Anti-detection arguments options.add_argument('--disable-blink-features=AutomationControlled') options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36') options.add_argument('--start-maximized') # Disable automation flags options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) self.driver = webdriver.Chrome(options=options) # Execute CDP commands to hide webdriver self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", "source": """ Object.defineProperty(navigator, 'webdriver', get: () => undefined ); Object.defineProperty(navigator, 'plugins', get: () => [1, 2, 3, 4, 5] ); """ ) def execute_recaptcha(self): """Execute reCAPTCHA v3 and retrieve token""" self.driver.get(self.page_url) # Wait for page load time.sleep(3) # Simulate human-like behavior self.simulate_human_behavior() # Execute reCAPTCHA JavaScript recaptcha_script = f""" return new Promise((resolve) => grecaptcha.ready(function() grecaptcha.execute('self.site_key', action: 'self.action_name') .then(function(token) resolve(token); ); ); ); """ try: token = self.driver.execute_script(recaptcha_script) return token except Exception as e: print(f"Error executing reCAPTCHA: e") return None def simulate_human_behavior(self): """Simulate human mouse movements and timing""" # Random scrolling scroll_script = """ window.scrollTo( top: Math.random() * 500, behavior: 'smooth' ); """ self.driver.execute_script(scroll_script) # Random wait times time.sleep(random.uniform(0.5, 2.0)) # Random mouse movements (simplified) self.driver.execute_script(""" var event = new MouseEvent('mousemove', view: window, bubbles: true, cancelable: true, clientX: Math.random() * window.innerWidth, clientY: Math.random() * window.innerHeight ); document.dispatchEvent(event); """) def verify_token(self, token, secret_key): """Verify token with Google's API""" verification_url = "https://www.google.com/recaptcha/api/siteverify" payload = 'secret': secret_key, 'response': token response = requests.post(verification_url, data=payload) return response.json()
def solve_recaptcha_v3(self, site_key, page_url, action, min_score=0.7): """Submit to 2Captcha service""" payload = 'key': self.api_key, 'method': 'userrecaptcha', 'version': 'v3', 'googlekey': site_key, 'pageurl': page_url, 'action': action, 'min_score': min_score response = requests.post(self.base_url, data=payload) if 'OK' in response.text: captcha_id = response.text.split('|')[1] return self.get_result(captcha_id) return None python recaptcha v3 solver
def simulate_user_behavior(self) -> Dict: """Generate behavioral data that mimics a human""" return 'user_agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'screen_resolution': '1920x1080', 'timezone': 'America/New_York', 'language': 'en-US', 'platform': 'Win32', 'touch_support': False, 'cookie_enabled': True, 'plugins': ['Chrome PDF Plugin', 'Chrome PDF Viewer', 'Native Client'], 'webgl_vendor': 'Google Inc. (Intel)', 'webgl_renderer': 'ANGLE (Intel, Intel(R) UHD Graphics 620 Direct3D11 vs_5_0 ps_5_0)', 'cpu_core_count': 8, 'ram_gb': 16, 'mouse_movements': self._generate_mouse_trace() "source": """ Object.defineProperty(navigator
@staticmethod def random_delay(min_sec=0.5, max_sec=2.0): """Random delays between actions""" import random, time time.sleep(random.uniform(min_sec, max_sec)) get: () =>
response = requests.post( 'https://www.google.com/recaptcha/api/siteverify', data= 'secret': secret_key, 'response': token )
@app.route('/verify', methods=['POST']) def verify_recaptcha(): token = request.json.get('token') secret_key = 'YOUR_SECRET_KEY'