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

-
Для выполнения данной задачи используйте ваши собственные прокси.
-
Если прокси с авторизацией по IP, то необходимо добавить адрес 65.21.190.34 в белый список.
-
После решения вы получите специальные cookie, которые необходимо добавить в браузер.
Параметры запроса
ВАЖНО: значения некоторых параметров являются динамическими – они меняются при каждом рендеринге страницы с DataDome.
Извлекайте их непосредственно перед созданием задачи, чтобы избежать ошибок при решении. Примеры извлечения параметров см. в разделах Как найти datadomeCookie и Примеры автоматического решения DataDome.
Перед созданием задачи проверьте значение параметра t в объекте DataDome или сформированном captchaUrl:
-
t=fe– можно продолжить создание задачи; -
t=bv– IP-адрес или прокси заблокирован DataDome.
При t=bv смените прокси и повторно получите актуальные параметры. Подробные примеры кода см. в разделе Примеры автоматического решения DataDome.
type<string>requiredCustomTask
class<string>requiredDataDome
websiteURL<string>requiredАдрес основной страницы, на которой решается капча.
captchaUrl (внутри metadata)<string>requiredСсылка на CAPTCHA с актуальными динамическими параметрами. Обычно имеет следующий формат:
https://geo.captcha-delivery.com/captcha/?initialCid=...&hash=...&cid=...&t=fe&referer=...&s=...
Передавайте URL только после проверки параметра t.
datadomeCookie (внутри metadata)<string>requiredВаши куки от datadome. Можно получить на странице с помощью document.cookie (если куки не имеют флага HttpOnly), в заголовке запроса Set-Cookie: "datadome=...", либо напрямую из HTML-кода страницы initialCid (см. примеры, как найти datadomeCookie)
datadomeVersion (внутри metadata)<string>optionalВерсия метода решения DataDome.
При значении "new" используется обновлённый метод с поддержкой обоих скриптов i.js и c.js (более подробно см. ниже).
Если параметр не указан, применяется прежний метод решения, поддерживающий только i.js.
userAgent<string>optionalUser-Agent браузера. Используйте текущее значение, поддерживаемое CapMonster Cloud: userAgentPlaceholder
Получить актуальное значение можно по адресу: https://capmonster.cloud/api/useragent/actual.
proxyType<string>requiredhttp - обычный http/https прокси;
https - попробуйте эту опцию только если "http" не работает (требуется для некоторых кастомных прокси);
socks4 - socks4 прокси;
socks5 - socks5 прокси.
proxyAddress<string>requiredIP адрес прокси IPv4/IPv6. Не допускается:
- использование прозрачных прокси (там где можно видеть IP клиента);
- использование прокси на локальных машинах.
proxyPort<integer>requiredПорт прокси.
proxyLogin<string>requiredЛогин прокси-сервера.
proxyPassword<string>requiredПароль прокси-сервера.
Метод создания задачи
https://api.capmonster.cloud/createTask
Для пользователей из России также доступен:
https://ru.api.capmonster.cloud/createTask
Подробнее в разделе createTask.
В процессе загрузки на странице DataDome может использовать один из двух скриптов: c.js или i.js.
Перед решением рекомендуется проверить, какой скрипт загружается (DevTools → Network / HTML).
Вариант с c.js:

Вариант с i.js:

