Как обойти CAPTCHA с помощью Selenium на Python
В статье описаны подходы к обходу CAPTCHA с помощью Selenium. В отдельном блоке собраны ссылки на рабочие примеры кода для разных типов CAPTCHA.
Работа с CAPTCHA в Selenium: пошаговое руководство
Чтобы обойти CAPTCHA, ваш скрипт должен выглядеть как поведение настоящего пользователя: естественные действия, реалистичный браузер. Selenium — инструмент для автоматизации браузера, а вместе с 2Captcha он позволяет решать reCAPTCHA, image CAPTCHA и другие варианты.
В этой части вы узнаете, как использовать Python и Selenium для обхода CAPTCHA. Поехали!
Шаг #1: Подготовка проекта на Python
Убедитесь, что у вас установлены:
- Python 3
- Google Chrome
Если у вас уже есть скрипт на Selenium, пропустите настройку. Иначе — создайте новый проект:
mkdir selenium_captcha_demo
cd selenium_captcha_demo
Создайте виртуальное окружение:
python3 -m venv venv
source venv/bin/activate # для macOS/Linux
venv\Scripts\activate # для Windows
Создайте файл script.py
в вашей IDE.
Шаг #2: Установка Selenium
Активируйте виртуальное окружение и установите Selenium:
pip install selenium
Шаг #3: Настройка Selenium WebDriver
Пример запуска браузера в headless-режиме:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
driver.quit()
Headless-режим позволяет запускать браузер без графического интерфейса.
Шаг #4: Решение CAPTCHA через 2Captcha
Часть 1: Отправка CAPTCHA
from selenium import webdriver
import requests
import time
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
captcha_site_key = driver.execute_script("return document.querySelector('[data-sitekey]').getAttribute('data-sitekey')")
API_KEY = "your_2captcha_api_key"
response = requests.post("http://2captcha.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": captcha_site_key,
"pageurl": "https://example.com"
})
captcha_id = response.text.split('|')[1]
print("Ожидание решения CAPTCHA...")
Часть 2: Получение решения
time.sleep(20)
result = requests.get(f"http://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}")
while "CAPCHA_NOT_READY" in result.text:
time.sleep(5)
result = requests.get(f"http://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}")
captcha_solution = result.text.split('|')[1]
driver.execute_script(f"document.getElementById('g-recaptcha-response').innerHTML = '{captcha_solution}';")
driver.find_element("id", "submit_button").click()
driver.quit()
Шаг #5: Использование Selenium Stealth
Selenium Stealth
скрывает признаки автоматизации и помогает избежать блокировок.
Установка:
pip install selenium-stealth
Импорт:
from selenium_stealth import stealth
Шаг #6: Настройка stealth()
stealth(
driver,
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
Теперь ваш браузер выглядит как обычный пользовательский, а не автоматизированный.
Готовые примеры Python + Selenium
Чтобы ускорить старт, мы подготовили репозитории с рабочими примерами:
-
Основной репозиторий примеров:
https://github.com/2captcha/captcha-solver-selenium-python-examples -
Пример с использованием Selenium Grid:
https://github.com/2captcha/selenium-recaptcha-solver-using-grid -
Дополнительные примеры в SDK:
https://github.com/2captcha/2captcha-python/tree/master/examples
Решение CAPTCHA на других языках
Вы можете интегрировать 2Captcha и Selenium с другими языками:
-
JavaScript:
Модуль | Документация Selenium -
Python:
Модуль | Документация Selenium -
Java:
Модуль | Документация Selenium -
C#:
Модуль | Документация Selenium -
Ruby:
Модуль | Документация Selenium
Заключение
CAPTCHA может показаться преградой, но с правильным подходом — это просто задача. Используйте Selenium Stealth
для маскировки и 2Captcha — для автоматического решения. Вместе они обеспечивают стабильную и надёжную автоматизацию.
Попробуйте 2Captcha уже сегодня и забудьте про ручной ввод капчи!