Как решить ReCaptcha v3 на Python с помощью Selenium & CapMonster Cloud
- Для решения этого типа капчи создаем файл “.env” с такими значениями:
CAPMONSTER_API_KEY=ВАШ_API_KEY
WEBSITE_KEY=6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob
WEBSITE_URL=https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta
- Установите все необходимые зависимости через pip install (см. Python ReCaptcha v.2), импортируйте их в своем проекте и отправьте задачу для решения капчи на сервер CapMonster Cloud:
import asyncio
import os
from dotenv import load_dotenv
from selenium import webdriver
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV3ProxylessRequest
from selenium.webdriver.common.by import By
load_dotenv()
CAPMONSTER_API_KEY = os.getenv('CAPMONSTER_API_KEY')
WEBSITE_KEY = os.getenv('WEBSITE_KEY')
WEBSITE_URL = os.getenv('WEBSITE_URL')
async def solve_recaptcha():
# Инициализация CapMonster клиента
client_options = ClientOptions(api_key=CAPMONSTER_API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)
# Инициализация Selenium WebDriver
options = webdriver.ChromeOptions()
options.headless = False
browser = webdriver.Chrome(options=options)
print('Браузер инициализирован!')
try:
# Переход на указанную страницу
browser.get(WEBSITE_URL)
print('Браузер переключен на страницу с капчей!')
# Создание запроса для решения reCAPTCHA типа V3 Proxyless
recaptcha_request = RecaptchaV3ProxylessRequest(
websiteUrl=WEBSITE_URL,
websiteKey=WEBSITE_KEY,
action='verify',
min_score=0.7,
)
# Решение reCAPTCHA с использованием CapMonster
task_result = await cap_monster_client.solve_captcha(recaptcha_request)
print('reCAPTCHA V3 решена:', task_result)
# Установка пользовательского агента (необязательное действие)
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent})
# Вставка результата на страницу
script = f'document.querySelector(\'#g-recaptcha-response-100000\').style.display = "block";'
script += f'document.querySelector(\'#g-recaptcha-response-100000\').style.visibility = "visible";'
script += f'document.querySelector(\'#g-recaptcha-response-100000\').value = "{task_result}";'
browser.execute_script(script)
print('Результат вставлен на страницу!')
# Клик по кнопке для проверки
submit_button = browser.find_element(By.ID, 'v3_submit')
submit_button.click()
print('Кнопка "Проверить" нажата!')
# Пауза на 10 секунд
await asyncio.sleep(10)
finally:
# Закрытие браузера
browser.quit()
# Запуск асинхронной функции для решения reCAPTCHA
asyncio.run(solve_recaptcha())
Объяснение кода:
Загрузка переменных окружения: load_dotenv(). Эта функция загружает значения переменных окружения из файла .env и делает их доступными в программе.
Инициализация переменных из окружения: CAPMONSTER_API_KEY = os.getenv('CAPMONSTER_API_KEY'). Здесь мы получаем значение переменной CAPMONSTER_API_KEY из переменных окружения.
WEBSITE_KEY = os.getenv('WEBSITE_KEY'): аналогично, мы получаем значение переменной WEBSITE_KEY.
WEBSITE_URL = os.getenv('WEBSITE_URL'): получаем значение переменной WEBSITE_URL.
async def solve_recaptcha(): объявление асинхронной функции solve_recaptcha.
Инициализация CapMonster клиента и Selenium WebDriver: client_options = ClientOptions(api_key=CAPMONSTER_API_KEY). Создание объекта с опциями для инициализации CapMonster клиента.
cap_monster_client = CapMonsterClient(options=client_options): инициализация CapMonster клиента с использованием опций.
options = webdriver.ChromeOptions(): создание объекта опций для настройки веб-драйвера Chrome.
options.headless = False: установка режима видимости браузера (False - видимый, True - невидимый).
browser = webdriver.Chrome(options=options): инициализация веб-драйвера Chrome с использованием опций.
Работа с веб-страницей: browser.get(WEBSITE_URL). Переход на указанную веб-страницу.
recaptcha_request = RecaptchaV3ProxylessRequest(...): Создание объекта запроса для решения reCAPTCHA V3 Proxyless.
task_result = await cap_monster_client.solve_captcha(recaptcha_request): решение reCAPTCHA с использованием CapMonster.
user_agent = '...': Установка пользовательского агента (строки, определяющей браузер и платформу).
browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent}): установка пользовательского агента с использованием Chrome DevTools Protocol.
script = '...': Создание строки JavaScript, выполняющей вставку решения на страницу.
browser.execute_script(script): выполнение JavaScript кода в контексте текущей страницы браузера.
submit_button = browser.find_element(By.ID, 'v3_submit'): поиск HTML элемента по его ID на странице.
submit_button.click(): симуляция клика по найденной кнопке.
Завершение работы: await asyncio.sleep(10). Асинхронная пауза на 10 секунд.
browser.quit(): закрытие веб-драйвера и окон браузера.
Запуск асинхронной функции: asyncio.run(solve_recaptcha()). Запуск асинхронной функции solve_recaptcha в асинхронном окружении.
Запуск скрипта и успешное выполнение:
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.