Обход капчи в Selenium

selenium captcha best automatically solving service

Используя API, вы можете создать инструмент для решения капчи Selenium.

Обход капчи в Selenium

Selenium позволяет автоматизировать работу браузера. Спектр применения инструмента зависит от задач. Для Selenium есть плагины, позволяющие скрыть факт автоматизации. Сокрытие факта использования автоматизации важно при разработке ботов и парсеров.

Чтобы автоматизировать процесс обхода капчи на сайтах при работе с Selenium нужна интеграция со специальным сервисом распознавания капчи. В данной статье описано как использовать сервис по обходу капчи при работе с Selenium.

Selenium — это библиотека Python, которая предоставляет высокоуровневый API для управления Chrome или Chromium и Firefox или Geckodriver по протоколу DevTools. Selenium по умолчанию работает в режиме non-headless. Но настройки позволяют работать также и в headless режиме.

Автоматическое решение капчи в Selenium

Далее пошагово описан процесс решения reCAPTCHA на странице https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php:

  • Установка требуемых компонентов
  • Поиск специального параметра site key на целевой странице
  • Отправка reCAPTCHA для решения
  • Получение ответа от API для обхода капчи

Установка компонентов

Начать нужно с установки следующих компонентов:

  • 2Captcha: официальный Python SDK для интеграции с API 2Captcha
  • Selenium: Selenium — это библиотека автоматизации браузера
  • webdriver-manager: эта библиотека упрощает загрузку и использование драйверов для Selenium.

Следующая команда позволит установить указанные библиотеки:

python -m pip install 2captcha-python selenium webdriver-manager

Далее на целевой странице нужно найти параметр site key и написать код скрипта для автоматического решения капчи на странице.

Поиск параметра site key

site key — это уникальный идентификатор, который Google присваивает всем формам с reCAPTCHA, и который однозначно идентифицирует капчу. Для автоматического решения капчи нужно отправить site key в сервис решения.

Чтобы найти параметр site key на странице, нужно выполнить следующие действия:

  • Откройте https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php
  • Откройте инструменты разработки, нажав Ctrl/Cmd + Shift + I.
  • Найдите data-sitekey и скопируйте значение параметра.
  • Сохраните значение, чтобы использовать его при отправке запрос для решения капчи на странице
sitekey

Решение капчи

капчи в selenium - решение

Далее нужен код Selenium, задачей которого является открытие целевой страницы и автоматическое решение капчи с помощью API.

Не забудьте изменить значение параметра 2CAPTCHA_API_KEY на реальный ключ API и SITE_KEY на соответствующий site key, сохраненный ранее.

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

captcha_page_url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.get(captcha_page_url)

# решение капчи

print("solving captcha")
solver = TwoCaptcha("2CAPTCHA_API_KEY")
response = solver.recaptcha(sitekey='SITE_KEY', url=captcha_page_url)
code = response['code']
print(f"Successfully solved the Captcha. The solve code is {code}")

В коде инициализирован объект TwoCaptcha с ключом API и решение reCAPTCHA посредством вызова метода recaptcha. Для решения передано значение site key и URL адрес страницы.

Обратите внимание, что процесс решения капчи может занять некоторое время. Скорость решения приведена на странице reCAPTCHA bypass.

Отправка решенной капчи

selenium bypass captcha
Далее находим элемент g-recaptcha-response, вставляем полученное значение для решения капчи и отправляем форму.

recaptcha_response_element = driver.find_element(By.ID, 'g-recaptcha-response')
driver.execute_script(f'arguments[0].value = "{code}";', recaptcha_response_element)

submit_btn = driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
submit_btn.click()

input("Press enter to continue")
driver.close()

Итоговый код автоматического решения reCAPTCHA

Ниже приведен готовый полный код по автоматическому обходу капчи с использованием API.

from selenium.webdriver.common.by import By
from twocaptcha import TwoCaptcha
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver

# Instantiate the WebDriver
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

# Load the target page
captcha_page_url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.get(captcha_page_url)

# Solve the Captcha
print("Solving Captcha")
solver = TwoCaptcha("2CAPTCHA_API_KEY")
response = solver.recaptcha(sitekey='SITE_KEY', url=captcha_page_url)
code = response['code']
print(f"Successfully solved the Captcha. The solve code is {code}")

# Set the solved Captcha
recaptcha_response_element = driver.find_element(By.ID, 'g-recaptcha-response')
driver.execute_script(f'arguments[0].value = "{code}";', recaptcha_response_element)

# Submit the form
submit_btn = driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
submit_btn.click()

# Pause the execution so you can see the screen after submission before closing the driver
input("Press enter to continue")
driver.close()

При использовании данного кода обязательно замените значения параметров2CAPTCHA_API_KEY, SITE_KEY.

Пример отработки кода и автоматического решения капчи приведен далее.

Итоги

В данной статье на примере разобрано, как решать капчу в Selenium с помощью 2Captcha.

Подводя итог, общие шаги для решения капчи в Selenium следующие:

  • Зарегистрируйтесь на сайте 2Captcha
  • Пополните баланс
  • Скопируйте ключ API
  • Найдите site key на целевой странице сайта
  • Отправьте site key и URL-адрес страницы сайта по API для решения
  • Вставьте полученный код капчи на соответствующий элемент и отправьте форму.

Аналогичен процесс обходи других капч, таких как hCaptcha, Arkose labs.

Узнайте больше инфомрации об решении различных типов капчи на странице обход капчи.

Цена

Стоимость обхода капчи зависит от типа капчи. Например, если нужно решение обычной reCAPTCHA от Google, которая является самой популярной капчей, цена варьируется от 2,99 $ за 1000 решений капч.

Цены и скорость распознавания приведены в прайс-листе.

Полезные ссылки

Интегрировать API можно используя любые языки, включая Java, C#, C++, PHP, Python и Ruby. Подробнее читайте в документации по использованию сервиса распознавания.