in

如何绕过Datadome的反爬机制

如何绕过Datadome的反爬机制

Datadome 是一种反机器人和反抓取服务,Leboncoin、Vinted、Deezer 等网站使用它来阻止非人类访问者。

在本文中,我们将了解如何绕过 Datadome 防抓取保护。我们将首先快速了解一下 Datadome 是什么、如何识别它以及它如何识别网络抓取工具。然后,我们将了解绕过 Datadome 机器人保护的现有技术和工具。让我们深入了解吧!

什么是Datadome?

Datadome 是一项付费WAF服务,可保护网站免受机器人攻击。它具有阻止恶意机器人和脚本的合法用途,但网站也使用它来阻止网络抓取工具访问公共数据。

它在 Leboncoin、Vinted、Deezer、Malt 等欧洲网站中特别受欢迎。

Datadome 块页面示例

大多数 Datadome 机器人阻止都会生成 HTTP 状态代码 400-500(通常为 403)。错误消息可以以多种不同的形式出现,但通常是请求启用 JavaScript 或解决验证码。

Leboncoin 上 Datadome 区块页面的屏幕截图
Leboncoin 网站上的 Datadome 区块页面

这些错误大多是在第一次请求网站时遇到的。不过,由于 Datadome 使用人工智能行为分析,它也可以在几次成功的请求后阻止请求。

Datadome 如何检测网络抓取工具?

为了检测网络爬虫,Datadome 使用多种不同的技术来估计连接用户不是机器人的可能性。

Datadome 正在检查所有连接指标,例如加密类型 (TLS)、HTTP 协议使用和 JavaScript 引擎,以确定信任评分。

根据最终的信任评分,Datadome 要么允许用户进入、阻止他们,要么请求解决验证码挑战。

这个复杂的过程是实时完成的,使得网络抓取变得困难,因为许多因素都会影响信任评分。然而,通过了解此过程的每个步骤,我们很有可能绕过 Datadome 机器人保护。让我们详细看看每个步骤。

TLS 指纹识别

TLS(或 SSL)是 HTTP 连接的第一步。当使用加密连接(例如https代替http)时,服务器和客户端必须协商加密方法。由于有许多不同的密码和加密方法可用,因此协商本身可以泄露有关客户端的大量信息。

这通常称为JA3 指纹识别。不同的操作系统、Web 浏览器或编程库对 TLS 加密的访问方式不同,这会导致不同的 JA3 指纹。

如果抓取工具使用的库具有与普通 Web 浏览器不同的 TLS 功能,则可以使用此方法进行识别。

因此,请使用能够抵抗 JA3 指纹识别的 Web 抓取库和工具

有关更多信息,请参阅我们对 TLS 指纹识别的完整介绍,其中更详细地介绍了 TLS 指纹识别。

IP 地址指纹识别

接下来是IP地址分析。Datadome 可以访问许多不同的 IP 数据库,并且可以查找连接客户端的 IP 地址。这可用于识别客户端的位置、ISP、声誉和其他信息。

这里使用的最重要的指标是 IP 地址类型,因为有 3 种不同类型的 IP 地址:

  • 住宅地址是互联网提供给普通人的家庭地址。因此,住宅 IP 地址提供了积极的信任评分,因为这些地址主要由人类使用,并且获取成本昂贵。
  • 移动地址由移动电话塔和移动用户分配。因此,移动 IP 还提供了积极的信任评分,因为这些 IP 主要由人类使用。此外,由于移动塔可能共享和回收 IP 地址,因此依赖 IP 地址进行识别变得更加困难。
  • 数据中心地址被分配给各种数据中心和服务器平台,例如亚马逊的AWS、谷歌云等。因此,数据中心IP提供了显着的负信任评分,因为它们很可能被机器人使用。

使用 IP 分析,Datadome 可以粗略估计连接客户端是人类还是机器人的可能性。例如,很少有人通过数据中心拥有的 IP 浏览网络。

因此,请使用高质量的住宅或移动 IP 地址

如需更深入的了解,请参阅我们对 IP 阻止的完整介绍

HTTP 详细信息

下一步是分析 HTTP 连接详细信息。HTTP 协议变得越来越复杂,这使得识别来自网络抓取工具的连接变得更加容易。

首先,大多数网络运行在 HTTP2 或 HTTP3 上,而大多数网络抓取库仍然使用 HTTP1.1。然而,尽管许多现代库(例如 Python 的httpx和 cURL)都支持 HTTP2,但它仍然不是默认设置。

HTTP2 也容易受到 HTTP2 指纹识别的影响,可用于识别网络抓取工具。

