Как решить DataDome с помощью Python

Logo of Capsolver

CapSolver Blogger

How to use capsolver

16-Nov-2023

обход datadome, решение datadome, решатель капчи datadome, решатель datadome

⚙️ Предпосылки

  • Рабочий прокси
  • Питон установлен
  • API-ключ Capsolver

🤖 Шаг 1: Установите необходимые пакеты

Выполните следующие команды для установки необходимых пакетов:

pip install capsolver

👨‍💻 Код Python для обхода Datadome с помощью прокси

Вот пример сценария Python для выполнения этой задачи:

import time
import json
import requests

API_KEY = "your api key"
# TODO: YOUR_PROXY
PROXY = "your proxy"
# TODO: user agent from https://docs.capsolver.com/guide/antibots/datadome.html
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
SITE_URL_WITH_DATADOME = "your datadome url"

HEADERS_TEMPLATE = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en,en-US;q=0.9',
    'cache-control': 'max-age=0',
    'dnt': '1',
    'sec-ch-device-memory': '8',
    'sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-full-version-list': '"Google Chrome";v="119.0.6045.200", "Chromium";v="119.0.6045.200", "Not?A_Brand";v="24.0.0.0"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'sec-gpc': '1',
    'upgrade-insecure-requests': '1',
    'user-agent': USER_AGENT,
    'referer': SITE_URL_WITH_DATADOME  
}

def format_proxy(px: str):
    if '@' not in px:
        sp = px.split(':')
        if len(sp) == 4:
            px = f'{sp[2]}:{sp[3]}@{sp[0]}:{sp[1]}'
    return {"http": f"http://{px}", "https": f"http://{px}"}

def get_page_with_cookie(url, cookie=None):
    headers = HEADERS_TEMPLATE.copy()
    if cookie:
        headers['cookie'] = f"datadome={cookie}"
    try:
        response = requests.get(url, headers=headers, proxies=format_proxy(PROXY), timeout=(20, 20), verify=False)
        print(response.text)
        print(response.status_code)
        return response
    except requests.RequestException as e:
        print(f"Request failed: {e}")
        return None

def extract_captcha_url(response):
    if response.status_code == 403 or "geo.captcha-delivery.com" in response.text:
        if 'dd=' in response.text:
            dd = response.text.split('dd=')[1]
            dd = dd.split('</script')[0]
            dd = json.loads(dd.replace("'", '"'))
            cid = response.headers.get('Set-Cookie').split('datadome=')[1]
            cid = cid.split(';')[0]
            return f"https://geo.captcha-delivery.com/captcha/?initialCid={dd['cid']}&hash={dd['hsh']}&cid={cid}&t={dd['t']}&referer={SITE_URL_WITH_DATADOME}&s={dd['s']}&e={dd['e']}"
        else:
            possible_paths = ["/captcha/", "/interstitial/"]
            for path in possible_paths:
                start_index = response.text.find(f"https://geo.captcha-delivery.com{path}")
                if start_index != -1:
                    end_index = response.text.find('"', start_index)
                    return response.text[start_index:end_index]
    return "Not DataDome Captcha / Challenge found"

def call_capsolver(web_url, captcha_url):
    data = {
        "clientKey": API_KEY,
        "task": {
            "type": 'DatadomeSliderTask',
            "websiteURL": web_url,
            "captchaUrl": captcha_url,
            "userAgent": USER_AGENT,
            "proxy": PROXY
        }
    }
    headers = {
        "Content-Type": "application/json",
        "Accept": "application/json",
    }
    res = requests.post('https://api.capsolver.com/createTask', headers=headers, json=data, verify=False)
    resp = res.json()
    task_id = resp.get('taskId')
    if not task_id:
        print("create task failed:", res.text)
        return
    while True:
        time.sleep(1)
        data = {
            "clientKey": API_KEY,
            "taskId": task_id
        }
        res = requests.post('https://api.capsolver.com/getTaskResult', headers=headers, json=data, verify=False)
        resp = res.json()
        status = resp.get('status', '')
        if status == "ready":
            cookie = resp['solution']['cookie']
            cookie = cookie.split(';')[0].split('=')[1]
            print("successfully got cookie:", cookie)
            return cookie
        if status == "failed" or resp.get("errorId"):
            print("failed to solve datadome:", res.text)
            return
        print('solve datadome status:', status)

def test_register_page():
    response = get_page_with_cookie(SITE_URL_WITH_DATADOME)
    print("Getting captcha url")
    captcha_url = extract_captcha_url(response)
    print(captcha_url)
    if captcha_url and 't=bv' not in captcha_url:
        cookie = call_capsolver(SITE_URL_WITH_DATADOME, captcha_url)
        if cookie:
            get_page_with_cookie(SITE_URL_WITH_DATADOME, cookie)

if __name__ == '__main__':
    test_register_page()

⚠️ Измените эти переменные

  • PROXY: обновите данные своего прокси. Формат должен быть http://имя пользователя:пароль@ip:порт.
  • API_KEY: получите ключ API на панели управления Capsolver.
  • SITE_URL_WITH_DATADOME: замените URL-адресом веб-сайта, для которого вы хотите обойти капчу datadome.
  • USER_AGENT: получите последнюю версию пользовательского агента из документации.

👀 Дополнительная информация

Ещеe

Web Scraping vs API
Веб-скрапинг против API: Сбор данных с помощью веб-скрапинга и API

В современном мире, ориентированном на данные, способность собирать и анализировать огромные объемы информации имеет огромное значение...

The other captcha

29-Mar-2024

Как решить DataDome с помощью Python
Как решить DataDome с помощью Python

В этой статье мы покажем вам, как решить DataDome с помощью Python.

The other captcha

16-Nov-2023

Как решить Queue-it Captcha
Как решить Queue-it Captcha

Очередь — это виртуальная система зала ожидания, используемая для управления трафиком веб-сайта в часы пик. Иногда он применяет CAPTCHA для проверки того, что пользователи являются людьми, а не ботами. CAPSOLVER — это автоматизированный инструмент, который можно использовать для решения CAPTCHA, что может помочь вам быстрее обходить Queue-it CAPTCHA.

The other captcha

12-Jul-2023

Обход CAPTCHA DataDome с помощью
Обход CAPTCHA DataDome с помощью

Этот блог предоставляет руководство по обходу CAPTCHA DataDome с использованием API CapSolver. Процесс включает создание задачи с использованием определенного метода, ее отправку, а затем получение решения с использованием ID задачи. В посте также отмечается, что можно использовать прокси, и приводятся примеры запросов дл

The other captcha

14-Jun-2023

Что такое DataDome
Что такое DataDome

Этот блог подробно рассказывает о том, как решить капчу DataDome с помощью сервиса capsolver.com. В нем приводятся конкретные шаги для решения капчи, включая подготовку необходимых данных, использование API capsolver для создания задачи и получения результата, а также общие рекомендации и предупреждения по использованию сервиса. Блог является очень полезным ресурсом для тех, кто сталкивается с капчами DataDome и ищет способы их обхода.

The other captcha

13-Jun-2023

Обход AWS WAF Captcha с помощью распознавания изображений
Обход AWS WAF Captcha с помощью распознавания изображений

Amazon WAF - это веб-приложение firewall, которое помогает защитить ваши веб-приложения или API от обычных веб-эксплуатаций, которые могут повлиять на доступность, нарушить безопасность или потребить чрезмерные ресурсы. Amazon WAF дает вам контроль над тем, как трафик достигает ваших приложений, позволяя вам создавать правила безопасности, которые блокируют общие шаблоны атак.

The other captcha

30-May-2023