DataDome

DataDome 验证码识别工具:绕过 DataDome,获取 datadome Cookie

爬虫在持有有效的 datadome Cookie 之前,会被 DataDome 用滑块或设备检测拦下。CapSkip 在您自己的 Windows 电脑或 VPS 上通过挑战,并返回 Cookie、与之绑定的 User-Agent,以及在适用时所用的代理,全部包含在一个统一定价的月度套餐中。

Windows x64·本地运行,验证码不会离开你的电脑
  • 滑块和设备检测
  • 已返回 datadome Cookie
  • 统一月费套餐
每月可获取的 DataDome Cookie30,000
30.0k250.0k
其他服务按量计费,每 1,000 次约 $1.98$59.40
CapSkip Bronze,统一定价$35.00
$24.40留在你的口袋里按当前用量,每月如此

许多大型商城、电商平台和新闻网站都部署了 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 的三种方式

Python
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

  1. 在您的机器上安装 CapSkip

    将应用安装在要运行 DataDome 任务的桌面电脑、VPS 或服务器上;如果要同时运行大量任务,请为其分配充足的内存。 下载 CapSkip

  2. 选择套餐,或先试用

    套餐按机器数量计价,从不按 Cookie 计价。还没准备好付费?先开始免费试用,然后使用我们通过电子邮件发送的登录信息登录。 查看套餐

  3. 提交任务时附上代理

    提交 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,原样保留需改写为服务商自己的任务格式
扩大规模取决于您的硬件和粘性代理受服务商设定的队列和账户限制
您处理哪些网站只保留在您自己的机器上每个任务都会共享给外部服务商

价格

不再按次付费

选择你的授权

青铜授权

$35/ 月

订阅青铜授权

授权即时激活

按月计费,可随时在账户中取消。

功能相同,机器越多,吞吐量越大。

每台机器的识别速度都受限于它自己的 CPU 和内存。机器越多,同时运行的线程就越多:白银可同时识别两倍数量的验证码,黄金则是三倍。

  • 无限解决,无每日上限
  • 无限线程,速度随硬件提升
  • 90% 至 100% 的识别准确率
  • 可直接替代主流打码服务的 API
  • 几乎兼容任何工具,无需编写代码
  • REST API、SDK 和浏览器扩展
  • 出现新的验证码类型时免费训练
  • 在你自己的机器上运行,数据不外传

上面展示的每一种验证码类型,每个授权都支持。 查看支持范围

想先试用一下?

开始 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 Cookie,格式与您的客户端预期一致。旧版 res.php 调用会在 OK| 之后给出完整的 Cookie 字符串;使用 json=1 时,还会增加 userAgent 字段,如果代理来自应用的列表,再增加一个 proxy 字段。DataDomeSliderTask 会在 solution 中返回 Cookie,CapMonster CustomTask 则将其列在网站域名下。
DataDome 任务需要提供哪些内容?
关键有三项:captcha_url,即根据拦截页构建的挑战 iframe 地址;被拦截页面的 pageurl;以及后续请求将使用的代理。userAgent 为可选项。API 文档逐个字段说明了如何根据 dd 对象拼装 captcha_url。
大规模识别 DataDome 是否必须使用代理?
少量测试时,使用您自己的网络连接就够了。大规模使用时,是的:请为每个任务准备一个粘性住宅代理,并保持同一出口 IP 至少几分钟。每次连接都更换 IP 的轮换代理无法使用,因为 Cookie 只能从获取它的地址通过验证。您可以为每个任务单独传入代理,也可以将代理列表导入应用。
为什么网站会拒绝 CapSkip 返回的 Cookie?
几乎都是因为发送 Cookie 时使用的 IP 或 User-Agent 与识别时不同。请通过同一代理、使用返回结果中注明的 User-Agent 发送。如果拦截页仍然出现,说明网站选择再次发起挑战,请据此构建新的 captcha_url 并提交新任务。
我可以使用自己的 User-Agent 吗?
可以,但有限制。如果您自行传入,它必须是 CapSkip 能够用来获取有效 Cookie 的 User-Agent;其他 User-Agent 会立即被拒绝并返回 ERROR_WRONG_USERAGENT,而不是生成一个会被网站拒绝的 Cookie。如果不传入,CapSkip 会自动选择一个并在返回结果中注明,可直接复制使用。API 文档列出了具体接受哪些 User-Agent。
如果 DataDome 封禁了我的 IP 怎么办?
从被封禁的地址无法通过,因此 CapSkip 会立即以 ERROR_PROXY_BANNED 拒绝该任务,而不会在上面浪费时间。您也可以在提交前发现这种情况:拦截页上的 dd 对象中 t 的值为 bv,而不是 fe。请换一个代理并重新请求该页面。
DataDome 挑战多快能识别完成?
通常在 3 到 20 秒之间。设备检测耗时处于该范围的较短一端,滑块则处于较长一端。您的任务从不需要排在其他客户之后,因此速度取决于您的机器和代理,而同时运行的 DataDome 任务数量可以在应用中设置。
DataDome Cookie 越多,费用会越高吗?
不会。您的费用取决于运行 CapSkip 的机器数量,单台机器的 Bronze 套餐每月 $35 起,且从不统计识别次数。每个会话都发起挑战的网站与很少发起挑战的网站费用相同,封禁后或 Cookie 过期后的重试也包含在内。
我现有的 DataDome 代码能对接 CapSkip 吗?
通常无需修改。CapSkip 支持带 method=datadome 的 in.php、使用 DataDomeSliderTask 的 createTask(也支持 CapSolver 的 DatadomeSliderTask 写法),以及 class 为 DataDome 的 CapMonster CustomTask。在应用中选择对应服务后,您代码已发出的请求就会在您自己的机器上得到响应。

绕过 DataDome,无需按 Cookie 付费

只需安装一次 CapSkip 并登录,即可将 DataDome 拦截页交给您掌控的机器处理。滑块、设备检测和重复挑战全部包含在一个月度套餐中。