Пример запроса
{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "DataDome",
"websiteURL": "https://yourwebsite.com/page-with-datadome",
"userAgent": "userAgentPlaceholder",
"metadata": {
"captchaUrl": "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA9UvsL58YLqIAXNLFPg%3D%3D&hash=C0705ACD75EBF650A07FF8291D3528&cid=7sfa5xUfDrR4bQTp1c2mhtiD7jj9TXExcQypjdNAxKVFyIi1S9tE0~_mqLa2EFpOuzxKcZloPllsNHjNnqzD9HmBA4hEv7SsEyPYEidCBvjZEaDyfRyzefFfolv0lAHM&referer=https%3A%2F%2Fwww.example.com.au%2F&s=6522&b=978936&dm=cm",
"datadomeCookie": "datadome=cookie-value",
"datadomeVersion": "new"
},
"proxyType": "your-proxy-type",
"proxyAddress": "your-proxy-address",
"proxyPort": 1234,
"proxyLogin": "your-proxy-login",
"proxyPassword": "your-proxy-password"
}
}
Пример ответа
{
"errorId":0,
"taskId":407533072
}
Метод получения результата задачи
Используйте метод getTaskResult, чтобы получить решение DataDome.
https://api.capmonster.cloud/getTaskResult
Для пользователей из России также доступен:
https://ru.api.capmonster.cloud/getTaskResult
Подробнее в разделе getTaskResult.
Пример запроса
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Пример ответа
{
"errorId": 0,
"status": "ready",
"solution": {
"domains": {
"www.example.com": {
"cookies": {
"datadome": "P1w0VnjFcTFslfps0J4FaPpY_QPbPBW4MeYxj4LW~pztIfJiSSuBPr8oQTUHzdrfgv137FbOBd3kCUOOgny7LhIkhm5e1qdtzYM4s2e46U_qfERK4KiCy22MOSIDsDyh"
},
"localStorage": null
}
},
"url": null,
"fingerprint": null,
"headers": null,
"data": null
}
}
Как найти datadomeCookie
Через Инструменты разработчика
Вариант 1:
-
Откройте сайт, защищённый DataDome, в браузере (Chrome, Firefox).
-
Нажмите F12 → откройте вкладку Application → Cookies.
-
Найдите домен сайта (например, www.example.com).
Среди cookie будет ключ datadome – это нужный параметр datadomeCookie.

Вариант 2:
-
Откройте сайт, где срабатывает DataDome-капча.
-
Перейдите в DevTools → Network, перезагрузите страницу и найдите запрос, в котором загружается страница с параметром
initialCid.
Пример URL:
https://geo.captcha-delivery.com/interstitial/?initialCid=...&hash=...&cid=...

или:
- Откройте Response этого запроса. В HTML-коде страницы найдите объект:
var ddm = { ... };
- Внутри этого объекта будет параметр
cid. Его значение и есть актуальное значение cookie datadome.

Вариант 3:
-
Откройте сайт, где срабатывает DataDome-капча.
-
Перейдите в DevTools → Network, перезагрузите страницу и найдите запрос со статусом 403.
-
Перейдите на вкладку Headers → Response Headers. В списке заголовков найдите
Set-Cookie:и скопируйте значение параметраdatadome(форматdatadome=<значение>).