然后,请求标头和标头顺序在识别网络爬虫方面发挥着重要作用。由于大多数网络浏览器都有严格的标头值和顺序规则,任何不匹配(例如缺失OriginUser-Agent标头)都可能是一个很大的漏洞。

因此,请确保使用 HTTP2 并匹配标头值和真实 Web 浏览器的顺序

有关更多信息,请参阅我们对请求标头在阻止中的作用的完整介绍

JavaScript 指纹识别

最后,最复杂、最难解决的步骤是 JavaScript 指纹识别。Datadome 使用客户端的 javascript 引擎对客户端计算机进行指纹识别,以获取以下详细信息:

  • JavaScript 运行时信息
  • 硬件和操作系统详细信息
  • Web 浏览器信息和功能

这是可用于信任评分计算的大量数据。幸运的是,JavaScript 指纹识别需要时间来执行,并且容易出现误报。换句话说,它不如其他方法可靠,并且可以被绕过。

有两种方法可以绕过 JavaScript 指纹识别。

显而易见的方法是检查和逆向工程 Datadome 用于识别客户端指纹的所有 JavaScript 代码。这是一个非常耗时的过程,并且需要大量的 javascript 知识。另外,它需要大量维护,因为 Datadome 会不断更新其指纹识别代码。

更实用的方法是使用真正的网络浏览器进行网络抓取。SeleniumPuppeteerPlaywright等浏览器自动化库来完成,这些库可以启动真正的无头浏览器并导航它以进行网页抓取。

因此,使用 Selenium、Puppeteer 或 Playwright 等工具引入浏览器自动化是处理 javascript 指纹识别的最佳方法

许多高级抓取工具甚至可以结合浏览器和 HTTP 抓取功能以获得最佳性能。使用资源密集型浏览器建立信任评分并使用快速 HTTP 客户端(例如Python 中的 httpx)继续抓取

行为分析

即使通过了上述所有步骤,如果 Datadome 检测到可疑行为,它仍然可以阻止客户端。Datadome 正在使用人工智能来分析连接模式和用户配置文件。

这意味着信任分数不是静态数字,而是根据客户的行为不断调整。

因此,使用代理和不同的指纹配置通过多个不同的代理分发网络抓取流量非常重要。
例如,当使用浏览器自动化工具进行抓取时,使用不同的浏览器配置文件(例如屏幕尺寸、操作系统和渲染功能)非常重要。

如何绕过 Datadome 机器人防护?

我们可以看到 Datadome 使用多么复杂的流程来识别网络爬虫。幸运的是,这可以为我们带来优势,因为通过避免常见陷阱和网络抓取代理详细信息,可以绕过 Datadome 机器人保护。这是一个快速总结:

  • 使用高质量的住宅或移动IP地址
  • 使用 HTTP2 并匹配标头值和真实 Web 浏览器的顺序
  • 使用 Selenium、Puppeteer 或 Playwright 等工具引入浏览器自动化
  • 通过多个不同的代理分配网络抓取流量

请注意,随着 Datadome 的发展,它引入了更多技术来识别网络爬虫。因此,跟上最新的发展并使用最新的网络抓取工具非常重要。

例如,最近 Datadome 进行了更新,具有检测无头浏览器使用的功能。因此,为了在 2024年绕过 Datadome ,在网页抓取时需要使用Puppeteer Stealth等插件。

常问问题

为了结束本文,我们来看看有关网络抓取 Datadome 受保护页面的一些常见问题:

是的。只要抓取工具不会对网站造成损害,网络抓取公开数据在世界各地都是完全合法的。

是否可以使用缓存服务绕过 Datadome?

是的,Google Cache 或 Archive.org 等公共页面缓存服务可用于绕过 Datadome 受保护的页面,因为 Google 和 Archive 往往会被列入白名单。然而,并非所有页面都会被缓存,而且那些页面通常已经过时,因此不适合网络抓取。缓存的页面也可能会丢失动态加载的部分内容。

是否可以完全绕过Datadome并直接抓取网站?

这更像是一个互联网安全问题,因为只有利用漏洞才有可能实现。这在一些国家可能是非法的,而且通常很难做到。

还有哪些其他反机器人服务?

还有许多其他反机器人WAF服务,例如CloudflarePerimeterX(又名 Human)、DatadomeImperva(又名 Incapsula),尽管它们的功能与 Datadome 非常相似,因此本教程中的所有内容也可以应用于它们。

Written by 河小马

河小马是一位杰出的数字营销行业领袖,广告中国论坛的重要成员,其专业技能涵盖了PPC广告、域名停放、网站开发、联盟营销以及跨境电商咨询等多个领域。作为一位资深程序开发者,他不仅具备强大的技术能力,而且在出海网络营销方面拥有超过13年的经验。