Как обойти капчу с помощью Python
Обход капчи это частая задача в веб-скрапинге и автоматизации. Капчи созданы, чтобы отличать людей от ботов. Это усложняет сбор данных. С помощью API нашего сервиса мы можем программно решать капчи на Python. Этот урок шаг за шагом проведёт вас через весь процесс.
Необходимые требования
• Базовые знания Python.
• Активная учётная запись в нашем сервисе с API-ключом.
• Установленный Python версии 3.6 или выше.
• Установленные библиотеки: seleniumbase, requests, chromedriver-autoinstaller-fix.
Пошаговое руководство
Шаг 1. Установите необходимые библиотеки
Модуль упрощает взаимодействие с API. Установите всё через pip.
bash
pip install seleniumbase requests chromedriver-autoinstaller-fix
Шаг 2. Получите ваш API-ключ
- Войдите в личный кабинет нашего сервиса.
- Перейдите в раздел API Key.
- Скопируйте ваш уникальный ключ и сохраните в надёжном месте.
Шаг 3. Настройте скрипт с обработкой ошибок
Вот обезличенный пример кода для решения капчи Cloudflare Turnstile. Все чувствительные данные вынесены в переменные.
python
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
python solve_captcha.py
Как работает скрипт
- Инициализируется браузер с настройками для обхода детектов ботов.
- Параметры капчи отправляются на
https://2captcha.com/in.php. - Скрипт периодически опрашивает
https://2captcha.com/res.phpдля получения статуса. - При успехе токен вставляется в нужное поле страницы.
- При ошибке выводится сообщение, работа корректно завершается.
Рекомендации
• Храните 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-проекты для эффективного решения капч. Этот метод подходит для обхода обычных и сложных капч при веб-скрапинге и автоматизации. Код легко адаптировать под разные типы капч и сайты. Внимательно настройте параметры под свою задачу и не забывайте про обработку ошибок.