Примеры автоматического решения DataDome
Приведённые ниже примеры предназначены для ознакомления и демонстрации общей логики.
Так как сайты отличаются механизмами защиты, структурой запросов и параметрами, решения могут потребовать дополнительной адаптации и тестирования под конкретный ресурс.
- Node.js
- Python
Показать код (Node.js + Playwright)
// npm install cheerio playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
const cheerio = require("cheerio");
const { chromium } = require("playwright");
const {
CapMonsterCloudClientFactory,
ClientOptions,
DataDomeRequest,
} = require("@zennolab_com/capmonstercloud-client");
const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud
const PAGE_URL = "https://example.com/"; // Укажите URL страницы с DataDome
const USER_AGENT = "userAgentPlaceholder";
const BASE_HEADERS = {
accept:
"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
pragma: "no-cache",
"sec-ch-ua":
'"Chromium";v="150", "Google Chrome";v="150", ";Not A Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
};
const PROXY = {
proxyType: "http",
proxyAddress: "127.0.0.1",
proxyPort: 8080,
proxyLogin: "proxy_login",
proxyPassword: "proxy_password",
};
/**
* Извлечение параметров DataDome из HTML-кода страницы
*
* @param {string} html
*/
function extractDD(html) {
const $ = cheerio.load(html);
for (const script of $("script").toArray()) {
const text = $(script).html();
if (text && text.includes("var dd=")) {
try {
const raw = text.split("var dd=")[1].split(";")[0].replace(/'/g, '"');
return JSON.parse(raw);
} catch {
return null;
}
}
}
return null;
}
/**
* Формирование URL CAPTCHA DataDome на основе параметров,
* полученных со страницы
*
* @param {any} dd
*/
function buildCaptchaUrl(dd) {
const params = new URLSearchParams({
initialCid: dd.cid,
hash: dd.hsh,
cid: dd.cookie,
t: dd.t,
referer: PAGE_URL,
s: dd.s,
dm: "cd",
});
if (dd.e) {
params.append("e", dd.e);
}
return `https://${dd.host}/captcha/?${params.toString()}`;
}
(async () => {
// Настройка прокси для браузера
// Для браузера и задачи CapMonster Cloud должен использоваться один и тот же прокси
const proxyConfig = {
server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
username: PROXY.proxyLogin,
password: PROXY.proxyPassword,
};
// Запуск Chromium с указанным прокси
const browser = await chromium.launch({
headless: false,
proxy: proxyConfig,
});
// Создание браузерного контекста с заданными User-Agent и HTTP-заголовками
const context = await browser.newContext({
userAgent: USER_AGENT,
extraHTTPHeaders: BASE_HEADERS,
});
const page = await context.newPage();
// Открытие защищенной страницы
await page.goto(PAGE_URL, {
waitUntil: "domcontentloaded",
});
// Получение HTML-кода страницы и извлечение параметров DataDome
const html = await page.content();
const dd = extractDD(html);
if (!dd) {
throw new Error("Параметры DataDome не найдены.");
}
// Проверка блокировки прокси DataDome
if (dd.t === "bv") {
throw new Error("Прокси заблокирован DataDome.");
}
// Формирование полного URL CAPTCHA для передачи в задачу
const captchaUrl = buildCaptchaUrl(dd);
// Создание клиента CapMonster Cloud
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({
clientKey: API_KEY,
}),
);
// Проверка текущего баланса аккаунта
const balance = await client.getBalance();
console.log("Баланс:", balance);
// Формирование задачи DataDome для CapMonster Cloud
const request = new DataDomeRequest({
_class: "DataDome",
websiteURL: PAGE_URL,
userAgent: USER_AGENT,
proxy: PROXY,
metadata: {
captchaUrl,
datadomeCookie: `datadome=${dd.cookie}`,
datadomeVersion: "new",
},
});
console.log("Отправка DataDome на решение...");
// Отправка задачи в CapMonster Cloud и ожидание результата
const result = await client.Solve(request);
console.dir(result, { depth: null });
// =====================================
// ИЗВЛЕЧЕНИЕ COOKIES ИЗ ОТВЕТА
// CAPMONSTER CLOUD
// =====================================
const domains = result?.solution?.domains ?? {};
const allCookies = [];
// Преобразование cookies из ответа CapMonster Cloud
// в формат, который принимает Playwright
for (const [domain, data] of Object.entries(domains)) {
const cookies = data?.cookies ?? {};
for (const [name, value] of Object.entries(cookies)) {
allCookies.push({
name,
value,
domain: ".example.com", // Замените на нужный домен
path: "/",
secure: true,
sameSite: "Lax",
});
}
}
if (!allCookies.length) {
throw new Error("CapMonster Cloud не вернул cookies.");
}
// ===============================
// ПРИМЕНЕНИЕ COOKIES В PLAYWRIGHT
// ===============================
// Получение cookies текущего браузерного контекста
const existingCookies = await context.cookies();
// Удаление старых cookies DataDome
// для предотвращения конфликта с новым решением
const filtered = existingCookies.filter((c) => {
const name = c.name.toLowerCase();
return !name.includes("datadome");
});
await context.clearCookies();
// Возвращение остальных cookies текущей сессии
if (filtered.length) {
await context.addCookies(filtered);
}
console.log("Старые cookies DataDome удалены.");
// Добавление cookies, полученных от CapMonster Cloud
await context.addCookies(allCookies);
console.log("Cookies CapMonster Cloud применены:", allCookies);
// ===============================
// ПОВТОРНАЯ ЗАГРУЗКА СТРАНИЦЫ
// С НОВЫМИ COOKIES
// ===============================
// Передача полученных cookies вместе с исходными HTTP-заголовками
await context.setExtraHTTPHeaders({
...BASE_HEADERS,
cookie: allCookies.map((c) => `${c.name}=${c.value}`).join("; "),
});
// Повторная загрузка страницы с решенной проверкой DataDome
await page.reload({
waitUntil: "domcontentloaded",
});
console.log("Страница перезагружена с полученными cookies DataDome.");
await page.waitForTimeout(10000);
await browser.close();
})().catch(console.error);
Показать код (Python + Playwright)
# pip install playwright beautifulsoup4 capmonstercloudclient
# playwright install chromium
import json
import asyncio
from urllib.parse import urlencode
from bs4 import BeautifulSoup
from playwright.async_api import async_playwright
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import DataDomeCustomTaskRequest
API_KEY = "YOUR_CAPMONSTER_API_KEY" # Укажите ваш API-ключ CapMonster Cloud
PAGE_URL = "https://example.com/" # Укажите URL страницы с DataDome
USER_AGENT = (
"userAgentPlaceholder"
)
BASE_HEADERS = {
"accept": (
"text/html,application/xhtml+xml,application/xml;q=0.9,"
"image/avif,image/webp,image/apng,*/*;q=0.8"
),
"accept-language": "en-US,en;q=0.9",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": '"Chromium";v="150", "Google Chrome";v="150", ";Not A Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
}
PROXY = {
"proxyType": "http",
"proxyAddress": "YOUR_PROXY_ADDRESS",
"proxyPort": 12345,
"proxyLogin": "YOUR_PROXY_LOGIN",
"proxyPassword": "YOUR_PROXY_PASSWORD",
}
def extract_dd(html: str):
"""
Извлечение параметров DataDome из HTML-кода страницы
:param html: HTML-код страницы
"""
soup = BeautifulSoup(html, "html.parser")
for script in soup.find_all("script"):
text = script.string or script.get_text()
if text and "var dd=" in text:
try:
raw = text.split("var dd=")[1].split(";")[0].replace("'", '"')
return json.loads(raw)
except Exception:
return None
return None
def build_captcha_url(dd):
"""
Формирование URL CAPTCHA DataDome на основе параметров,
полученных со страницы
:param dd: параметры DataDome
"""
params = {
"initialCid": dd.get("cid"),
"hash": dd.get("hsh"),
"cid": dd.get("cookie"),
"t": dd.get("t"),
"referer": PAGE_URL,
"s": dd.get("s"),
"dm": "cd",
}
if dd.get("e"):
params["e"] = dd.get("e")
return f"https://{dd.get('host')}/captcha/?{urlencode(params)}"
def normalize_result(result):
if isinstance(result, dict):
return result
if hasattr(result, "model_dump"):
return result.model_dump()
if hasattr(result, "dict"):
return result.dict()
return result
def extract_datadome_cookies(result):
result = normalize_result(result)
print("Результат решения:")
print(json.dumps(result, indent=2, default=str))
# =====================================
# ИЗВЛЕЧЕНИЕ COOKIES ИЗ ОТВЕТА
# CAPMONSTER CLOUD
# =====================================
solution = result.get("solution", result) if isinstance(result, dict) else result
domains = {}
if isinstance(solution, dict):
domains = solution.get("domains") or {}
all_cookies = []
# Преобразование cookies из ответа CapMonster Cloud
# в формат, который принимает Playwright
for domain, data in domains.items():
cookies = data.get("cookies", {}) if isinstance(data, dict) else {}
for name, value in cookies.items():
all_cookies.append({
"name": name,
"value": value,
"domain": ".example.com", # Замените на нужный домен
"path": "/",
"secure": True,
"sameSite": "Lax",
})
return all_cookies
async def main():
# Настройка прокси для браузера
# Для браузера и задачи CapMonster Cloud должен использоваться один и тот же прокси
proxy_config = {
"server": f"http://{PROXY['proxyAddress']}:{PROXY['proxyPort']}",
"username": PROXY["proxyLogin"],
"password": PROXY["proxyPassword"],
}
async with async_playwright() as p:
# Запуск Chromium с указанным прокси
browser = await p.chromium.launch(
headless=False,
proxy=proxy_config,
)
# Создание браузерного контекста с заданными User-Agent и HTTP-заголовками
context = await browser.new_context(
user_agent=USER_AGENT,
extra_http_headers=BASE_HEADERS,
)
page = await context.new_page()
# Открытие защищенной страницы
await page.goto(
PAGE_URL,
wait_until="domcontentloaded",
)
# Получение HTML-кода страницы и извлечение параметров DataDome
html = await page.content()
dd = extract_dd(html)
if not dd:
raise Exception("Параметры DataDome не найдены.")
# Проверка блокировки прокси DataDome
if dd.get("t") == "bv":
raise Exception("Прокси заблокирован DataDome.")
# Формирование полного URL CAPTCHA для передачи в задачу
captcha_url = build_captcha_url(dd)
# Создание клиента CapMonster Cloud
client = CapMonsterClient(
options=ClientOptions(
api_key=API_KEY,
)
)
# Проверка текущего баланса аккаунта
balance = await client.get_balance()
print("Баланс:", balance)
# Формирование задачи DataDome для CapMonster Cloud
request = DataDomeCustomTaskRequest(
_class="DataDome",
websiteUrl=PAGE_URL,
userAgent=USER_AGENT,
proxy=PROXY,
metadata={
"captchaUrl": captcha_url,
"datadomeCookie": f"datadome={dd.get('cookie')}",
"datadomeVersion": "new",
},
)
print("Отправка DataDome на решение...")
# Отправка задачи в CapMonster Cloud и ожидание результата
result = await client.solve_captcha(request)
all_cookies = extract_datadome_cookies(result)
if not all_cookies:
raise Exception("CapMonster Cloud не вернул cookies.")
# ===============================
# ПРИМЕНЕНИЕ COOKIES В PLAYWRIGHT
# ===============================
# Получение cookies текущего браузерного контекста
existing_cookies = await context.cookies()
# Удаление старых cookies DataDome
# для предотвращения конфликта с новым решением
filtered = [
c for c in existing_cookies
if "datadome" not in c.get("name", "").lower()
]
await context.clear_cookies()
# Возвращение остальных cookies текущей сессии
if filtered:
await context.add_cookies(filtered)
print("Старые cookies DataDome удалены.")
# Добавление cookies, полученных от CapMonster Cloud
await context.add_cookies(all_cookies)
print("Cookies CapMonster Cloud применены:", all_cookies)
# ===============================
# ПОВТОРНАЯ ЗАГРУЗКА СТРАНИЦЫ
# С НОВЫМИ COOKIES
# ===============================
# Передача полученных cookies вместе с исходными HTTP-заголовками
await context.set_extra_http_headers({
**BASE_HEADERS,
"cookie": "; ".join(
f"{cookie['name']}={cookie['value']}" for cookie in all_cookies
),
})
# Повторная загрузка страницы с решенной проверкой DataDome
await page.reload(
wait_until="domcontentloaded",
)
print("Страница перезагружена с полученными cookies DataDome.")
await page.wait_for_timeout(10000)
await browser.close()
asyncio.run(main())
Используйте библиотеку SDK
- JavaScript / TypeScript
- Python
- C#
Показать код (для браузера)
// https://github.com/CapMonsterCloud/capmonster-nodejs-captcha-solver
import {
CapMonsterCloudClientFactory,
ClientOptions,
DataDomeRequest
} from "@zennolab_com/capmonstercloud-client";
document.addEventListener("DOMContentLoaded", async () => {
const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// DataDome решается только с использованием вашего прокси
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password",
};
const datadomeRequest = new DataDomeRequest({
websiteURL: "https://yourwebsite.com/page-with-datadome",
userAgent: "userAgentPlaceholder",
proxy,
metadata: {
captchaUrl: "your-captcha-url",
datadomeVersion: "new",
datadomeCookie: "your-datadome-cookie",
},
});
// При необходимости можно проверить баланс
const balance = await client.getBalance();
console.log("Balance:", balance);
const result = await client.Solve(datadomeRequest);
console.log("Solution:", result.solution);
});
Показать код (Node.js)
// https://github.com/CapMonsterCloud/capmonster-nodejs-captcha-solver
const {
CapMonsterCloudClientFactory,
ClientOptions,
DataDomeRequest,
} = require("@zennolab_com/capmonstercloud-client");
const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud
async function solveDataDome() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY }),
);
// DataDome решается только с использованием вашего прокси
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password",
};
const datadomeRequest = new DataDomeRequest({
websiteURL: "https://yourwebsite.com/page-with-datadome",
userAgent: "userAgentPlaceholder",
proxy,
metadata: {
captchaUrl: "your-captcha-url",
datadomeVersion: "new",
datadomeCookie: "your-datadome-cookie",
},
});
// При необходимости можно проверить баланс
const balance = await client.getBalance();
console.log("Balance:", balance);
const result = await client.Solve(datadomeRequest);
console.log("Solution:", result.solution);
}
solveDataDome().catch(console.error);
Показать код
# https://github.com/CapMonsterCloud/capmonster-python-captcha-solver
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import DataDomeCustomTaskRequest
from capmonstercloudclient.requests.proxy_info import ProxyInfo
API_KEY = "YOUR_API_KEY" # Укажите ваш API-ключ CapMonster Cloud
async def solve_datadome():
client = CapMonsterClient(
options=ClientOptions(api_key=API_KEY)
)
# DataDome решается только с использованием вашего прокси
proxy = ProxyInfo(
proxyType="http",
proxyAddress="123.45.67.89",
proxyPort=8080,
proxyLogin="username",
proxyPassword="password",
)
datadome_request = DataDomeCustomTaskRequest(
websiteUrl="https://yourwebsite.com/page-with-datadome",
userAgent="userAgentPlaceholder",
proxy=proxy,
metadata={
"captchaUrl": "your-captcha-url",
"datadomeVersion": "new",
"datadomeCookie": "your-datadome-cookie",
},
)
# При необходимости можно проверить баланс
balance = await client.get_balance()
print("Balance:", balance)
result = await client.solve_captcha(datadome_request)
print("Solution:", result)
asyncio.run(solve_datadome())
// https://github.com/CapMonsterCloud/capmonster-dotnet-captcha-solver
using System;
using System.Threading.Tasks;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
class Program
{
static async Task Main(string[] args)
{
// Укажите ваш API-ключ CapMonster Cloud
var clientOptions = new ClientOptions
{
ClientKey = "YOUR_API_KEY"
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
// DataDome решается только с использованием вашего прокси
var datadomeRequest = new DataDomeCustomTaskRequest(
"your-datadome-cookie",
"your-captcha-url",
"new"
)
{
WebsiteUrl = "https://yourwebsite.com/page-with-datadome",
UserAgent = "userAgentPlaceholder",
Proxy = new ProxyContainer(
"123.45.67.89",
8080,
ProxyType.Http,
"username",
"password"
)
};
// При необходимости можно проверить баланс
var balance = await cmCloudClient.GetBalanceAsync();
Console.WriteLine("Balance: " + balance);
var datadomeResult =
await cmCloudClient.SolveAsync(datadomeRequest);
Console.WriteLine("Solution: " + datadomeResult.Solution);
}
}
