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

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

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

Как обойти капчу 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.rucaptcha.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.rucaptcha.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.rucaptcha.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.rucaptcha.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, минимизируя блокировки и простои.

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