Looking for international version of our service? Go to 2captcha.com

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

Эта статья была полезной?

Как обойти 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.rucaptcha.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)
  • аккуратная эмуляция взаимодействий с интерфейсом с учётом координат и состояния элементов
  • обработка ошибок, таймаутов и нестабильных состояний интерфейса