UNLOCK API
DataDome

DataDome

Cómo enviar una tarea de DataDome a UNLOCK API con createTask o in.php: nombres del tipo de tarea, todos los parámetros, el objeto solution, los campos de proxy y ejemplos de código en 7 lenguajes.
Precio
$0.725 $0.000725 por tarea
Envías
URL de la página, la dirección del captcha de la respuesta bloqueada, tu user agent y un proxy
Recibes
Una cookie datadome

Resumen y precio

Nombres del tipo de tarea

Este tipo siempre se ejecuta a través de tu proxy, así que los campos de proxy son obligatorios.
DataDomeSliderTaskCon tu proxy

Objeto de tarea

type
StringObligatorio
Nombre del tipo de tarea. Se reconoce sin importar mayúsculas o minúsculas. DataDomeSliderTask
websiteURL
StringObligatorio
Dirección completa de la página donde aparece el CAPTCHA, que empiece por http:// o https://.
captchaUrl
StringObligatorio
Dirección completa del frame del CAPTCHA de DataDome (geo.captcha-delivery.com/...).
userAgent
StringObligatorio
User-Agent del navegador que se usará al resolver. Envía el mismo cuando envíes la respuesta.

Los campos que no aparecen aquí se pasan al resolvedor tal como se envían.

Campos de proxy

Este tipo siempre se ejecuta a través de tu proxy, así que los campos de proxy son obligatorios.
proxyType
StringObligatorio
http, https, socks4 o socks5.
proxyAddress
StringObligatorio
Dirección IP o nombre de host del proxy.
proxyPort
IntegerObligatorio
Puerto del proxy.
proxyLogin
StringOpcional
Usuario del proxy, si el proxy lo requiere.
proxyPassword
StringOpcional
Contraseña del proxy, si el proxy la requiere.
proxy
String
Todos los campos de proxy en una sola cadena, por ejemplo http://user:pass@1.2.3.4:8080.

Uso de proxy

Solicitud

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "DataDomeSliderTask",
    "websiteURL": "https://example.com/login",
    "captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=...",
    "userAgent": "Mozilla/5.0 ...",
    "proxyType": "http",
    "proxyAddress": "1.2.3.4",
    "proxyPort": 8080
  }
}

Objeto solution

Se devuelve en solution cuando status es ready.
cookie
String
Cookie que debes establecer antes de volver a cargar la página.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "cookie": "datadome=6BvxqELMoorFNoo7GT1...; Path=/; Secure; SameSite=Lax"
  },
  "cost": "0.000725",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Ejemplos de código

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "DataDomeSliderTask",
      "websiteURL": "https://example.com/login",
      "captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=...",
      "userAgent": "Mozilla/5.0 ...",
      "proxyType": "http",
      "proxyAddress": "1.2.3.4",
      "proxyPort": 8080
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"]["cookie"])
        break
else:
    raise SystemExit("timed out")

Método de formulario in.php

La misma tarea con la solicitud de formulario clásica. res.php devuelve la respuesta como texto.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=datadome&captcha_url=CAPTCHA_URL&pageurl=https://example.com/login&userAgent=UA&proxy=login:pass@1.2.3.4:8080&proxytype=HTTP&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

API de formulario: in.php y res.php