Как обойти капчу Datadome
Если вы столкнулись с капчей DataDome при парсинге сайтов или автоматизации веб-задач — это руководство для вас. Мы подробно разберём, как работает защита DataDome, какие параметры необходимы для её обхода, и покажем пошаговую интеграцию с API сервиса распознавания капч.
Важно: Обход капч должен осуществляться только в законных целях — для тестирования собственных проектов, исследовательских работ или с явного разрешения владельца ресурса.
Что такое DataDome?
DataDome — это платформа защиты от ботов, которая использует машинное обучение и поведенческий анализ для выявления автоматизированного трафика. Сервис защищает сайты, мобильные приложения и API от скрейпинга, атак перебора и мошеннических действий.
Особенности защиты DataDome:
| Характеристика | Описание |
|---|---|
| Тип капчи | Слайдер-пазл или токен-верификация |
| Анализ | Отпечатки браузера, поведение мыши, заголовки запросов, IP-репутация |
| Время ответа | Решения принимаются за миллисекунды |
| Сложность | Высокая — традиционные методы обхода не работают |
Капча DataDome обычно появляется в виде всплывающего окна с ползунком, который нужно переместить, либо как скрытая проверка, возвращающая токен в куки. При этом пазл-капча в последнее время встречается реже, и чаще используется просто слайдер без изображения.
Подготовка к обходу: обязательные параметры
Для успешного решения капчи DataDome через API необходимо подготовить следующие данные:
| Параметр | Обязателен | Описание |
|---|---|---|
| type | Да | Тип задачи: DataDomeSliderTask |
| websiteURL | Да | Полный URL целевой страницы |
| captchaUrl | Да | Значение src из iframe с капчей |
| userAgent | Да | User-Agent браузера (должен быть актуальным) |
| proxyType | Да | Тип прокси: http, socks5 |
| proxyAddress | Да | IP или хост прокси-сервера |
| proxyPort | Да | Порт прокси (число) |
| proxyLogin | Нет | Логин для авторизации на прокси |
| proxyPassword | Нет | Пароль для авторизации на прокси |
Критически важные моменты:
- Параметр
tвcaptchaUrlдолжен быть равенfe. Еслиt=bv— ваш IP заблокирован, смените прокси.- Используйте качественные резидентские прокси — публичные прокси часто заблокированы DataDome.
- User-Agent должен совпадать с тем, что используется в браузере при загрузке страницы.
Пошаговая инструкция: обход DataDome через API
Шаг 1: Получите captchaUrl
- Откройте DevTools (
F12) → вкладка Network - Включите Preserve log
- Выполните действие, вызывающее капчу
- Найдите запрос к домену
captcha-delivery.com - Скопируйте значение атрибута
srcиз<iframe>— это и естьcaptchaUrl
Совет: Если капча не отображается явно, проверьте ответы с кодом
403— в теле ответа может содержаться ссылка на капчу.
Шаг 2: Подготовьте прокси и User-Agent
python
# Пример параметров
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
{
"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
{
"errorId": 0,
"taskId": "1234567890"
}
Сохраните taskId для опроса статуса.
Шаг 5: Запросите результат
Эндпоинт получения результата: https://api.2captcha.com/getTaskResult
Запрос:
json
{
"clientKey": "ВАШ_API_КЛЮЧ",
"taskId": "1234567890"
}
Успешный ответ:
json
{
"errorId": 0,
"status": "ready",
"solution": {
"cookie": "datadome=4ZXwCBlyHx9ktZhSnycMF...; Path=/; Secure; SameSite=Lax"
},
"cost": "0.00299",
"createTime": 1695214711,
"endTime": 1695214720
}
Шаг 6: Используйте куки в запросах
Добавьте полученную куку в заголовки последующих запросов к целевому сайту:
python
headers = {
"Cookie": "datadome=4ZXwCBlyHx9ktZhSnycMF...",
"User-Agent": user_agent
}
response = requests.get("https://www.example.com/protected-page", headers=headers)
Срок жизни куки: обычно 15-30 минут. Для длительных сессий предусмотрите механизм обновления.
Полный пример на Python
python
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 сек |
Рекомендации по стабильности:
- Ротация прокси: При частых ошибках ERROR_CAPTCHA_UNSOLVABLE автоматически меняйте прокси.
- Экспоненциальная задержка: При повторных попытках увеличивайте интервал между запросами.
- Логирование: Фиксируйте taskId, время запросов и ответы для отладки.
- Валидация параметров: Проверяйте captchaUrl на наличие t=fe перед отправкой задачи.
python
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, минимизируя блокировки и простои.
Помните: алгоритмы защиты постоянно обновляются. Регулярно проверяйте документацию и тестируйте ваше решение на актуальность.