指南
任务(令牌)
DataDome

Datadome:解决DataDome验证码

TIP

使用 createTask 方法创建任务,并使用 getTaskResult 方法获取结果。

注意

ℹ️ 此任务类型需要您自己的代理。

ℹ️ 请确保user-agent匹配:您发送给我们API的userAgent需要与您使用的userAgent相同。

我们支持的Datadome类型包括:

滑块验证码插页式(设备检查)

我们支持的任务类型 types 如下:

  • DatadomeSliderTask 此任务类型需要您自己的代理。

创建任务

使用 createTask 创建任务。

注意:您必须观察 `captchaUrl` 中的 `t` 参数是否等于 `fe`。如果 `t=bv` 则表示

您的IP已被直接封禁,您必须更换IP。

任务对象结构

属性类型必需描述
typeString必需DataDomeSliderTask (滑块和插页式都使用此类型)
captchaUrlString必需如果URL包含 t=bv,则表示您的IP已被封禁,t 应该为 t=fe
userAgentString必需它需要与您请求网站时使用的userAgent相同。目前我们只支持以下userAgent
proxyString必需了解 如何使用代理
警告

请使用我们提供的固定userAgent来请求网站。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36

请求示例

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "DatadomeSliderTask",
    "captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=AHrlqAAAAAMA1QGvUmJwyYoAwpyjNg%3D%3D&hash=789361B674144528D0B7EE76B35826&cid=6QAEcL8coBYTi9tYLmjCdyKmNNyHz1xwM2tMHHGVd_Rxr6FsWrb7H~a04csMptCPYfQ25CBDmaOZpdDa4qwAigFnsrzbCkVkoaBIXVAwHsjXJaKYXsTpkBPtqJfLMGN&t=fe&referer=https%3A%2F%2bck.websiteurl.com%2Fclient%2Fregister%2FYM4HJV%3Flang%3Den&s=40070&e=3e531bd3b30650f2e810ac72cd80adb5eaa68d2720e804314d122fa9e84ac25d",
    // userAgent is the one you are using:
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
    "proxy": "158.120.100.23:334:user:pass",
  }
}

响应示例

{
  "errorId": 0,
  "status": "idle",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
 

获取结果

使用 getTaskResult 方法获取识别结果

根据系统负载情况,您将在 1s20s 的间隔内获得结果

请求示例

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

响应示例

{
  "errorId": 0,
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
    "cookie": "datadome=yzj_BK...S0; Max-Age=31536000; Domain=; Path=/; Secure; SameSite=Lax"
  },
  "status": "ready"
}

错误排查

常见错误

  1. API返回的cookie不起作用 — 仍然收到403错误。
  2. API返回:“Proxy IP banned by target service”(代理IP被目标服务封禁)。
  3. API返回:“Failed to solve the captcha: 1013”(解决验证码失败:1013)。

排查步骤

  1. 尝试更换代理 – 您的IP可能已被列入黑名单。
  2. 检查代理类型 – 某些网站会验证IP的一致性。如果您使用的是轮换代理,请尝试切换到粘性代理。
  3. 检查userAgent – 发送给我们API的userAgent必须与用于目标网站的userAgent匹配。
  4. 检查Accept-Language – 某些网站要求它与网站的区域语言匹配。
  5. 调试您的代码/程序(例如,TLS、标头):
  • 手动将DataDome cookie从您的浏览器复制到您的代码中并重新运行。
  • 如果仍然失败,您的代码可能存在问题 — 检查TLS和标头。
  1. 检查标头 – 确保它们与真实浏览器发送的标头匹配,包括标头的顺序。
  2. 检查TLS指纹 – 使用模仿真实TLS握手的库。
  3. 如果经过所有检查后错误仍然存在,请向我们报告此问题。

使用SDK请求

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "DatadomeSliderTask",
    "websiteURL": "https://bck.websiteurl.com/",
    "captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=AHrlqAAAAAMA1QGvUmJwyYoAwpyjNg%3D%3D&hash=789361B674144528D0B7EE76B35826&cid=6QAEcL8coBYTi9tYLmjCdyKmNNyHz1xwM2tMHHGVd_Rxr6FsWrb7H~a04csMptCPYfQ25CBDmaOZpdDa4qwAigFnsrzbCkVkoaBIXVAwHsjXJaKYXsTpkBPtqJfLMGN&t=fe&referer=https%3A%2F%2bck.websiteurl.com%2Fclient%2Fregister%2FYM4HJV%3Flang%3Den&s=40070&e=3e531bd3b30650f2e810ac72cd80adb5eaa68d2720e804314d122fa9e84ac25d",
    # userAgent is the one you are using:
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
    "proxy": "158.120.100.23:334:user:pass"
})

示例代码

# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # your api key of capsolver
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'DatadomeSliderTask',
            "websiteURL": "https://bck.websiteurl.com/",
            "captchaUrl": "https://geo.captcha-delivery.com/captcha/?initialCid=AHrlqAAAAAMA1QGvUmJwyYoAwpyjNg%3D%3D&hash=789361B674144528D0B7EE76B35826&cid=6QAEcL8coBYTi9tYLmjCdyKmNNyHz1xwM2tMHHGVd_Rxr6FsWrb7H~a04csMptCPYfQ25CBDmaOZpdDa4qwAigFnsrzbCkVkoaBIXVAwHsjXJaKYXsTpkBPtqJfLMGN&t=fe&referer=https%3A%2F%2bck.websiteurl.com%2Fclient%2Fregister%2FYM4HJV%3Flang%3Den&s=40070&e=3e531bd3b30650f2e810ac72cd80adb5eaa68d2720e804314d122fa9e84ac25d",
            "proxy": "158.120.100.23:334:user:pass",
		    "userAgent": "please use our supported userAgent. It needs to match what you're using"
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
 
    while True:
        time.sleep(1)  # delay
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", {}).get("cookie")
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
cookie = capsolver()
print(cookie)