///
Python ReCaptcha v.3
9 августа 2024 г.

Как решить 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 в асинхронном окружении.

 

 

Запуск скрипта и успешное выполнение: 

none provided

NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях. 

ItGuy
geear
Партнёрская программа для разработчиков софта
Зарабатывайте до 30% от трат ваших пользователей на обход капчи
✅ Заявка отправлена
Спасибо за интерес к нашей партнёрской программе! Мы свяжемся с вами в течение 7 рабочих дней.
Заявка на подключение
Заполните форму, чтобы отправить заявку на подключение к партнёрской программе
Больше статей