Как решить hCaptcha на Python с помощью Selenium & CapMonster Cloud
- В вашем новом проекте должны быть установлены все нужные нам библиотеки и модули (см. Python ReCaptcha v.2), в файле “.env” устанавливаем параметры:
API_KEY = 'ВАШ_API_KEY'
WEBSITE_KEY = 'a5f74b19-9e45-40e0-b45d-47ff91b7a6c2'
WEBSITE_URL = 'https://accounts.hcaptcha.com/demo'
- И прописываем действия в главном файле:
import os
import asyncio
from selenium import webdriver
from selenium.webdriver.common.by import By
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import HcaptchaProxylessRequest
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv("API_KEY")
WEBSITE_URL = os.getenv("WEBSITE_URL")
WEBSITE_KEY = os.getenv("WEBSITE_KEY")
async def solve_hcaptcha():
try:
# Запуск браузера Chrome с помощью Selenium
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
browser = webdriver.Chrome(options=options)
print("Браузер инициализирован!")
# Переход на веб-сайт с hCaptcha
browser.get(WEBSITE_URL)
print("Переключение браузера на страницу с капчей!")
# Инициализация клиента CapMonster
client_options = ClientOptions(api_key=API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)
print("Клиент CapMonster инициализирован!")
# Создание запроса для решения hCaptcha
hcaptcha_request = HcaptchaProxylessRequest(
websiteUrl=WEBSITE_URL,
websiteKey=WEBSITE_KEY,
fallbackToActualUA=True
)
# Решение hCaptcha с использованием CapMonster
task_result = await cap_monster_client.solve_captcha(hcaptcha_request)
solution = task_result.get('gRecaptchaResponse')
print("hCaptcha решена!")
# Вставка решения в форму
element = browser.find_element(By.NAME, 'h-captcha-response')
browser.execute_script('arguments[0].style.display = "block"; arguments[0].style.visibility = "visible";', element)
browser.execute_script(f'arguments[0].value = "{solution}";', element)
print("Результат вставлен на страницу!")
# Нажатие кнопки отправки
submit_button = browser.find_element(By.ID, 'hcaptcha-demo-submit')
submit_button.click()
print("Нажата кнопка 'hcaptcha-demo-submit'!")
# Пауза на 10 секунд
await asyncio.sleep(10)
except Exception as e:
print(f"Произошла ошибка: {e}")
finally:
# Закрытие браузера
browser.quit()
# Запуск асинхронной функции для решения hCaptcha
asyncio.run(solve_hcaptcha())
Что делает этот код:
Импорт библиотек и загрузка переменных из файла .env. Импортируются необходимые библиотеки: os, asyncio, webdriver из selenium, CapMonsterClient, ClientOptions, HcaptchaProxylessRequest из capmonstercloudclient, и load_dotenv из dotenv.
Переменные API_KEY, WEBSITE_URL и WEBSITE_KEY загружаются из файла .env.
Функция solve_hcaptcha:
Инициализирует браузер Chrome через Selenium и сообщает об этом.
Переходит на веб-сайт с капчей hCaptcha и сообщает об этом.
Инициализирует клиента CapMonster с использованием загруженного API_KEY и сообщает об этом.
Создает запрос для решения капчи hCaptcha с опциями, включая адрес веб-сайта, ключ hCaptcha, и fallbackToActualUA (возврат к реальному User-Agent браузера).
Решает капчу hCaptcha с использованием CapMonster и получает решение.
Вставляет решение в форму на веб-странице, используя JavaScript для управления DOM-элементами.
Нажимает кнопку отправки формы.
Ожидает 10 секунд.
Блок try-except-finally:
Помещает код в блок try для обработки возможных исключений.
Если происходит ошибка, выводит сообщение об ошибке.
Блок finally содержит закрытие браузера (даже если произошла ошибка, браузер будет закрыт).
Запуск асинхронной функции: использует asyncio.run() для запуска асинхронной функции solve_hcaptcha().
Запустим код и посмотрим на результат:
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.