你是否正在寻找绕过Datadome反垃圾邮件系统的最佳方法,以便顺利完成在线自动化任务?立即进入并发现如何快速解决这个问题的最佳方法。
绕过 Datadome 选项 [概述]
1️⃣ 抓取 Google 缓存版本:如果网站的 Google 缓存可用且不经常更改,您可以从该网站的 Google 缓存中抓取数据。
2️⃣ 使用强化的无头浏览器进行抓取:使用强化的无头浏览器,例如 Puppeteer、Playwright 或带有隐形插件的 Selenium,以最大程度地减少指纹泄漏。
3️⃣ 反机器人求解器:虽然 DataDome 没有特定的求解器,但为 Cloudflare 设计的 FlareSolverr 等工具在某些情况下可能会起作用。
4️⃣ 带有 DataDome 旁路的住宅代理:例如Brightdata、Smartproxy和Soax提供的代理,有自己的私有旁路,DataDome 更难修补。
5️⃣ 对 DataDome 的保护进行逆向工程:这个复杂的选项涉及对 DataDome 的后端和客户端检测技术进行逆向工程。
人们普遍认为机器人被欺诈者用来进行网络攻击,尽管事实上它们也可能被用来做好事。因此,由于机器人攻击变得越来越复杂,许多公司和个人有充分的理由使用 Datadome 来保护其网站。
然而,有时使用此WAF服务可能会遇到困难。例如,从受 Datadome 保护的网站中抓取数据可能很困难。不过,好消息是 Datadome 可以被绕过。
这绝对是最棘手、最具挑战性的安全措施之一,但凭借正确的知识和技术,仍然有可能突破其防御。在本文中,我们将研究 Datadome 是什么、它的工作原理以及您需要使用的策略来绕过它。话不多说,让我们开始吧。
什么是DataDome?
Datadome 是一种 Web 应用程序防火墙 (WAF) 解决方案,旨在防范机器人和在线欺诈。它具有前所未有的准确性和零延迟,可以识别并减轻攻击。换句话说,它可以保护网站、API 和移动应用程序免受在线欺诈和机器人攻击。此外,它还可以防御第 7 层 DDoS、卡和支付欺诈、撞库和抓取。
DataDome 的人工智能机器人检测引擎每天处理来自全球 25 个站点的超过 3 万亿个数据信号。因此,最大的国际电子商务公司可以得到实时保护。除了机器人预防解决方案外,它还提供安全、易于使用且符合隐私法的集成验证码。DataDome 在 Inc. 5000 2022 年网络安全类别中排名第 21位。
Datadome 如何检测机器人?
为了检测机器人,Datadome 使用多种服务器端和客户端技术来确定信任评分。根据此信任评分,您被阻止或允许浏览该网站。但是,如果我们了解此过程的每个阶段,您确实有合理的可能性绕过 Datadome 的机器人防御。让我们更详细地研究每个阶段。
服务器端技术
TLS 指纹识别
Web 服务器用来识别 Web 客户端(包括浏览器、脚本和 CLI 工具)的最常见的服务器端指纹识别方法是 TLS 指纹识别。TLS 是 SSL 的演变,SSL 是负责管理 Web 客户端和服务器之间安全连接的协议。TLS 实际上是 HTTP 连接的第一阶段。
更准确地说,它是一种使用多种加密方法来加密客户端和服务器之间基于 Web 的交互的协议。在使用TLS进行通信之前,客户端和服务器必须首先完成TLS握手。
因此,Datadome 使用此 TLS 指纹来识别和限制机器人活动。它可以在决定批准还是拒绝请求之前确定哪个 Web 客户端正在尝试开始对话。
HTTP 指纹识别
接下来是 HTTP 指纹识别。本质上,HTTP 指纹识别需要检查 HTTP 协议在设备上的实现方式。HTTP 协议的复杂性使得 Datadome 更容易区分真实用户和机器人之间的连接。大多数网站使用 HTTP2 或 HTTP3。
尽管许多当代库(包括 Python 的 httpx 和 cURL)都支持 HTTP2,但它并不是默认设置。因此,通过 HTTP2 指纹识别机器人的能力成为可能。通过在同一 TCP 连接上启用并行请求和响应并实现标头字段压缩,其主要目标是增强网站和 Web 应用程序的性能。
本质上,HTTP 指纹识别的最基本方法需要向用户发送 HTTP 请求并检查 HTTP 响应标头。因此,Datadome 的反机器人保护可以准确确定连接的信任评分。
TCP/IP 指纹识别
TCP/IP 指纹识别是 Datadome 识别机器人的另一种方法。TCP/IP 指纹识别基本上是一种针对 TCP/IP 协议栈实现功能的远程检测技术。因此,作为 TCP 三向握手的一部分,TCP SYN 数据包用于启动 TCP/IP 连接。然后,Datadome 可以使用这些参数的组合来推断出远程计算机的操作系统。
换句话说,Datadome 可以使用此方法来确定客户端是通过 Linux、Mac 还是 Windows 工作站进行连接。这将有助于定义连接的信任评分,并判断它是机器人还是真人。此外,IP地址分析也发挥着很大的作用。
由于Datadome可以访问许多不同的IP数据库,并且可以查找连接客户端的IP地址,因此该方法可用于识别客户端的ISP、位置和相关其他信息。Datadome 使用三种不同类型的 IP 地址。这些包括:
剩余 IP 地址(即互联网服务提供商分配给普通人的家庭地址)至关重要,因为实际人类大多使用住宅 IP 地址,而获取这些地址的成本相当昂贵。因此,它们提供了更积极的信任评分。
数据中心 IP 地址由不同的数据中心分配,例如 CyrusOne、AWS、IBM Cloud 和 Google Cloud,仅举几例。与住宅 IP 地址不同,数据中心 IP 的信任评分呈显着负值。这意味着它们很可能被机器人使用。
移动 IP 地址排在最后。移动客户和电话塔决定谁能获得这些。移动 IP 地址提供了高度的信任,因为许多用户都是真实的人,就像住宅 IP 地址一样。此外,移动IP的目标是最小化移动主机移动时位置变化的影响,而无需修改底层TCP或IP以维持移动主机和静态主机之间的TCP连接。
这些使得 Datadome 能够对连接的客户端是人类还是机器人做出明智的猜测。
客户端技术
浏览器指纹识别
浏览器指纹识别是一种相当复杂的客户端技术,Datadome 使用它来确定请求的信任评分。它是一种跟踪和识别用户的技术,受 Datadome 保护的网站使用该技术将特定的浏览会话链接到用户。
换句话说,它收集足够的数据点以允许 Datadome 计算信任评分。因此,浏览器的 Javascript 指纹识别是收集此信息的关键方法。Datadome 使用客户端的 Javascript 引擎对客户端计算机进行指纹识别,以收集有关硬件、操作系统、Javascript 运行时和 Web 浏览器功能的信息。
但是,如果您对数据感兴趣,可以在开发者控制台中运行以下 JavaScript:
console.log("OS: " + navigator.platform); console.log("Available RAM in GB: " + navigator.deviceMemory); document.body.innerHTML += '<canvas id="glcanvas" width="0" height="0"></canvas>'; var canvas = document.getElementById("glcanvas"); var gl = canvas.getContext("experimental-webgl"); var dbgRender = gl.getExtension("WEBGL_debug_renderer_info"); console.log("GL renderer: " + gl.getParameter(gl.RENDERER)); console.log("GL vendor: " + gl.getParameter(gl.VENDOR)); console.log("Unmasked renderer: " + gl.getParameter(dbgRender.UNMASKED_RENDERER_WEBGL)); console.log("Unmasked vendor: " + gl.getParameter(dbgRender.UNMASKED_VENDOR_WEBGL));
操作系统指纹识别
Datadome 使用用户的操作系统生成某种保护,就像浏览器指纹识别一样。简单网络管理协议 (SNMP)、GPU 和域名都可以通过操作系统指纹来识别,该指纹提供了恶意个人可以用来针对特定设备的信息。
Datadome 意识到所有这些并利用它们来解决弱点。但是,如果操作系统指纹信息引起您的兴趣,您可以通过在开发人员控制台中运行以下 JavaScript 来访问它:
console.log("OS: " + navigator.platform); console.log("Available RAM in GB: " + navigator.deviceMemory); document.body.innerHTML += '<canvas id="glcanvas" width="0" height="0"></canvas>'; var canvas = document.getElementById("glcanvas"); var gl = canvas.getContext("experimental-webgl"); var dbgRender = gl.getExtension("WEBGL_debug_renderer_info"); console.log("GL renderer: " + gl.getParameter(gl.RENDERER)); console.log("GL vendor: " + gl.getParameter(gl.VENDOR)); console.log("Unmasked renderer: " + gl.getParameter(dbgRender.UNMASKED_RENDERER_WEBGL)); console.log("Unmasked vendor: " + gl.getParameter(dbgRender.UNMASKED_VENDOR_WEBGL));
画布指纹识别
HTML5 中的 canvas API 使得绘制文本和图片成为可能。为了呈现网站内容,浏览器可以利用这些功能。在各种 Web 浏览器和设备上,此画布元素的呈现方式有所不同。因此,Datadome 使用 Canvas 指纹识别来利用这些变化,为每个用户创建特殊的数字指纹,从而确定表明用户是否为机器人的信任评分。
为了渲染图像并生成画布指纹,Datadome 利用 WebGL 等画布指纹识别框架。值得庆幸的是,Datadome 保留了大量可靠的画布指纹和用户代理组合的数据集。因此,当请求来自画布指纹不匹配的用户时,会发生即时阻止。所有这些活动都保留在后台,不会影响用户的体验。
行为数据
尽管上述技术非常复杂和安全,Datadome 仍然可以利用用户的行为数据来防范恶意机器人。为了跟踪人员,Datadome 向网站添加了事件侦听器。
因此,Datadome 利用人工智能来检查用户连接模式。因此,用户与网站或应用程序的交互会生成此类数据。它们可能来自打字速度、鼠标移动、触摸屏幕或其他手势。
因此,对于 DataDome 来说,如果机器人在不使用鼠标手势或其他类似人类的操作的情况下与网站交互,则请求显然来自自动浏览器而不是真正的用户。在这种情况下,Datadome计算出的信任分数将不是一个固定值,而是会根据用户的行为不断调整。
这些如何与 Datadome 的反机器人保护联系起来?
这些指纹识别方法在 Datadome 保护网站、API 或移动应用程序方面发挥着重要作用。Datadome 完成此操作不会对您的用户产生影响。此外,DataDome 的反机器人保护系统使用各种指纹信号将合法用户与恶意机器人分开。
因此,该机器人防护程序每天处理来自服务器端和客户端信号的多达一万亿条数据。为了保持领先于最新的机器人趋势,他们还经常更新指纹信号。
如何绕过 DataDome
从上面的会话中,我们可以看到 Datadome 用于区分机器人和真实人类的不同复杂流程。幸运的是,要绕过 Datadome,我们需要结合这些服务器端和客户端指纹识别技术的知识。我们在本次会议中讨论的绕过措施本质上可以让您潜入 Datadome 机器人检测和保护技术的雷达下,特别是对于那些希望完成网络抓取等任务的人来说。
使用高质量代理
要绕过 Datadome 的机器人检测和保护,需要代理。它们有助于隐藏您的 IP 地址。使用它很重要,因为它可以为您的请求提供更高的信任评分,因为 Datadome 可以识别网站访问者的 IP 地址。因此,尽管住宅和移动代理最适合避免 Datadome,但代理类型有多种。
这些代理是最受欢迎的,因为它们的大多数用户都是真实的人,这使得他们更难识别。有多个代理提供商,您可以从中获取这些服务以使用这些代理。Bright Data和Smartproxy是我们推荐的两个提供商。它们都拥有适量的代理池,您需要保持不被发现。
关于代理,另一个考虑因素是您选择的代理是轮换还是静态。与静态代理不同,当您发送太多请求时,轮换代理不会泄露您的身份。因此,旋转是绕过 Datadome 的最有效技术。
使用抓取 API
特别是对于在线抓取任务,使用抓取 API 可以帮助您在尝试从 Datadome 保护的网站抓取数据时绕过障碍。尽管可以避免 Datadome,但遵循绕过策略可能非常耗时。
因此,有效地使用 API 抓取非常重要。它可以避免验证码、使用旋转代理、使用无头浏览器等方法来绕过 DataDome。您可以使用网络抓取 API 将所有网络抓取复杂性并绕过逻辑委托给 API。
例如,要抓取受 Datadome 保护的网站,您只需打开反抓取保护绕过功能即可。以下是知名抓取 API 提供商Scrapfly提供的示例:
from scrapfly import ScrapflyClient, ScrapeConfig scrapfly = ScrapflyClient(key="YOUR API KEY") result = scrapfly.scrape(ScrapeConfig( url="the website you want to escrape", asp=True, # we can also enable headless browsers to render web apps and javascript powered pages render_js=True, # and set proxies by country like United States country="US", # and proxy type like residential: proxy_pool=ScrapeConfig.PUBLIC_RESIDENTIAL_POOL, ))print(result.scrape_result)
使用自动化浏览器(Selenium 和 Puppeteer)
使用自动浏览器是绕过 Datadome 的另一种方法。它们也被称为增强型无头浏览器。Selenium 和 Puppeteer 是两种著名的自动化浏览器,它们在开发时就考虑到了自动化。
不言而喻,经过增强看起来像真正用户浏览器的无头浏览器可以通过逃避 Datadome 检测和保护来做得更好,因为普通无头浏览器会在 JS 指纹中暴露其身份,而 DataDome 可以轻松检测到。因此,使用这些浏览器绕过 Datadome 需要 Puppeteer 的隐形插件或 Selenium 的未检测到的 chromedriver。
以下是您如何使用 Selenium 的未检测到的 chromedriver来抓取受 DataDome 保护的网站,再次假设您的目标是抓取网页。
首先,只需使用 pip 安装未检测到的 chromedriver 包:
pip 安装未检测到的 chromedriver
安装 unDetected-chromedriver 后,您可以配置您的 scraper 或机器人,默认使用它代替常规 chromedriver。
import undetected_chromedriver as uc driver = uc.Chrome() driver.get('https://datadome.co/')
在下面的示例中,您需要从 seleniumwire 而不是直接从 unDetected-chromedriver 包加载 unDetected-chromedriver,并将代理设置放入 chromedriver 的 seleniumwire-options 属性中,以启用经过身份验证的代理。
import seleniumwire.undetected_chromedriver as uc ## Chrome Options chrome_options = uc.ChromeOptions() ## Proxy Options proxy_options = { 'proxy': { 'http': 'http://user:pass@ip:port', 'https': 'https://user:pass@ip:port', 'no_proxy': 'localhost,127.0.0.1' } } ## Create Chrome Driver driver = uc.Chrome( options=chrome_options, seleniumwire_options=proxy_options ) driver.get('https://datadome.co/')
基本的 Selenium chromedriver 公开了大量数据,像 Datadome 这样的反机器人程序可以使用这些数据来检测用户的浏览器是否是自动化的。Selenium unDetected-chromedriver 通过改变反机器人技术可用于检测 Selenium 的几乎所有技术来增强常规 Selenium chromedriver。这使得 Datadome 定位和阻止您变得更加困难。
这些浏览器及其扩展可能有所不同,但其基本原理是相同的。浏览器指纹中的不一致问题由扩展程序处理,这些扩展程序还会覆盖浏览器 JavaScript 变量并消除自动浏览器特有的全局变量。
此外,为了绕过 Datadome(它具有比其他一些反机器人解决方案更先进的 IP 地址指纹识别方法),必须将强化的浏览器与住宅或移动代理结合使用。正如前面所解释的,在这种情况下,住宅或移动代理是您的最佳选择。然而,它们可能很昂贵。
使用验证码解析服务
验证码解析服务对于各种目的都非常有帮助,尤其是对于绕过 Datadome 等反机器人检测工具。Datadome 还使用 CAPTCHA 作为证明用户不是机器人的方法之一。但是,使用验证码求解器,您可以成功解决 Datadome 的验证码。这些验证码解决方案要么来自自动求解器,要么来自解决这些问题并为您提供答案的人类。
虽然后者速度缓慢且昂贵,但自动化验证码解算器速度快、可扩展,并且能够支持不同的渲染而不影响速度。这是因为它们基于光学字符识别 (OCR) 等机器学习技术。
有多种验证码解决服务可以帮助解决 Datadome 验证码,例如2Captcha、CapSolver、BypassCaptcha、AnyCaptcha等。其中之一CapSolver可用于通过以下步骤解决 Datadome 验证码。
首先,为了完成该过程,您必须首先使用createTask方法创建任务,然后使用getTaskResult方法获取结果。请注意,此类任务涉及使用您自己的代理。另外,在继续之前检查 captchaUrl 的t参数是否等于fe 。也就是说,如果t=bv,则意味着您的 IP 地址已被完全禁止,您必须更新它。
因此,下面是使用 CapSolver 解决的请求示例:
POST https://api.capsolver.com/createTask Host: api.capsolver.com Content-Type: application/json { "clientKey": "YOUR_API_KEY", "task": { "type": "DatadomeSliderTask", "websiteURL": "https://bck.websiteurl.com/registry", "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", //Required "proxy": "socks5:158.120.100.23:334:user:pass", //Required "userAgent": "MODERN_USER_AGENT_HERE" } } The response to look something like this: { "errorId": 0, "status": "idle", "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" } Use the getTaskResult function to retrieve the recognition results. You will receive the results between one and twenty seconds, depending on the demand on the system. POST https://api.capsolver.com/getTaskResult Host: api.capsolver.com Content-Type: application/json { "clientKey": "YOUR_API_KEY", "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" } The response should look like this { "errorId": 0, "errorCode": null, "errorDescription": null, "solution": { "userAgent": "", "cookie": "datadome=yzj_BK...S0; Max-Age=31536000; Domain=.hermes.com; Path=/; Secure; SameSite=Lax" }, "status": "ready" }
对 DataDome 的反机器人保护进行逆向工程
逆向工程是绕过 Datadome 反机器人保护和检测的最终方法。这是在不使用完全强化的无头浏览器的情况下绕过 Datadome 的最棘手的方法之一。简而言之,您必须首先通过 Datadome 的验证码,正如我们之前所解释的。
然后,您需要对 Datadome 网络请求和 JavaScript 文件进行逆向工程。网络请求始终是查看 JavaScript 文件如何下载以及对 DataDome 服务器进行的其他查询的好地方。您需要打开开发人员工具并加载浏览器,以便对其进行逆向工程以绕过 DataDome。
此外,由于客户端安全措施取决于运行脚本的用户设备,因此必须与受保护的网站或应用程序一起提供它们。这些脚本使用混淆来保护它们并包含专有代码。
由于这些预防措施,逆向工程可能会变得更加困难和耗时,尽管它仍然是可以实现的。您可以使用在线 Javascript 反混淆器(例如DeObfuscate.io)来解决此问题。
但是,您应该意识到,某些混淆方法很难撤消,除了自动化工具之外,还需要您使用手动方法。
常见问题解答
问:绕过 Datadome 是否违法?
由于 Datadome 是一个机器人防护工具,因此我们可以说,在某些情况下绕过它可能被视为非法。比如说,如果你的绕过目的是恶意的,那肯定是非法的。无论哪种情况,我们都提醒您在尝试绕过 Datadome 时要小心谨慎,因为暴露您的信息可能会造成严重的后果。
问:绕过 Datadome 是一件容易的事吗?
相反,绕过 Datadome 需要仔细考虑,因为有几个因素需要考虑。首先,您必须了解 Datadome 的运行方式,以便正确导航其检测方法。简而言之,绕过 Datadome 需要付出大量的努力和精力。
问:绕过 Datadome 最简单的技术是什么?
实际上,没有比 Datadome 绕过更简单的方法了。这些方法中的每一种都有其自身的挑战和优点。最重要的是,您需要结合两种或多种这些技术才能有效地摆脱 Datadome 反机器人保护系统的网络。然而,拥有一个好的代理将是一个很好的起点。
结 论
到现在为止,你一定已经意识到要突破 Datadome 的反机器人保护是多么困难。这主要是由于它使用不同的技术来区分机器人和访问网站的真人。然而,这是可以实现的。
你应该记住,了解 Datadome 的工作原理是了解如何浏览受其保护的网站的关键。有了这些知识,您就可以绕过这些技术。