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

Как обойти капчу Datadome

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

Важно: Обход капч должен осуществляться только в законных целях — для тестирования собственных проектов, исследовательских работ или с явного разрешения владельца ресурса.


Что такое DataDome?

DataDome — это платформа защиты от ботов, которая использует машинное обучение и поведенческий анализ для выявления автоматизированного трафика. Сервис защищает сайты, мобильные приложения и API от скрейпинга, атак перебора и мошеннических действий.

Особенности защиты DataDome:

Характеристика Описание
Тип капчи Слайдер-пазл или токен-верификация
Анализ Отпечатки браузера, поведение мыши, заголовки запросов, IP-репутация
Время ответа Решения принимаются за миллисекунды
Сложность Высокая — традиционные методы обхода не работают

Капча DataDome обычно появляется в виде всплывающего окна с ползунком, который нужно переместить, либо как скрытая проверка, возвращающая токен в куки. При этом пазл-капча в последнее время встречается реже, и чаще используется просто слайдер без изображения.

Капча Datadome

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

Для успешного решения капчи DataDome через API необходимо подготовить следующие данные:

Параметр Обязателен Описание
type Да Тип задачи: DataDomeSliderTask
websiteURL Да Полный URL целевой страницы
captchaUrl Да Значение src из iframe с капчей
userAgent Да User-Agent браузера (должен быть актуальным)
proxyType Да Тип прокси: http, socks5
proxyAddress Да IP или хост прокси-сервера
proxyPort Да Порт прокси (число)
proxyLogin Нет Логин для авторизации на прокси
proxyPassword Нет Пароль для авторизации на прокси

Критически важные моменты:

  1. Параметр t в captchaUrl должен быть равен fe. Если t=bv — ваш IP заблокирован, смените прокси.
  2. Используйте качественные резидентские прокси — публичные прокси часто заблокированы DataDome.
  3. User-Agent должен совпадать с тем, что используется в браузере при загрузке страницы.

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

Шаг 1: Получите captchaUrl

  1. Откройте DevTools (F12) → вкладка Network
  2. Включите Preserve log
  3. Выполните действие, вызывающее капчу
  4. Найдите запрос к домену captcha-delivery.com
  5. Скопируйте значение атрибута src из <iframe> — это и есть captchaUrl

Совет: Если капча не отображается явно, проверьте ответы с кодом 403 — в теле ответа может содержаться ссылка на капчу.

Шаг 2: Подготовьте прокси и User-Agent

python Copy
# Пример параметров
proxy = {
    "type": "http",
    "address": "192.168.1.100",
    "port": 8080,
    "login": "user123",      # опционально
    "password": "pass456"    # опционально
}

user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

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

Эндпоинт создания задачи: https://api.2captcha.com/createTask

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

json Copy
{
  "clientKey": "ВАШ_API_КЛЮЧ",
  "task": {
    "type": "DataDomeSliderTask",
    "websiteURL": "https://www.example.com/",
    "captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=AHrlqAAAAAMAlk-FmAyNOW8AUyTH_g%3D%3D&hash=5B45875B653A484CC79E57036CE9FC&cid=noJuZstmvINksqOxaXWQogbPBd01y3VaH3r-CZ4eqK4roZuelJMHVhO2rR0IySRieoAivkg74B4UpJ.xj.jVNB6-aLaW.Bwvik7__EncryD6COavwx8RmOqgZ7DK_3v&t=fe&referer=https%3A%2F%2Fwww.example.com%2F&s=9817&e=2b1d5a78107ded0dcdc8317aa879979ed5083a2b3a95b734dbe7871679e1403",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "proxyType": "http",
    "proxyAddress": "192.168.1.100",
    "proxyPort": 8080,
    "proxyLogin": "user123",
    "proxyPassword": "pass456"
  }
}

Шаг 4: Получите ID задачи

В ответе вы получите:

json Copy
{
  "errorId": 0,
  "taskId": "1234567890"
}

Сохраните taskId для опроса статуса.

Шаг 5: Запросите результат

Эндпоинт получения результата: https://api.2captcha.com/getTaskResult

Запрос:

json Copy
{
  "clientKey": "ВАШ_API_КЛЮЧ",
  "taskId": "1234567890"
}

Успешный ответ:

json Copy
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "cookie": "datadome=4ZXwCBlyHx9ktZhSnycMF...; Path=/; Secure; SameSite=Lax"
  },
  "cost": "0.00299",
  "createTime": 1695214711,
  "endTime": 1695214720
}

Шаг 6: Используйте куки в запросах

Добавьте полученную куку в заголовки последующих запросов к целевому сайту:

python Copy
headers = {
    "Cookie": "datadome=4ZXwCBlyHx9ktZhSnycMF...",
    "User-Agent": user_agent
}
response = requests.get("https://www.example.com/protected-page", headers=headers)

Срок жизни куки: обычно 15-30 минут. Для длительных сессий предусмотрите механизм обновления.


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

python Copy
import time
import requests

