Получаю токен на решение капчи, подскажите как правильно применить callback на селениуме. parent.postMessage(JSON.stringify({eventId:"challenge-complete",payload:{sessionToken:(token)}}),"*") Фрагмент кода ниже def get_task_id(): for attempt in range(max_attempts): response = requests.post( 'https://api.crazytoken.ru/createTask', json={'apikey': api_key, 'sitekey': site_key}, proxies=proxies ) if response.status_code == 200: data = response.json() if 'task_id' in data: return data['task_id'] time.sleep(attempt_delay) return None task_id = get_task_id() if task_id is not None: print(task_id) else: print("Не удалось получить task_id после 10 попыток.") def get_task_result(max_attempts=30): url = 'https://api.crazytoken.ru/getTaskResult' for attempt in range(max_attempts): try: response = requests.post( url, json={ 'apikey': api_key, 'task_id': task_id }, proxies=proxies, timeout=10 # Время ожидания ответа от сервера ) if response.status_code == 200: data = response.json() if data.get('status') == 'OK': return data['result']['token'] else: print(f"Попытка {attempt + 1}: Получен неверный статус: {data.get('status')}") else: print(f"Попытка {attempt + 1}: Сервер вернул ошибку с кодом {response.status_code}") except Exception as e: print(f"Попытка {attempt + 1}: Ошибка при выполнении запроса: {e}") return None token = get_task_result() if token is not None: print("Токен успешно получен:", token) else: print("Не удалось получить токен после 30 попыток.") iframe = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "#enforcementFrame")) ) driver.execute_script("parent.postMessage(JSON.stringify({eventId:'challenge-complete',payload:{sessionToken:'" + token + "'}}),'*')") Python def get_task_id(): for attempt in range(max_attempts): response = requests.post( 'https://api.crazytoken.ru/createTask', json={'apikey': api_key, 'sitekey': site_key}, proxies=proxies ) if response.status_code == 200: data = response.json() if 'task_id' in data: return data['task_id'] time.sleep(attempt_delay) return None task_id = get_task_id() if task_id is not None: print(task_id) else: print("Не удалось получить task_id после 10 попыток.") def get_task_result(max_attempts=30): url = 'https://api.crazytoken.ru/getTaskResult' for attempt in range(max_attempts): try: response = requests.post( url, json={ 'apikey': api_key, 'task_id': task_id }, proxies=proxies, timeout=10 # Время ожидания ответа от сервера ) if response.status_code == 200: data = response.json() if data.get('status') == 'OK': return data['result']['token'] else: print(f"Попытка {attempt + 1}: Получен неверный статус: {data.get('status')}") else: print(f"Попытка {attempt + 1}: Сервер вернул ошибку с кодом {response.status_code}") except Exception as e: print(f"Попытка {attempt + 1}: Ошибка при выполнении запроса: {e}") return None token = get_task_result() if token is not None: print("Токен успешно получен:", token) else: print("Не удалось получить токен после 30 попыток.") iframe = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "#enforcementFrame")) ) driver.execute_script("parent.postMessage(JSON.stringify({eventId:'challenge-complete',payload:{sessionToken:'" + token + "'}}),'*')")