DataDome 验证码识别工具:绕过 DataDome,获取 datadome Cookie
爬虫在持有有效的 datadome Cookie 之前,会被 DataDome 用滑块或设备检测拦下。CapSkip 在您自己的 Windows 电脑或 VPS 上通过挑战,并返回 Cookie、与之绑定的 User-Agent,以及在适用时所用的代理,全部包含在一个统一定价的月度套餐中。
- 滑块和设备检测
- 已返回 datadome Cookie
- 统一月费套餐
许多大型商城、电商平台和新闻网站都部署了 DataDome,一旦它对某个请求起疑,就会把页面替换成拦截页,上面是一个滑块或一段简短的设备检测。CapSkip 是一款 DataDome 验证码识别工具,可为您的脚本通过该页面并交回 datadome Cookie,让您的 HTTP 客户端无需人工介入即可继续抓取网站。它运行在您自己掌控的 Windows 桌面电脑、VPS 或服务器上。
您需要提交拦截页中的挑战地址、您所请求页面的 URL,以及后续请求将使用的出口代理。返回结果包含 Cookie 及获取它时所用的 User-Agent;如果 CapSkip 使用的是其自带列表中的代理,还会附上该代理。三者务必一起使用,因为 DataDome 只接受来自获取该 Cookie 的 IP 和 User-Agent 的 Cookie。
按量计费的服务每 1,000 次 DataDome 识别收费 $1.45 到 $2.50 不等,而且每次出现新挑战都要重新计费。CapSkip 采用统一定价,每月 $35 起,按机器计价,而非按 Cookie 计价。面向旧版 in.php / res.php API、使用 DataDomeSliderTask 的 createTask,或 class 为 DataDome 的 CapMonster CustomTask 编写的代码,都可以原样把任务交给 CapSkip。
大量请求请自备粘性代理。 DataDome Cookie 只在获取它的 IP 上有效,因此一旦超出测试阶段,请为每个任务准备一个粘性住宅代理,并始终通过同一代理使用对应的 Cookie。 查看 DataDome API 参考文档
DataDome 验证码识别工具支持哪些内容
滑块和设备检测
被拦截的访客看到的要么是需要拖动的滑块,要么是会自动运行几秒钟的设备检测。两者使用同一种请求,而且如果设备检测之后又转为滑块,CapSkip 会继续跟进完成。
可直接发送的 Cookie
您收到的 datadome Cookie 与网站设置的完全一致,包括其域名、路径和有效期。将第一个分号之前的部分放入 Cookie 请求头,然后重新发送之前被拦截的请求。
返回结果包含 User-Agent 和代理
每个返回结果都会注明该 Cookie 所属的 User-Agent;如果代理来自应用自带的 DataDome 代理列表,也会注明该代理,因此您的客户端始终知道下一步应使用哪个身份。
大规模使用请配粘性代理
少量测试用单个地址即可。超出这个范围后,请为每个任务及其后续请求分配独立的粘性住宅代理,这样就不会有任何 IP 因积累过多拦截页而被封禁。
支持三种请求格式
in.php 上的 method=datadome、使用 DataDomeSliderTask 的 createTask,以及 class 为 DataDome 的 CapMonster CustomTask 均可使用,每种请求都会以该客户端已能读取的格式收到结果。
重复挑战同样包含在内
DataDome 可能会在当天晚些时候再次挑战同一会话。每个新 Cookie 都包含在月度套餐内,所以即使网站频繁发起挑战,您的费用也不会增加。
将 DataDome 任务发送到 CapSkip 的三种方式
import requests
from capskip import CapSkip
solver = CapSkip(host="127.0.0.1", port=8080)
PROXY = "login:[email protected]:8080" # one sticky residential proxy per task
# captcha_url is the challenge address built from the block page's dd object.
result = solver.datadome(
captcha_url=captcha_url,
pageurl="https://www.example.com/",
proxy={"type": "HTTP", "uri": PROXY},
)
# Same IP, same User-Agent: the cookie only works from the address that earned it.
# Sent without a proxy, CapSkip may use its own DataDome list and names it in result["proxy"].
page = requests.get(
"https://www.example.com/",
headers={"User-Agent": result["userAgent"], "Cookie": result["cookie"]},
proxies={"http": "http://" + PROXY, "https": "http://" + PROXY},
)使用 CapSkip Python SDK 只需一次调用:提交挑战地址以及爬虫所用的代理,然后通过同一代理、使用结果中的 User-Agent 将 Cookie 发回。
旧版 in.php 和 res.php
以 POST 方式提交 method=datadome 以及 captcha_url 和页面 URL,轮询 res.php,然后读取 OK| 之后的 Cookie。JSON 模式会将 User-Agent 和列表中的代理(如有)作为单独字段返回。
使用 DataDomeSliderTask 的 createTask
JSON 客户端提交 DataDomeSliderTask(或 CapSolver 使用的 DatadomeSliderTask 写法),并从 getTaskResult 返回的 solution 对象中获取 Cookie。
CapMonster CustomTask
为 CapMonster 开发的工具可以继续发送 class 为 DataDome 的 CustomTask。返回结果会将 datadome Cookie 列在网站域名下,正是该客户端查找它的位置。
三步获取您的第一个 datadome Cookie
-
在您的机器上安装 CapSkip
将应用安装在要运行 DataDome 任务的桌面电脑、VPS 或服务器上;如果要同时运行大量任务,请为其分配充足的内存。 下载 CapSkip
-
选择套餐,或先试用
套餐按机器数量计价,从不按 Cookie 计价。还没准备好付费?先开始免费试用,然后使用我们通过电子邮件发送的登录信息登录。 查看套餐
-
提交任务时附上代理
提交 captcha_url、页面 URL 和爬虫所用的粘性代理,然后通过该代理、使用相同的 User-Agent 发送返回的 Cookie。 打开 DataDome 文档
统一定价的 DataDome 识别与按 Cookie 付费对比
无论哪种方式,挑战本身都一样。区别在于识别在哪里运行、谁会知道您的目标网站,以及费用如何增长。
| 功能 | CapSkip | 按次服务 |
|---|---|---|
| 费用 | 月度统一定价,$35 起,从不统计 Cookie 数量 | 每 1,000 次 DataDome 识别约 $1.45 到 $2.50 |
| 挑战类型 | 滑块和设备检测使用同一种请求格式 | 因服务商而异 |
| 识别在哪里运行 | 您自己运行的 Windows 桌面电脑、VPS 或服务器 | 接收每一个挑战的远程服务器 |
| 网站再次发起挑战时 | 再获取一个 Cookie,无需额外费用 | 每个新 Cookie 都要另行计费 |
| 您现有的客户端 | in.php、createTask 或 CapMonster CustomTask,原样保留 | 需改写为服务商自己的任务格式 |
| 扩大规模 | 取决于您的硬件和粘性代理 | 受服务商设定的队列和账户限制 |
| 您处理哪些网站 | 只保留在您自己的机器上 | 每个任务都会共享给外部服务商 |
想先试用一下?
开始 3 天免费试用,在你自己的目标上识别 500 个任意类型的验证码。
相关验证码识别工具与指南
DataDome 如何拦截爬虫,以及如何通过 API 获取 Cookie
DataDome 是一种机器人防护服务,部署在网站前端,对每个到达的请求进行评分。它信任的请求会直接放行;它怀疑的请求则会收到 HTTP 状态码 403(有时是 401),以及一个代替正文内容的小型 HTML 页面。该页面定义了一个名为 dd 的脚本对象,并通过 iframe 从 geo.captcha-delivery.com 加载挑战。只有通过挑战,才能获得放行后续请求的 datadome Cookie。
挑战有两种形式。滑块位于 iframe 地址中的 /captcha/ 路径下,要求访客沿着滑条拖动滑块。设备检测位于 /interstitial/ 下,会显示一个短暂的验证页面,无需任何操作,不过 DataDome 之后可能还会追加一个滑块。用于自动化的 DataDome 绕过方案必须能应对这两种情况,CapSkip 通过同一个 captcha_url 字段处理两者,该字段由 dd 对象中的各字段拼装而成。
该 Cookie 与获取它时的 IP 地址和 User-Agent 绑定。如果从其他地址或使用其他 User-Agent 重放,拦截页会立刻再次出现。因此,每个任务都要附上爬虫将使用的代理,复用返回结果中注明的 User-Agent,并在网站下发替换 Cookie 时始终保留最新的 datadome Cookie。当网站再次发起挑战时,根据新的拦截页构建新的 captcha_url 并提交新任务。
扩大规模之前,请先准备好代理。DataDome 对访问地址的重视程度与对访客本身一样高,因此同一 IP 持续出现拦截页最终会导致该 IP 在该网站被封禁,而被标记为封禁的拦截页从该地址根本无法通过。请使用能保持同一出口 IP 至少几分钟的住宅代理,每个任务一个,并通过识别时所用的代理使用对应的 Cookie。每次连接都更换 IP 的代理无法生成可用的 Cookie。
相关指南: DataDome API 参考文档 · 网络爬虫验证码识别 · AWS WAF 验证码识别工具
CapSkip 识别 DataDome 后会返回什么?
DataDome 任务需要提供哪些内容?
大规模识别 DataDome 是否必须使用代理?
为什么网站会拒绝 CapSkip 返回的 Cookie?
我可以使用自己的 User-Agent 吗?
如果 DataDome 封禁了我的 IP 怎么办?
DataDome 挑战多快能识别完成?
DataDome Cookie 越多,费用会越高吗?
我现有的 DataDome 代码能对接 CapSkip 吗?
绕过 DataDome,无需按 Cookie 付费
只需安装一次 CapSkip 并登录,即可将 DataDome 拦截页交给您掌控的机器处理。滑块、设备检测和重复挑战全部包含在一个月度套餐中。