# Настройки
API_KEY = "your_rucaptcha_api_key"
WEBSITE_URL = "https://www.example.com/"
CAPTCHA_URL = "https://geo.captcha-delivery.com/captcha/?...&t=fe&..."
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
PROXY = {
    "type": "http",
    "address": "192.168.1.100",
    "port": 8080,
    "login": "user123",
    "password": "pass456"
}

def create_datadome_task():
    """Создаёт задачу на решение капчи DataDome"""
    payload = {
        "clientKey": API_KEY,
        "task": {
            "type": "DataDomeSliderTask",
            "websiteURL": WEBSITE_URL,
            "captchaUrl": CAPTCHA_URL,
            "userAgent": USER_AGENT,
            "proxyType": PROXY["type"],
            "proxyAddress": PROXY["address"],
            "proxyPort": PROXY["port"],
            "proxyLogin": PROXY.get("login"),
            "proxyPassword": PROXY.get("password")
        }
    }
    
    response = requests.post(
        "https://api.2captcha.com/createTask",
        json=payload
    )
    return response.json()

def get_task_result(task_id):
    """Получает результат решения задачи"""
    payload = {
        "clientKey": API_KEY,
        "taskId": task_id
    }
    
    # Опрос с интервалом 5 секунд, максимум 120 секунд
    for _ in range(24):
        response = requests.post(
            "https://api.2captcha.com/getTaskResult",
            json=payload
        )
        result = response.json()
        
        if result.get("status") == "ready":
            return result
        elif result.get("errorId") != 0:
            print(f"Ошибка API: {result}")
            return None
        
        time.sleep(5)
    
    print("Таймаут ожидания результата")
    return None

def main():
    # Создаём задачу
    create_response = create_datadome_task()
    
    if create_response.get("errorId") != 0:
        print(f"Ошибка создания задачи: {create_response}")
        return
    
    task_id = create_response["taskId"]
    print(f"Задача создана, ID: {task_id}")
    
    # Получаем результат
    result = get_task_result(task_id)
    
    if result and result.get("solution"):
        datadome_cookie = result["solution"]["cookie"]
        print(f"✅ Капча решена! Кука: {datadome_cookie[:50]}...")
        
        # Пример использования куки
        headers = {
            "Cookie": datadome_cookie,
            "User-Agent": USER_AGENT
        }
        response = requests.get(WEBSITE_URL, headers=headers)
        print(f"Статус ответа: {response.status_code}")
        # Дальнейшая обработка...
    else:
        print("❌ Не удалось решить капчу")

if __name__ == "__main__":
    main()

Обработка ошибок

Код ошибки Описание Решение
ERROR_BAD_PROXY Не удалось подключиться к прокси Проверьте данные прокси, смените сервер
ERROR_CAPTCHA_UNSOLVABLE Капча не может быть решена Смените прокси или проверьте captchaUrl
ERROR_PAGEURL Некорректный captchaUrl Убедитесь, что параметр t=fe и URL полный
CAPCHA_NOT_READY Решение ещё не готово Продолжайте опрашивать getTaskResult с интервалом 5-10 сек

Рекомендации по стабильности:

  1. Ротация прокси: При частых ошибках ERROR_CAPTCHA_UNSOLVABLE автоматически меняйте прокси.
  2. Экспоненциальная задержка: При повторных попытках увеличивайте интервал между запросами.
  3. Логирование: Фиксируйте taskId, время запросов и ответы для отладки.
  4. Валидация параметров: Проверяйте captchaUrl на наличие t=fe перед отправкой задачи.
python Copy
def validate_captcha_url(url):
    """Проверяет корректность captchaUrl"""
    if "t=fe" not in url:
        if "t=bv" in url:
            raise ValueError("IP заблокирован (t=bv) — смените прокси")
        raise ValueError("Неверный параметр t в captchaUrl")
    return True

Частые вопросы (FAQ)

Почему я получаю ошибку ERROR_CAPTCHA_UNSOLVABLE?
Скорее всего, ваш прокси заблокирован DataDome. Используйте резидентские прокси и убедитесь, что параметр t=fe в captchaUrl.

Как часто нужно обновлять куки?
Куки datadome обычно действительны 15-30 минут. Для длительных сессий предусмотрите периодическое обновление через повторное решение капчи.

Можно ли обойтись без прокси?
Нет. DataDome строго проверяет IP-адреса, и запросы без прокси или с дата-центровыми прокси будут блокироваться.

Поддерживаются ли другие языки программирования?
Да. Интеграция возможна через любой язык, поддерживающий HTTP-запросы (Python, Node.js, PHP, Java, C# и др.).


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


Заключение

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

  • Качественные резидентские прокси
  • Актуальный User-Agent
  • Корректный captchaUrl с параметром t=fe
  • Обработка ошибок и ротация ресурсов

Следуя этому руководству, вы сможете надёжно автоматизировать работу с сайтами, защищёнными DataDome, минимизируя блокировки и простои.

Помните: алгоритмы защиты постоянно обновляются. Регулярно проверяйте документацию и тестируйте ваше решение на актуальность.