Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Как обойти капчу с помощью Python

Как распознать, решить обойти капчу автоматически с помощью Python и сервиса распознавания

Обход капчи это частая задача в веб-скрапинге и автоматизации. Капчи созданы, чтобы отличать людей от ботов. Это усложняет сбор данных. С помощью API нашего сервиса мы можем программно решать капчи на Python. Этот урок шаг за шагом проведёт вас через весь процесс.

Необходимые требования

• Базовые знания Python.
• Активная учётная запись в нашем сервисе с API-ключом.
• Установленный Python версии 3.6 или выше.
• Установленные библиотеки: seleniumbase, requests, chromedriver-autoinstaller-fix.

Пошаговое руководство

Шаг 1. Установите необходимые библиотеки

Модуль упрощает взаимодействие с API. Установите всё через pip.

bash Copy
pip install seleniumbase requests chromedriver-autoinstaller-fix

Шаг 2. Получите ваш API-ключ

  1. Войдите в личный кабинет нашего сервиса.
  2. Перейдите в раздел API Key.
  3. Скопируйте ваш уникальный ключ и сохраните в надёжном месте.

Шаг 3. Настройте скрипт с обработкой ошибок

Вот обезличенный пример кода для решения капчи Cloudflare Turnstile. Все чувствительные данные вынесены в переменные.

python Copy
import time
import chromedriver_autoinstaller_fix
import requests
from seleniumbase import Driver
from selenium.webdriver.common.by import By

chromedriver_autoinstaller_fix.install()
agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
driver = Driver(uc=True, headless=False, proxy=False, agent=agent)

# Замените на ваш целевой сайт
url = 'https://YOUR_TARGET_SITE.com'
driver.delete_all_cookies()
driver.uc_open_with_reconnect(url, reconnect_time=20)

time.sleep(5)
# Пример закрытия баннера. Адаптируйте селектор под ваш сайт
# driver.find_element(By.CLASS_NAME, "cookie-close-btn").click()
time.sleep(2)

# Пример ввода данных формы. Адаптируйте под ваш сайт
# driver.find_element(By.ID, "email").send_keys("your_email@example.com")
# driver.find_element(By.ID, "password").send_keys("your_password")
time.sleep(3)

# Замените на sitekey с вашего сайта
sitekey = "YOUR_SITEKEY_HERE"
print("sitekey = ", sitekey)
user_agent = driver.get_user_agent()

my_key = "YOUR_2Captcha_KEY"

data = {"key": my_key,
        "method": "turnstile",
        "sitekey": sitekey,
        "json": 1,
        "pageurl": url,
        "useragent": user_agent,
        }
response = requests.post(f"https://2captcha.com/in.php", data=data)
print("Отправлено на сервис", response.text)
s = response.json()["request"]
time.sleep(20)

while True:
    solu = requests.get(f"https://2captcha.com/res.php?key={my_key}&action=get&json=1&id={s}").json()
    if solu["request"] == "CAPCHA_NOT_READY":
        print(solu["request"])
        time.sleep(10)
    elif "ERROR" in solu["request"]:
        print(solu["request"])
        driver.close()
        driver.quit()
        exit(0)
    else:
        break

for key, value in solu.items():
    print(key, ": ", value)

time.sleep(2)
solu = solu["request"]
driver.execute_script("document.getElementsByName('cf-turnstile-response')[0].value = arguments[0];", solu)

# Пример разблокировки кнопки. Адаптируйте селектор под ваш сайт
el = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
driver.execute_script("arguments[0].removeAttribute('disabled')", el)

time.sleep(2)
print("Ответ вставлен")
time.sleep(1)
time.sleep(20)
driver.close()
driver.quit()

Шаг 4. Запустите скрипт

Сохраните код в файл, например solve_captcha.py, и выполните в терминале.

bash Copy
python solve_captcha.py

Как работает скрипт

  1. Инициализируется браузер с настройками для обхода детектов ботов.
  2. Параметры капчи отправляются на https://2captcha.com/in.php.
  3. Скрипт периодически опрашивает https://2captcha.com/res.php для получения статуса.
  4. При успехе токен вставляется в нужное поле страницы.
  5. При ошибке выводится сообщение, работа корректно завершается.

Рекомендации

• Храните API-ключ в переменной окружения, а не в коде.
• Добавляйте небольшие задержки между запросами, чтобы избежать блокировок.
• Следите за балансом аккаунта, чтобы не прерывать работу в неподходящий момент.
• Если получили неверный ответ, отправьте жалобу через API нашего сервиса. Средства вернут на счёт.

Справочник кодов ошибок

Ниже приведена таблица с ключевыми кодами ошибок, которые может вернуть наш сервис. Сохраните её как шпаргалку при отладке.

Код ошибки Описание
ERROR_NO_SLOT_AVAILABLE Ставка слишком низкая или очередь переполнена. Попробуйте позже или увеличьте ставку
ERROR_PAGEURL Отсутствует или неверный формат pageurl. Укажите корректный URL страницы
ERROR_CAPTCHA_UNSOLVABLE Капчу не удалось решить. Средства автоматически возвращены на баланс
ERROR_TASK_ABSENT Отсутствует параметр task в вызове createTask. Проверьте структуру запроса
ERROR_BAD_PARAMETERS Отсутствуют обязательные параметры или неверный формат запроса. Сверьтесь с документацией
ERROR_BAD_PROXY Неверные параметры прокси или не удаётся подключиться. Проверьте формат proxy:port:username:password

Устранение неполадок

• Ошибка авторизации: перепроверьте API-ключ в личном кабинете.
• Пустой ответ: убедитесь, что изображение или параметры капчи соответствуют требованиям.
• Таймауты: увеличьте время ожидания между опросами результата.
• Блокировка по IP: добавьте текущий адрес в список доверенных в настройках аккаунта.
• Ошибка прокси: проверьте формат и работоспособность прокси перед отправкой задачи.

Нужна помощь?

Если что-то не работает или возникли вопросы по настройке, создайте тикет в поддержку нашего сервиса. Мы поможем разобраться с интеграцией, подберём оптимальные параметры и ответим на все вопросы.

Заключение

Следуя этому уроку, вы сможете интегрировать API нашего сервиса в ваши Python-проекты для эффективного решения капч. Этот метод подходит для обхода обычных и сложных капч при веб-скрапинге и автоматизации. Код легко адаптировать под разные типы капч и сайты. Внимательно настройте параметры под свою задачу и не забывайте про обработку ошибок.