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

Как обойти Click Captcha

Введение

Click Captcha (также известная как координатная капча) — это тип проверки, где пользователю предлагается кликнуть по изображению в соответствии с инструкцией: «Нажмите на зелёное яблоко», «Выберите все светофоры» или «Кликните в указанном порядке». Такие капчи используются на множестве сайтов для защиты от ботов, но создают сложности при автоматизации.

В этом руководстве мы разберём, как автоматически решать Click Captcha с помощью нашего сервиса, используя метод координат. Вы узнаете:

  • Как работает координатная капча
  • Какие параметры нужны для отправки задачи
  • Как интегрировать решение в свой скрипт на Python
  • Как обрабатывать координаты ответа и эмулировать клики
  • Какие ошибки могут возникнуть и как их исправить

Что такое Click Captcha

Характеристика Описание
Тип задачи Клик по определённым точкам на изображении
Входные данные Изображение капчи + текстовая/визуальная инструкция
Результат решения Массив координат x=...,y=... для кликов
Сложность Средняя — требуется точное позиционирование курсора

Click Captcha визуально похожа на reCAPTCHA V2, но отличается механикой: вместо выбора объектов из сетки здесь нужно кликнуть по конкретным пикселям на одном изображении.


Подготовка: обязательные параметры

Параметр Обязателен Описание
type Да Тип задачи: CoordinatesTask
body Да Изображение капчи в base64 или путь к файлу
imgInstructions Нет Изображение с визуальной подсказкой (опционально)
comment Нет Текстовая инструкция, например: «Click on the green apple»
minClicks и maxClicks Нет Минимальное и максимальное количество кликов, которое можно сделать
clientKey Да Ваш API ключ

Совет: Всегда указывайте comment — это повышает точность распознавания.


Пошаговая инструкция: решение через API

Шаг 1: Получите изображение капчи

Используйте Selenium, Puppeteer или любой HTTP-клиент для загрузки изображения:

python Copy
from selenium.webdriver.common.by import By
from PIL import Image
import requests

# Находим элемент с капчей
img_url = driver.find_element(By.CSS_SELECTOR, "img[alt='clickcaptcha example']").get_attribute('src')

# Скачиваем и сохраняем изображение
img = Image.open(requests.get(img_url, stream=True).raw)
img.save('captcha.png')

Шаг 2: Отправьте задачу на решение

Эндпоинт API v2: https:/api.2captcha.com/createTask

Пример запроса (JSON):

json Copy
{
  "clientKey": "ВАШ_API_КЛЮЧ",
  "task": {
    "type": "CoordinatesTask",
    "body": "iVBORw0KGgoAAAANSUhEUgAA...",
    "textinstructions": "Click on the green apple",
    "imginstructions": "base64_hint_image_optional",
    "lang": "en"
  }
}

Или через SDK Python

python Copy
from twocaptcha import TwoCaptcha

solver = TwoCaptcha('ВАШ_API_КЛЮЧ', defaultTimeout=120, pollingInterval=5)

try:
    result = solver.coordinates('captcha.png', 
                                textinstructions='Click on the green apple',
                                lang='en')
except Exception as e:
    print(f"Ошибка: {e}")
else:
    print(f"Решено: {result}")

Шаг 3: Получите результат

Ответ сервиса содержит координаты в формате:

Copy
coordinates:x=187,y=60;x=98,y=121;x=267,y=115

Парсим ответ:

python Copy
# result['code'] = "coordinates:x=187,y=60;x=98,y=121;x=267,y=115"
coordinates_raw = result['code'].replace('coordinates:', '').split(';')
coordinates = []

for coord in coordinates_raw:
    x, y = coord.split('=')[1].split(',')
    coordinates.append({'x': int(x), 'y': int(y)})

# coordinates = [{'x': 187, 'y': 60}, {'x': 98, 'y': 121}, {'x': 267, 'y': 115}]

Шаг 4: Эмулируйте клики по координатам

Важно: Координаты в ответе относительные — отсчёт идёт от левого верхнего угла изображения капчи.

python Copy
from selenium.webdriver.common.action_chains import ActionChains

# Находим элемент капчи на странице и получаем его позицию
captcha_el = driver.find_element(By.CSS_SELECTOR, "img[alt='clickcaptcha example']")
captcha_location = captcha_el.location  # {'x': 150, 'y': 300}

# Кликаем по каждой координате
for coord in coordinates:
    ActionChains(driver)\
        .move_to_element_with_offset(captcha_el, coord['x'], coord['y'])\
        .click()\
        .perform()
    
    # Небольшая пауза между кликами для естественности
    time.sleep(0.3)

