Datadome:解决DataDome验证码
使用 createTask 方法创建任务,并使用 getTaskResult 方法获取结果。
ℹ️ 此任务类型需要您自己的代理。
ℹ️ 请确保userAgent匹配:您发送到我们API的userAgent需要与您使用的userAgent相同
滑动验证码(Slider Captcha)和设备检查(Interstitial(Device check))
我们支持的任务类型 types:
DatadomeSliderTask此任务类型需要您自己的代理。
创建任务
使用 createTask 方法创建任务。
您的IP已被直接封禁,并且您必须更换IP。
任务对象结构
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| type | String | 必需 | DataDomeSliderTask(滑动验证码和设备检查都使用此类型) |
| captchaUrl | String | 必需 | 如果URL包含 t=bv,则表示您的IP已被封禁,t 应该为 t=fe |
| userAgent | String | 必需 | 它需要与您用于请求网站的userAgent相同。目前我们只支持以下userAgent |
| proxy | String | 必需 | 了解 如何使用代理 |
请使用我们提供的固定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是您正在使用的:
"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 方法获取识别结果
根据系统负载情况,您将在 1s 到 20s 的时间内获得结果
示例请求
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": {
"cookie": "datadome=yzj_BK...S0; Max-Age=31536000; Domain=; Path=/; Secure; SameSite=Lax"
},
"status": "ready"
}故障排除错误
常见错误
- API返回的cookie无效 — 仍然收到403错误。
- API返回:“代理IP被目标服务封禁”。
- API返回:“解决验证码失败:1013”。
故障排除步骤
- 尝试更换代理 — 您的IP可能已被列入黑名单。
- 检查代理类型 — 某些网站会验证IP的一致性。如果您正在使用轮换代理,请尝试切换到固定代理。
- 检查userAgent — 发送到我们API的userAgent必须与用于目标网站的userAgent匹配。
- 检查Accept-Language — 某些网站要求它与网站的区域语言匹配。
- 调试您的代码/程序(例如,TLS、标头):
- 将DataDome cookie从您的浏览器手动复制到您的代码中并重新运行。
- 如果仍然失败,您的代码可能存在问题—检查TLS和标头。
- 检查标头 — 确保它们与真实浏览器发送的标头匹配,包括标头顺序。
- 检查TLS指纹 — 使用模拟真实TLS握手的库。
- 如果在所有检查后错误仍然存在,请向我们报告此问题。
使用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是您正在使用的:
"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" # 您的capsolver api密钥
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": "请使用我们支持的userAgent。它需要与您正在使用的匹配"
}
}
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} / 正在获取结果...")
while True:
time.sleep(1) # 延迟
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("解决失败!响应:", res.text)
return
cookie = capsolver()
print(cookie)