DataDome
Este tipo de captcha geralmente exige que o usuário resolva um quebra-cabeça movendo um slider para verificação.

-
Para executar esta tarefa, utilize os seus próprios proxies.
-
Se o proxy usar autenticação por IP, é necessário adicionar o endereço 65.21.190.34 à lista de permissões (whitelist).
-
Após a resolução, você receberá cookies especiais, que devem ser adicionados ao navegador.
Parâmetros da solicitação
IMPORTANTE: alguns valores de parâmetros são dinâmicos — eles mudam a cada renderização da página que contém DataDome.
Extraia-os imediatamente antes de criar a tarefa para evitar erros durante a resolução.
Veja exemplos de extração de parâmetros nas seções Como encontrar datadomeCookie e Exemplos de solução automática do DataDome.
Antes de criar a tarefa, verifique o valor do parâmetro t no objeto DataDome ou no captchaUrl gerado:
-
t=fe– você pode prosseguir com a criação da tarefa; -
t=bv– o endereço IP ou o proxy foi bloqueado pelo DataDome.
Se o valor for t=bv, altere o proxy e obtenha os parâmetros atualizados novamente. Para exemplos detalhados de código, consulte a seção Exemplos de resolução automática do DataDome.
type<string>requiredCustomTask
class<string>requiredDataDome
websiteURL<string>requiredURL da página principal onde o captcha será resolvido.
captchaUrl (dentro de metadata)<string>requiredURL da CAPTCHA com os parâmetros dinâmicos atualizados. Geralmente, apresenta o seguinte formato:
https://geo.captcha-delivery.com/captcha/?initialCid=...&hash=...&cid=...&t=fe&referer=...&s=...
Envie o URL somente após verificar o parâmetro t.
datadomeCookie (dentro de metadata)<string>requiredSeus cookies do DataDome. Podem ser obtidos na página usando document.cookie (se os cookies não tiverem a flag HttpOnly), no cabeçalho da requisição Set-Cookie: "datadome=...", ou diretamente do código HTML initialCid (veja exemplos de como encontrar datadomeCookie).
datadomeVersion (dentro de metadata)<string>optionalVersão do método de resolução do DataDome. Quando definido como "new", é utilizado o método de resolução atualizado, com suporte para os scripts i.js e c.js (veja mais detalhes abaixo). Se o parâmetro não for especificado, será utilizado o método antigo, que oferece suporte apenas ao i.js.
proxyType<string>requiredhttp - proxy http/https padrão;
https - use apenas se "http" não funcionar (necessário para alguns proxies customizados);
socks4 - proxy socks4;
socks5 - proxy socks5.
proxyAddress<string>requiredEndereço IPv4/IPv6 do proxy. Não permitido:
- proxies transparentes (onde o IP do cliente é visível);
- proxies em máquinas locais.
proxyPort<integer>requiredPorta do proxy.
proxyLogin<string>requiredLogin do servidor proxy.
proxyPassword<string>requiredSenha do servidor proxy.
userAgent<string>optionalUser-Agent do navegador. Use o valor atual compatível com o CapMonster Cloud: userAgentPlaceholder
Você pode obter o valor mais recente em: https://capmonster.cloud/api/useragent/actual.
Método para criar tarefa
Durante o carregamento da página, o DataDome pode usar um de dois scripts: c.js ou i.js.
Antes de resolver, verifique qual script está carregado (DevTools → Network / HTML).
Opção com c.js:

Opção com i.js:

https://api.capmonster.cloud/createTask
Exemplo de requisição
{
"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"
}
}
Exemplo de resposta
{
"errorId":0,
"taskId":407533072
}
Método para obter o resultado da tarefa
Use o método getTaskResult para obter a solução do captcha DataDome.
https://api.capmonster.cloud/getTaskResult
Exemplo de requisição
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Exemplo de resposta
{
"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
}
}
Como encontrar datadomeCookie
Usando DevTools
Opção 1:
-
Abra o site protegido pelo DataDome no navegador (Chrome, Firefox).
-
Pressione F12 → vá para a aba Application → Cookies.
-
Encontre o domínio do site (ex.: www.example.com).
Entre os cookies, procure a chave datadome — este é o parâmetro datadomeCookie necessário.