Совет: После каждого клика сбрасывайте действия через ActionChains(driver).reset_actions(), чтобы избежать накопления смещений.

Шаг 5: Подтвердите решение

После выполнения всех кликов нажмите кнопку проверки (Submit/Check):

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

Полный пример на Python

python Copy
import time
import requests
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from twocaptcha import TwoCaptcha

# === Настройки ===
API_KEY = 'ВАШ_API_КЛЮЧ'
TARGET_URL = 'https://example.com/page-with-captcha'
CAPTCHA_SELECTOR = "img[alt='clickcaptcha example']"
SUBMIT_SELECTOR = "button[type='submit']"

# === Инициализация ===
driver = webdriver.Chrome()
solver = TwoCaptcha(API_KEY, defaultTimeout=120, pollingInterval=5)

try:
    # 1. Открываем страницу
    driver.get(TARGET_URL)
    time.sleep(3)
    
    # 2. Скачиваем изображение капчи
    img_url = driver.find_element(By.CSS_SELECTOR, CAPTCHA_SELECTOR).get_attribute('src')
    img = Image.open(requests.get(img_url, stream=True).raw)
    img.save('captcha.png')
    
    # 3. Отправляем на решение
    result = solver.coordinates(
        'captcha.png',
        textinstructions='Click on the green apple',  # Адаптируйте под вашу капчу!
        lang='en'
    )
    
    # 4. Парсим координаты
    coords_raw = result['code'].replace('coordinates:', '').split(';')
    coordinates = []
    for c in coords_raw:
        x, y = c.replace('x=', '').replace('y=', '').split(',')
        coordinates.append({'x': int(x), 'y': int(y)})
    
    # 5. Кликаем по координатам
    captcha_el = driver.find_element(By.CSS_SELECTOR, CAPTCHA_SELECTOR)
    for coord in coordinates:
        ActionChains(driver)\
            .move_to_element_with_offset(captcha_el, coord['x'], coord['y'])\
            .click()\
            .perform()
        time.sleep(0.3)
        ActionChains(driver).reset_actions()
    
    # 6. Подтверждаем
    driver.find_element(By.CSS_SELECTOR, SUBMIT_SELECTOR).click()
    print("✅ Капча успешно решена!")
    
    # Держим браузер открытым для проверки
    time.sleep(10)
    
except Exception as e:
    print(f"❌ Ошибка: {e}")
    
finally:
    # driver.quit()  # Раскомментируйте для автоматического закрытия
    pass

Обработка ошибок и рекомендации

Частые ошибки

Код ошибки Причина Решение
ERROR_WRONG_USER_KEY Неверный API-ключ Проверьте ключ в личном кабинете
ERROR_ZERO_BALANCE Недостаточно средств Пополните баланс аккаунта
ERROR_CAPTCHA_UNSOLVABLE Капча не распознана Укажите comment, проверьте качество изображения
ERROR_BAD_PARAMETERS Некорректные параметры задачи Проверьте формат body (base64) и наличие обязательных полей

Советы по повышению успешности

  1. Всегда указывайте инструкцию — она критически важна для точности.
  2. Добавляйте задержки между действиями — эмуляция «человеческого» поведения снижает риск блокировки.
  3. Проверяйте позицию элемента — координаты ответа относительные, учитывайте смещение капчи на странице.
  4. Реализуйте повторные попытки — при ошибке ERROR_CAPTCHA_UNSOLVABLE попробуйте отправить задачу ещё раз с уточнённой инструкцией.

Контроль частоты запросов

python Copy
# Экспоненциальная задержка при повторных попытках
def solve_with_retry(solver, image_path, instruction, max_retries=3):
    for attempt in range(max_retries):
        try:
            return solver.coordinates(image_path, textinstructions=instruction, lang='en')
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            wait_time = 5 * (2 ** attempt)  # 5s, 10s, 20s
            print(f"Попытка {attempt + 1} не удалась. Ждём {wait_time}с...")
            time.sleep(wait_time)

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


Заключение

Click Captcha представляет собой эффективный механизм защиты, который может быть чувствителен к качеству реализации и условиям взаимодействия. Ключевые факторы надёжной работы автоматизированных сценариев тестирования:

  • корректное извлечение и обработка изображений в интерфейсе
  • точная интерпретация пользовательских инструкций (comment)
  • аккуратная эмуляция взаимодействий с интерфейсом с учётом координат и состояния элементов
  • обработка ошибок, таймаутов и нестабильных состояний интерфейса