Opção 2:
-
Abra o site onde o captcha DataDome é ativado.
-
Vá para DevTools → Network, recarregue a página e encontre a requisição que carrega a página com
initialCid.
Exemplo de URL:
https://geo.captcha-delivery.com/interstitial/?initialCid=...&hash=...&cid=...

ou:
- Abra a Response dessa requisição. No código HTML, encontre o objeto:
var ddm = { ... };
- Dentro deste objeto, localize o parâmetro
cid. Seu valor é odatadomeCookieatual.

Opção 3:
-
Abra o site onde o captcha DataDome é ativado.
-
Vá para DevTools → Network, recarregue a página e encontre uma requisição com status 403.
-
Vá para a aba Headers → Response Headers. Nos cabeçalhos, encontre
Set-Cookie:e copie o valor do parâmetrodatadome(datadome=<valor>).

Exemplos de solução automática do DataDome
Os exemplos abaixo são fornecidos apenas para fins informativos e para demonstrar a lógica geral.
Como os sites diferem em seus mecanismos de proteção, estrutura de requisições e parâmetros, as soluções podem exigir adaptação adicional e testes para um recurso específico.
- Node.js
- Python
Mostrar código (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"; // Insira sua chave da API do CapMonster Cloud
const PAGE_URL = "https://example.com/"; // Insira a URL da página protegida pelo 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",
};
/**
* Extrai os parâmetros do DataDome do HTML da página
*
* @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;
}
/**
* Gera a URL do CAPTCHA do DataDome usando os parâmetros
* extraídos da página
*
* @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 () => {
// Configura o proxy para o navegador
// O navegador e a tarefa do CapMonster Cloud devem usar o mesmo proxy
const proxyConfig = {
server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
username: PROXY.proxyLogin,
password: PROXY.proxyPassword,
};
// Inicia o Chromium com o proxy especificado
const browser = await chromium.launch({
headless: false,
proxy: proxyConfig,
});
// Cria um contexto do navegador com o User-Agent e os cabeçalhos HTTP definidos
const context = await browser.newContext({
userAgent: USER_AGENT,
extraHTTPHeaders: BASE_HEADERS,
});
const page = await context.newPage();
// Abre a página protegida
await page.goto(PAGE_URL, {
waitUntil: "domcontentloaded",
});
// Obtém o HTML da página e extrai os parâmetros do DataDome
const html = await page.content();
const dd = extractDD(html);
if (!dd) {
throw new Error("Parâmetros do DataDome não encontrados.");
}
// Verifica se o proxy foi bloqueado pelo DataDome
if (dd.t === "bv") {
throw new Error("Proxy bloqueado pelo DataDome.");
}
// Gera a URL completa do CAPTCHA para enviar na tarefa
const captchaUrl = buildCaptchaUrl(dd);
// Cria o cliente do CapMonster Cloud
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({
clientKey: API_KEY,
}),
);
// Verifica o saldo atual da conta
const balance = await client.getBalance();
console.log("Saldo:", balance);
// Cria a tarefa do DataDome para o 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("Enviando a tarefa do DataDome para resolução...");
// Envia a tarefa para o CapMonster Cloud e aguarda o resultado
const result = await client.Solve(request);
console.dir(result, { depth: null });
// =====================================
// EXTRAÇÃO DOS COOKIES DA RESPOSTA
// DO CAPMONSTER CLOUD
// =====================================
const domains = result?.solution?.domains ?? {};
const allCookies = [];
// Converte os cookies da resposta do CapMonster Cloud
// para o formato aceito pelo 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", // Substitua pelo domínio necessário
path: "/",
secure: true,
sameSite: "Lax",
});
}
}
if (!allCookies.length) {
throw new Error("O CapMonster Cloud não retornou cookies.");
}
// ===============================
// APLICA OS COOKIES NO PLAYWRIGHT
// ===============================
// Obtém os cookies do contexto atual do navegador
const existingCookies = await context.cookies();
// Remove os cookies antigos do DataDome
// para evitar conflitos com a nova solução
const filtered = existingCookies.filter((c) => {
const name = c.name.toLowerCase();
return !name.includes("datadome");
});
await context.clearCookies();
// Restaura os demais cookies da sessão atual
if (filtered.length) {
await context.addCookies(filtered);
}
console.log("Cookies antigos do DataDome removidos.");
// Adiciona os cookies recebidos do CapMonster Cloud
await context.addCookies(allCookies);
console.log("Cookies do CapMonster Cloud aplicados:", allCookies);
// ===============================
// RECARREGA A PÁGINA
// COM OS NOVOS COOKIES
// ===============================
// Envia os cookies recebidos junto com os cabeçalhos HTTP originais
await context.setExtraHTTPHeaders({
...BASE_HEADERS,
cookie: allCookies.map((c) => `${c.name}=${c.value}`).join("; "),
});
// Recarrega a página com os cookies resolvidos do DataDome
await page.reload({
waitUntil: "domcontentloaded",
});
console.log("Página recarregada com os cookies do DataDome.");
await page.waitForTimeout(10000);
await browser.close();
})().catch(console.error);
Mostrar código (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" # Insira sua chave da API do CapMonster Cloud
PAGE_URL = "https://example.com/" # Insira a URL da página com 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):
"""
Extração dos parâmetros do DataDome do código HTML da página
:param html: código HTML da página
"""
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):
"""
Formação da URL do CAPTCHA DataDome com base nos parâmetros
obtidos da página
:param dd: parâmetros do 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("Resultado da resolução:")
print(json.dumps(result, indent=2, default=str))
# =====================================
# EXTRAÇÃO DE COOKIES DA RESPOSTA
# DO 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 = []
# Conversão dos cookies da resposta do CapMonster Cloud
# para o formato aceito pelo 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", # Substitua pelo domínio necessário
"path": "/",
"secure": True,
"sameSite": "Lax",
})
return all_cookies
async def main():
# Configuração do proxy para o navegador
# O mesmo proxy deve ser usado para o navegador e para a tarefa do CapMonster Cloud
proxy_config = {
"server": f"http://{PROXY['proxyAddress']}:{PROXY['proxyPort']}",
"username": PROXY["proxyLogin"],
"password": PROXY["proxyPassword"],
}
async with async_playwright() as p:
# Inicialização do Chromium com o proxy especificado
browser = await p.chromium.launch(
headless=False,
proxy=proxy_config,
)
# Criação do contexto do navegador com User-Agent e cabeçalhos HTTP especificados
context = await browser.new_context(
user_agent=USER_AGENT,
extra_http_headers=BASE_HEADERS,
)
page = await context.new_page()
# Abertura da página protegida
await page.goto(
PAGE_URL,
wait_until="domcontentloaded",
)
# Obtenção do código HTML da página e extração dos parâmetros do DataDome
html = await page.content()
dd = extract_dd(html)
if not dd:
raise Exception("Parâmetros do DataDome não encontrados.")
# Verificação de bloqueio do proxy pelo DataDome
if dd.get("t") == "bv":
raise Exception("O proxy foi bloqueado pelo DataDome.")
# Formação da URL completa do CAPTCHA para envio na tarefa
captcha_url = build_captcha_url(dd)
# Criação do cliente do CapMonster Cloud
client = CapMonsterClient(
options=ClientOptions(
api_key=API_KEY,
)
)
# Verificação do saldo atual da conta
balance = await client.get_balance()
print("Saldo:", balance)
# Formação da tarefa DataDome para o 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("Enviando DataDome para resolução...")
# Envio da tarefa ao CapMonster Cloud e espera pelo resultado
result = await client.solve_captcha(request)
all_cookies = extract_datadome_cookies(result)
if not all_cookies:
raise Exception("O CapMonster Cloud não retornou cookies.")
# ===============================
# APLICAÇÃO DOS COOKIES NO PLAYWRIGHT
# ===============================
# Obtenção dos cookies do contexto atual do navegador
existing_cookies = await context.cookies()
# Remoção dos cookies antigos do DataDome
# para evitar conflito com a nova solução
filtered = [
c for c in existing_cookies
if "datadome" not in c.get("name", "").lower()
]
await context.clear_cookies()
# Restauração dos demais cookies da sessão atual
if filtered:
await context.add_cookies(filtered)
print("Cookies antigos do DataDome removidos.")
# Adição dos cookies obtidos do CapMonster Cloud
await context.add_cookies(all_cookies)
print("Cookies do CapMonster Cloud aplicados:", all_cookies)
# ===============================
# RECARREGAMENTO DA PÁGINA
# COM OS NOVOS COOKIES
# ===============================
# Envio dos cookies obtidos junto com os cabeçalhos HTTP originais
await context.set_extra_http_headers({
**BASE_HEADERS,
"cookie": "; ".join(
f"{cookie['name']}={cookie['value']}" for cookie in all_cookies
),
})
# Recarregamento da página com a verificação do DataDome resolvida
await page.reload(
wait_until="domcontentloaded",
)
print("Página recarregada com os cookies do DataDome obtidos.")
await page.wait_for_timeout(10000)
await browser.close()
asyncio.run(main())
Usar biblioteca SDK
- JavaScript
- Python
Mostrar Código (para navegador)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, DataDomeRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // Insira sua chave de API do CapMonster Cloud
document.addEventListener("DOMContentLoaded", async () => {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Se necessário, você pode verificar o saldo
const balance = await client.getBalance();
console.log("Balance:", balance);
// DataDome é resolvido apenas com seus proxies
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};
const datadomeRequest = new DataDomeRequest({
_class: 'DataDome',
websiteURL: "https://example.com/", // URL da página com a captcha
userAgent: "userAgentPlaceholder",
proxy,
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"
}
});
const result = await client.Solve(datadomeRequest);
console.log("Solution:", result);
});
Mostrar Código (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, DataDomeRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // Insira sua chave de API do CapMonster Cloud
async function solveDataDome() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Se necessário, você pode verificar o saldo
const balance = await client.getBalance();
console.log("Balance:", balance);
// DataDome é resolvido apenas com seus proxies
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};
const datadomeRequest = new DataDomeRequest({
_class: 'DataDome',
websiteURL: "https://example.com/", // URL da página com a captcha
userAgent: "userAgentPlaceholder",
proxy,
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"
}
});
const result = await client.Solve(datadomeRequest);
console.log("Solution:", result);
}
solveDataDome().catch(console.error);
Mostrar Código
# https://github.com/ZennoLab/capmonstercloud-client-python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import DataDomeCustomTaskRequest
from capmonstercloudclient.requests.baseRequestWithProxy import ProxyInfo
API_KEY = "YOUR_API_KEY" # Insira sua chave de API do CapMonster Cloud
async def solve_datadome_captcha():
client_options = ClientOptions(api_key=API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)
# DataDome é resolvido apenas com seus proxies
proxy = ProxyInfo(
proxyType="http",
proxyAddress="123.45.67.89",
proxyPort=8080,
proxyLogin="username",
proxyPassword="password"
)
# Criando a tarefa DataDome
datadome_request = DataDomeCustomTaskRequest(
websiteUrl="https://example.com", # URL da página com a captcha
metadata={
"datadomeCookie": "datadome=cookie-value",
"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"
},
proxy=proxy,
userAgent="userAgentPlaceholder"
)
# Se necessário, você pode verificar o saldo
balance = await cap_monster_client.get_balance()
print("Balance:", balance)
result = await cap_monster_client.solve_captcha(datadome_request)
print("Solution:", result)
asyncio.run(solve_datadome_captcha())
