在测试环境中,爬虫运行得非常顺利。
但当你将其指向真实网站时,却会遇到:
403 禁止访问。
或者出现验证码。
又或者页面在 Chrome 中成功加载,但返回的内容与你的脚本完全不符。
你更换了 IP 地址。它能处理几个请求,随后又被封禁了。
这正是 DataDome 专为自动化流量设计的挑战。
需要理解的关键点在于,DataDome 并非简单地询问:
“这个 IP 是否可疑?”
现代机器人检测更接近于:
“这个 IP、网络连接、浏览器、设备、请求模式和会话组合起来是否合理?”
这种区别解释了为什么切换代理有时有效、为什么通常无效,以及为什么在 HTTP 层面上看起来完全正常的爬虫仍然会失败。
本指南将详细说明 DataDome 的工作原理、其可参考的信号类型、DataDome 封禁的具体表现、浏览器与脚本行为差异的原因,以及代理、浏览器自动化和爬虫 API 在其中扮演的角色。
什么是 DataDome?
DataDome 是一个用于防范机器人和网络欺诈的平台,网站、移动应用程序和 API 可通过该平台区分合法用户与自动化或恶意流量。
网站所有者使用 DataDome 等系统来减少以下活动:
- 未经授权的数据抓取;
- 凭证填充攻击;
- 账户劫持尝试;
- 虚假账户创建;
- 资源滥用;
- 支付欺诈;
- 自动化漏洞扫描;
- 攻击性机器人;
- 不受欢迎的人工智能代理。
对于收集公开网络数据的人来说,DataDome 似乎是方程式的另一端。
您的请求到达受保护的网站后,在应用程序决定返回何种内容之前,DataDome 会评估该请求,并判断其看起来是合法的、可疑的还是自动生成的。
结果可能为:
允许
请求正常继续。
设备验证
将执行额外的浏览器/设备验证。
验证码
客户端将收到一个交互式验证任务。
阻止
请求被拒绝。
这就是为什么针对完全相同的 URL 发出的两个请求,可能会得到截然不同的响应。
URL 并没有改变。
但 客户端却发生了变化。
DataDome 的工作原理
一个有用的简化模型如下:
客户端 → 受保护的网站/DataDome → 检测决策 → 网站
检测环节是大多数爬虫问题发生的地方。
DataDome 能够综合评估连接中多层面的信号,而非仅依赖单一简单指标。
这些层面包括:
| 层面 | 信号示例 |
|---|
| 网络 | IP 地址、ASN、网络声誉 |
| TLS | TLS 指纹和连接特征 |
| HTTP | 头部信息、头部一致性、请求属性 |
| 浏览器 | 浏览器指纹和环境信息 |
| 设备 | 操作系统、硬件及运行信号 |
| JavaScript | 客户端检查结果 |
| 会话 | Cookie 以及请求之间的连续性 |
| 行为 | 交互的时间和模式 |
| 信誉 | 与基础设施相关的过往活动 |
单行数据并不一定能证明某个请求是自动生成的。
其价值在于综合比较这些数据。
一个家庭IP地址若带有不合常理的浏览器指纹,仍可能显得可疑。
来自不一致的TLS客户端的、看似完美的User-Agent,仍可能显得可疑。
一个真实的浏览器若生成数百个高度重复的请求,仍可能显得可疑。
这就是现代反机器人系统与旧式IP封锁系统之间的根本区别。
DataDome 检测:主要层级
1. IP 信誉
IP 信誉依然至关重要。
一个 IP 地址可能存在历史记录。
例如,当大量滥用流量或明显由自动化生成的流量源自某项基础设施时,该基础设施的信誉就会变差。
DataDome 会综合考量流量是否来自:
- 已知的托管基础设施;
- 数据中心地址段;
- 共享代理;
- 住宅代理;
- 免费公共代理网络;
- 此前被标记为可疑的地址。
但 IP 信誉仅是一种信号。
正因如此,诸如:
“使用住宅代理,DataDome 就无法检测到你。”
这类说法具有误导性。
住宅 IP 地址确实能让网络请求看起来更像普通消费者的流量。
但它无法自动确保请求的其他部分也保持一致。
2. HTTP 头部
浏览器会发送一组可识别的头部信息。
自动化工具也会发送头部信息。
关键之处不仅在于请求中是否包含 User-Agent
,
而在于整个请求是否合乎逻辑。
例如,假设某个客户端声称自己是最新版本的 Chrome,却发送了一组通常与该浏览器不匹配的头部信息。
单独来看,每个值可能都显得合理。
但综合起来,可能就不合理了。
现代的机器人检测技术可以查找这些不一致之处。
仅仅修改:
User-Agent: Mozilla/5.0...
并不能将一个简单的 HTTP 库变成 Chrome。
3. TLS 指纹识别
在通过 HTTPS 交换 HTTP 数据之前,客户端会建立 TLS 连接。
不同的客户端会产生不同的 TLS 特征。
浏览器、Python HTTP 库、命令行客户端以及其他运行时环境建立加密连接的方式可能各不相同。
这些模式可以归纳为指纹。
DataDome 的文档中明确提到了 TLS 指纹识别(包括 JA3 和 JA4 信息),将其作为评估流量时可用的数据的一部分。
这给简化的爬虫配置带来了重大问题。
您的 HTTP 头可能声称:
Windows 版 Chrome
而底层的网络连接却与您声称使用的 Chrome 版本截然不同。
修改 HTTP 头并不会自动改变其底层的 TLS 堆栈。
这就是 HTTP 仅欺骗最终会遇到瓶颈的原因之一。
4. 浏览器指纹识别
一旦 JavaScript 能够执行,反机器人检测就能访问到一个更加丰富的环境。
真实的浏览器会暴露大量关于自身及其运行设备的信息。
潜在的信号包括与以下方面相关的特征:
- 浏览器版本;
- 操作系统;
- 硬件;
- CPU;
- 内存;
- 图形环境;
- 支持的浏览器 API;
- 渲染行为;
- 功能支持;
- 自动化痕迹。
自动化检测的难点不在于生成一个可信的数值。
而是要生成数百个相互一致的值。
假设一个自动化浏览器声称运行在某个操作系统上,但其环境的其他部分却表现得像另一个操作系统。
或者报告的硬件特征与声称的设备不符。
又或者自动化工具修改了常见的指纹属性,却未改变次要信号。
如果你只检查五个显而易见的属性,该浏览器看起来可能很可信。
但检测系统并不局限于这五个属性。
5. 检测无头浏览器和自动化浏览器
Playwright、Puppeteer 和 Selenium 极其有用。
但它们也并非隐形的。
启动 Chromium 可以为您的爬虫提供真正的浏览器引擎,从而解决许多基本 HTTP 客户端无法解决的问题:
- JavaScript 执行;
- 渲染;
- Cookie;
- 浏览器 API;
- 动态内容;
- 导航状态。
但“真正的浏览器引擎”并不意味着“与普通用户无法区分”。
自动化框架可能会引入可观察到的差异。
DataDome 自身的检测文档中明确列出了针对自动化浏览器和无头浏览器的检测类别,其中包括由 Puppeteer、Selenium 和 Playwright 驱动的浏览器。
这意味着以下这种简单架构:
Playwright + 代理
不应被视为通用的反机器人解决方案。
它可能在某个网站上运行完美,却在另一个网站上迅速失效。
6. JavaScript 与设备验证
DataDome 还可以向客户端请求额外的验证。
其中一种机制是 设备验证。
它不会立即显示可见的 CAPTCHA,而是通过在浏览器中运行 JavaScript 来评估环境。
据 DataDome 介绍,其设备验证功能会收集数百个信号,并执行多项检查,旨在检测自动化框架、伪造环境和程序化访问。
对于真实访客而言,这一过程可能不会造成任何明显的干扰。
对于爬虫而言,这会在以下两者之间产生重要区别:
HTTP 客户端
与:
能够执行预期客户端逻辑的浏览器
如果您的爬虫仅下载初始 HTML 并忽略浏览器中发生的一切,它可能永远无法重现受保护网站所预期的完整交互过程。
7. 行为检测
即使在技术上无可挑剔的浏览器,其行为仍可能显得异常。
考虑以下两个会话。
会话 A
一位用户:
- 打开一个产品页面;
- 花 14 秒阅读;
- 打开另一个页面;
- 滚动浏览;
- 返回;
- 进行搜索;
- 打开搜索结果。
会话 B
一个爬虫:
- 请求产品 1;
- 300 毫秒后请求产品 2;
- 300 毫秒后请求产品 3;
- 重复此操作数百次。
这两个会话都可能使用 Chrome 浏览器。
两者均可使用家庭IP地址。
它们的行为显然不同。
基于行为的检测使反机器人系统能够关注模式而非单个请求。
这在大规模场景下尤为重要。
一个成功执行过一次的爬虫,并不一定能持续发送100,000次请求。
8. 会话一致性
现代网站具有状态性。
Cookie、浏览器状态、IP 地址和请求历史记录都构成了会话的一部分。
当这些元素相互矛盾时,自动化行为就更容易被检测出来。
例如:
- IP 地址不断变化,而同一会话 Cookie 却保持不变;
- 会话中途浏览器标识发生变化;
- 导航路径突然跳转到无关的资源;
- 预期在先前步骤中生成的 Cookie 始终未出现;
- 每次请求的行为都像一个全新的访客。
这就是为什么盲目地为每次请求轮换 IP 地址,有时反而会使爬虫显得更不可信,而非更可信。
轮换是有用的。
连续性也是有用的。
正确的选择取决于工作负载。
DataDome 的拦截结果是什么样的?
DataDome 并不一定对每个可疑请求都以相同的方式进行响应。
您可能会遇到以下几种情况。
403 响应
最明显的信号是 HTTP 403 Forbidden 响应。
但请不要认为互联网上的每个 403 响应都来自 DataDome。
请务必检查实际的响应内容。
CAPTCHA 验证页面
响应中可能包含 DataDome 的验证挑战,而非目标页面。
设备验证
在继续访问之前,浏览器可能会执行一次不可见的验证。
这在调试过程中尤其容易造成混淆,因为该页面在您的常规浏览器中最终可能会正常显示,而您却从未见过验证码。
阻断页面
被认为可疑程度足够高的流量可能会收到直接的阻断响应。
Chrome 与您的爬虫行为差异
这是表明问题并非出在 URL 本身的最有力线索之一。
如果:
Chrome → 内容
但:
请求/cURL/自定义脚本 → 验证挑战
那么差异很可能出在客户端、网络身份、浏览器执行或会话方面。
为什么仅更改 IP 地址还不够
代理会更改请求中的一个重要部分:
流量看似来自的位置。
这一点很有价值。
但它并不会自动更改:
- 您的 HTTP 实现;
- TLS 指纹;
- 浏览器环境;
- JavaScript 执行;
- 浏览器指纹;
- Cookie;
- 请求时序;
- 导航行为;
- 会话逻辑。
请考虑整个技术栈:
**IP
代理主要改变第一层。
当请求失败的原因是 IP 声誉时,这可能就足够了。
但当多层之间存在不一致时,这就不够了。
数据中心代理与住宅代理:以 DataDome 为例
并不存在通用的“DataDome 代理”。
不同类型的代理可解决不同的网络问题。
数据中心代理
数据中心 IP 速度快、成本低,对于许多自动化工作负载非常有用。
但在安全防护严密的消费者网站上,其缺点在于网络来源更容易被归类为托管基础设施。
这并不意味着每个来自数据中心的请求都会被拦截。
这意味着该 IP 本身提供的证据可能不足以证明客户端像普通消费者。
住宅代理
住宅代理通过与消费者互联网连接相关的 IP 地址转发请求。
这可以为涉及面向公众的消费者网站的工作负载提供更合适的网络特征。
但住宅 IP 并不等同于真人。
DataDome 明确记录了能够识别通过住宅代理路由的自动化流量的模型。
因此,思考住宅代理的合理方式是:
更好的网络身份
而非:
自动绕过机器人防护
ISP 代理
ISP 代理在使用与消费者 ISP 关联的 IP 地址空间时,能够提供稳定的会话。
对于需要在较长会话期间保持一致身份的工作流而言,这种稳定性非常宝贵。
同样,客户端的其他部分依然至关重要。
为何频繁轮换代理可能适得其反
“更频繁地轮换”听起来像是显而易见的建议。
但这并不总是正确的。
设想一个持续五分钟的网站会话。
真实用户通常会在该会话的大部分时间内保持相同的网络身份。
如果您的自动化系统在保留相同 Cookie 和账户会话的同时,每三条请求就切换一次国家或网络,这种组合就会显得不自然。
对于某些工作负载,会话轮换是合适的。
对于其他工作负载,粘性会话则能产生更连贯的行为。
代理策略应与您所访问的应用程序的结构相匹配。
那么,关于验证码破解工具呢?
验证码(CAPTCHA)并不一定就是 DataDome 决策流程的起点。
它可能是在其他检测机制已将该会话标记为可疑之后采取的一项应对措施。
这种区别很重要。
破解验证码并不能自动修复以下问题:
- 可疑的浏览器指纹;
- 不一致的 TLS 堆栈;
- 不良的 IP 声誉;
- 不合理的会话行为。
DataDome 曾公开讨论过,即使验证码已被破解,系统仍能检测出验证码农场和自动化环境。
因此,若将破解验证码视为问题的全部,就会忽略其背后的更广泛系统。
为什么爬虫今天能运行,明天却会失败
这是另一个常见的困惑来源。
你的代码没有任何变化。
但成功率却突然下降。
这并不一定意味着目标网站进行了改版。
反机器人系统会不断更新检测逻辑。
其他变量也会发生变化:
- IP 声誉不断变化;
- 浏览器版本更新;
- 网站政策变更;
- 流量增加;
- 请求模式发生变化;
- 目标网站针对特定端点启用了更严格的防护措施。
因此,面对现代反机器人系统进行爬取,本质上是一个运营问题,而非一次性配置问题。
DataDome 与 Playwright
当网站需要真正的浏览器执行时,Playwright 便派上了用场。
它可以加载 JavaScript、与页面交互并维护浏览器状态。
这使得它在处理现代网站时,比简单的 HTTP 请求库具备更强大的功能。
但 Playwright 并不能自动使流量呈现出人类行为特征。
受保护的网站仍可能评估以下因素:
- 浏览器特性;
- 自动化痕迹;
- 网络身份;
- 会话;
- 请求频率;
- 行为模式。
这就是为什么一个基于 Playwright 的爬虫在开发环境中能正常运行,但在大规模部署时却可能变得不可靠。
浏览器自动化解决了浏览器执行的问题。
但它无法解决围绕浏览器的每一层反机器人防护。
DataDome 与 Puppeteer
同样的原理也适用于 Puppeteer。
使用 Chromium 能为爬虫提供比纯 HTTP 更丰富的客户端环境。
这对于以下场景非常有用:
- 客户端渲染的应用程序;
- 动态页面;
- JavaScript 导航;
- 初始 HTML 加载后加载的内容;
- 需要 Cookie 或浏览器状态的应用程序。
但浏览器、IP 地址和行为仍需形成一个连贯的会话。
Puppeteer 是一个浏览器自动化框架。
它并不是一个隐身层。
真正重要的爬虫技术栈
与其问:
“哪个代理能绕过 DataDome?”
不如从分层的角度来思考,这样会更有帮助。
| 问题 | 相关层 |
|---|
| IP 声誉不佳 | 代理/网络 |
| 地理位置错误 | 基于地理位置的代理 |
| 需要 JavaScript | 浏览器/渲染 |
| 动态内容 | 浏览器/渲染 |
| TLS 不一致 | HTTP/浏览器栈 |
| 浏览器指纹不匹配 | 浏览器环境 |
| 会话不稳定 | Cookie/会话管理 |
| 请求模式异常 | 爬虫架构 |
| CAPTCHA/验证 | 验证处理 |
| 持续的反机器人维护 | 托管式爬虫基础设施 |
这样能大大加快故障排查速度。
你不必再试图通过更换代理来解决每一个问题。
从受 DataDome 保护的网站收集数据的三种方法
对于您被允许访问目标网站的合法数据收集,大致有三种架构。
1. 自行构建爬虫
您完全掌控以下所有环节:
- HTTP 客户端;
- 浏览器;
- 代理;
- 会话;
- 重试逻辑;
- 解析;
- 渲染;
- 监控。
优点:
控制权最大。
缺点:
维护工作量最大。
当您的工作流程足够特殊,足以证明拥有整个技术栈是合理的,这种做法就很有意义。
2. 在自有浏览器或爬虫中使用代理
架构:
您的爬虫 → 代理网络 → 目标
这使您在将网络基础设施外包的同时,仍能掌控应用程序。
当您的主要问题涉及以下方面时,这种方式非常有用:
- IP 声誉;
- 地理定位;
- 并发性;
- 网络轮换;
- 稳定的会话。
例如,Geonode Residential Proxies 支持地理定位,以及轮换会话和粘性会话配置。
但您的应用程序仍需负责代理层以上的一切事务。
3. 使用爬取 API
架构:
您的应用程序 → 爬取 API → 目标
您无需自行维护浏览器、代理选择和数据提取基础设施,只需将 URL 发送给专为网络数据采集设计的服务即可。
当实际需求是:
“给我页面内容。”
而非:
“我想维护一个反机器人/浏览器基础设施团队。”
例如,Geonode 的 Scraper API 可以返回以 HTML 或 Markdown 格式渲染的页面内容,并提供 JavaScript 渲染、托管代理基础设施、地理定位、批处理和爬取功能。
关键区别在于复杂性的归属。
使用代理时:
你掌控整个技术栈。
使用抓取 API 时:
抓取平台管理更多技术栈部分。
这两种模式都没有绝对的优劣之分。
它们解决的是不同的工程问题。
代理 vs 浏览器 vs 数据抓取 API
| 解决方案 | 是否更换 IP | 是否执行 JS | 是否管理浏览器 | 是否处理数据提取 | 是否需要您维护 |
|---|
| 仅代理 | 是 | 否 | 否 | 否 | 高 |
| Playwright + 代理 | 是 | 是 | 由您管理 | 由您管理 | 高 |
| Puppeteer + 代理 | 是 | 是 | 由您管理 | 由您管理 | 高 |
| 爬取 API | 由服务商管理 | 是(若支持) | 由服务商管理 | 由服务商管理 | 较低 |
这就是为什么告诉别人“直接使用住宅代理”是一种不完整的建议。
有时这确实正是他们所需要的。
有时代理只是一个更大问题中的一个环节。
如何排查 DataDome 阻塞问题
当请求开始失败时,切勿同时更改十项设置。
诊断该层。
问题:在浏览器中正常,但在脚本中失败
可能需要排查的方面:
- JavaScript 执行;
- HTTP/TLS 客户端差异;
- 浏览器指纹;
- Cookie;
- 会话状态。
如果故障源于客户端,更改 IP 地址可能无效。
问题:起初正常,随后被拦截
请检查:
- 请求频率;
- 重复的导航模式;
- IP/会话轮换;
- 日益严重的 IP 声誉问题;
- 会话一致性。
第一个请求与第 1000 个请求并不等同。
问题:数据中心 IP 失败,家庭 IP 正常
网络信誉可能是决策中的重要因素。
但这仍不能证明其他信号被忽略了。
问题:家庭代理也失败
不要立即断定该家庭代理有问题。
调查:
- 浏览器/客户端指纹;
- TLS 特征;
- JavaScript 要求;
- Cookie;
- 请求模式;
- 会话设计。
问题:验证码反复出现
验证码循环可能表明,更广泛的会话仍存在可疑迹象。
将此挑战视为一种症状,而非必然的根本原因。
问题:不同国家/地区产生不同结果
请检查以下情况:
- 网站本身是否因地理位置不同而表现不同;
- 内容可用性是否发生变化;
- Cookie 状态是否保持一致;
- IP 地理位置是否与预期会话相符。
DataDome 能否检测到住宅代理?
可以。
这一点在 DataDome 的检测文档中已有明确说明。
但这并不意味着每个住宅代理请求都会被拦截。
如果真这样,使用共享家庭网络的合法用户将会引发巨大的误报问题。
更准确的说法是:
住宅 IP 仅是一个信号,并非人类访问者的证明。
现代检测技术会将其与其他证据结合起来。
DataDome 会检测 Playwright 吗?
DataDome 的文档中记载了覆盖通过自动化框架(包括 Playwright、Puppeteer 和 Selenium)控制的浏览器的检测模型。
这并不意味着每个 Playwright 会话都会被自动拦截。
这意味着以下假设:
“Playwright 使用真实浏览器,因此无法被检测到”
是错误的。
DataDome 是否使用浏览器指纹识别?
是的。
浏览器和设备指纹识别是 DataDome 检测架构的一部分。
这使得系统能够对比浏览器和执行环境暴露的信息,而不是仅依赖 User-Agent 头等简单的标识符。
DataDome 是否使用 TLS 指纹识别?
DataDome 的文档中提到了 TLS 指纹,并建议将其 JA3 和 JA4 指纹作为其防护 API 集成可用的信号。
这一点很重要,因为 TLS 连接是在普通 Web 应用程序逻辑看到请求之前建立的。
因此,爬虫即使完美篡改了 HTTP 头,仍会暴露不同的底层网络指纹。
DataDome 是否使用机器学习?
DataDome 将其威胁检测模型描述为基于机器学习且持续更新的。
机器学习并非魔法。
其实际价值在于能够综合分析多种信号和模式,而非依赖单一静态规则,例如:
100 次请求后封禁 IP。
DataDome 能否拦截 AI 代理?
可以。
机器人管理市场正日益从传统爬虫扩展至 AI 代理和大型语言模型(LLM)爬虫。
DataDome 现已明确支持识别和验证商业机器人及 AI 代理,而未经身份验证的自动化流量则将受到其威胁检测策略的约束。
随着越来越多的 AI 系统直接浏览网站并与之交互,这一点的重要性可能会日益凸显。
能否绕过 DataDome?
这通常是一个错误的工程问题。
不存在任何能够让现代检测系统“消失”的永久性标头、代理类型或浏览器标志。
一种在特定端点和特定流量规模下有效的配置,可能会:
- 在另一个端点上失效;
- 在更大规模下失效;
- 在其他浏览器版本上;
- 检测模型更新后。
对于合法的网络数据处理任务,更可持续的问题是:
我的数据抓取架构中哪一部分导致请求被归类为自动化操作?我是否希望自行维护这一层?
有时答案在于网络基础设施。
请使用合适的代理配置。
有时答案在于渲染。
请使用浏览器。
有时答案在于整个运维栈。
请使用托管式抓取 API。
而有时,正确的答案是改用官方 API 或其他授权的数据源。
DataDome 与 Cloudflare
DataDome 和 Cloudflare 在机器人管理市场的部分领域存在重叠,但不应将其视为相同的产品。
Cloudflare 提供了一个广泛的基础设施平台,其中包括 CDN、DNS、WAF、DDoS 缓解和机器人管理功能。
DataDome 则更专注于跨网站、移动应用和 API 的机器人及在线欺诈检测。
然而,从爬虫开发者的角度来看,其中的启示是相似的:
现代反机器人防护机制是多层级的。
有效的策略不能仅依赖于更改一个 HTTP 头。
DataDome 与 CAPTCHA
DataDome 并非 CAPTCHA 服务。
CAPTCHA 只是检测后可能采取的应对措施之一。
实际决定客户端是否可疑的系统位于其之前。
这一区别至关重要,因为开发者往往耗费巨大精力试图“破解 CAPTCHA”,却忽略了导致验证挑战出现的那一信号。
更关键的问题是:
为什么这个会话会被触发验证挑战?
何时应使用住宅代理
当网络层至关重要时,住宅代理便派上用场。
例如,以下涉及以下内容的合法工作负载:
- 特定地区的公开内容;
- 本地化搜索结果;
- 区域定价;
- 产品供应情况;
- 市场调研;
- 分布式网页抓取。
当您希望对自己的爬虫保持完全控制时,它们尤其有用。
Geonode 的住宅代理 提供具有地理定位功能和可配置会话行为的住宅 IP 路由服务。
但代理应当始终保持其本质:
网络基础设施。
它不是浏览器。
它不是 CAPTCHA 系统。
它不是爬取引擎。
它也不会自动修复损坏的指纹。
何时更适合使用托管 API(Scraper API)
当反机器人维护工作开始占据开发工作的主导地位时,托管 API(Scraper API)便显得颇具吸引力。
当您的团队在以下方面花费的时间超过实际使用数据的时间时,您至少应该考虑采用托管 API:
- 浏览器升级;
- 重试逻辑;
- 代理协调;
- 渲染;
- 数据提取;
- 会话处理;
- 请求失败处理;
借助 Geonode Scraper API,应用程序可以发送 URL 并接收提取后的 HTML 或 Markdown,而该服务会在请求背后管理渲染和代理基础设施。
其中的权衡很简单:
自行构建能获得更多控制权。
使用 API 则无需处理基础设施工作。
请根据产品的实际需求进行选择。
常见问题
什么是 DataDome?
DataDome 是一个反机器人和反网络欺诈平台,旨在识别网站、移动应用程序和 API 中的自动化及恶意流量。
DataDome 如何检测机器人?
它综合利用多种信号,包括 IP 信誉、HTTP 和浏览器指纹、TLS 特征、设备信息、行为模式以及机器学习检测模型。
为什么 DataDome 会拦截我的爬虫?
通常没有单一的普遍原因。 IP 地址、HTTP/TLS 客户端、浏览器环境、JavaScript 支持情况、会话一致性或请求行为都可能起到作用。
DataDome 是否使用 CAPTCHA?
是的,CAPTCHA 可以是应对可疑流量的一种措施。DataDome 还可以执行隐形的设备验证,或直接拦截请求。
什么是 DataDome 设备检查?
设备检查是一种额外的验证机制,它在客户端执行检查,且不一定需要用户进行可见的交互。该机制会评估设备和执行信号,并根据结果允许、挑战或阻止客户端。
修改 User-Agent 能否绕过 DataDome?
修改 User-Agent 仅会改变一个 HTTP 参数值。它不会自动改变 TLS 连接、浏览器环境、设备指纹、Cookie 或用户行为。
DataDome 能否检测到无头 Chrome?
DataDome 专门记录了针对无头浏览器和自动化浏览器的检测类别,包括通过 Puppeteer、Selenium 和 Playwright 实现的浏览器。
DataDome 能检测到 Playwright 吗?
它能够识别与浏览器自动化相关的特征,包括由 Playwright 驱动的环境。 使用 Playwright 并不意味着会话一定会被拦截,但也不应认为其本质上是不可见的。
DataDome 能否检测到 Puppeteer?
可以,DataDome 记录了涵盖基于 Puppeteer 的自动化以及 Puppeteer Extra Stealth 的检测模型。
DataDome 能否检测到住宅代理?
DataDome 拥有针对通过住宅代理路由的流量的检测模型。住宅 IP 虽然能改变网络身份,因此仍有其用处,但这并不意味着自动化流量就自动合法。
对于受 DataDome 保护的网站,住宅代理是否优于数据中心代理?
住宅代理可以提供更接近普通消费者流量的网络身份,这在面向消费者的网站上可能很有用。正确的选择仍取决于目标、工作负载和其他检测层。
抓取受 DataDome 保护的网站是否需要浏览器?
并非所有受保护的页面都需要浏览器。但是,依赖客户端渲染或设备验证的网站可能需要真正的 JavaScript 执行和浏览器状态,而基本的 HTTP 客户端无法提供这些。
为什么我会收到来自 DataDome 的 403 错误?
403 错误可能表明该请求被归类为可疑或自动化请求。在断定是反机器人系统导致的之前,请先确认响应确实来自 DataDome。
为什么该页面手动访问正常,但在 Python 中却无法访问?
普通浏览器和 Python HTTP 库所产生的网络、TLS、HTTP、JavaScript 及浏览器环境存在显著差异。反机器人系统可能会检测到其中的一些差异。
为什么我的爬虫运行几个请求后就会停止?
可能的原因包括行为检测、请求速率模式、IP 声誉变化或会话不一致。 反机器人系统会综合评估多个请求的活动情况,而非孤立地判断每个请求。
轮换代理能解决 DataDome 的问题吗?
仅靠轮换代理并不能解决。
轮换代理仅改变了网络身份,并不会自动改变浏览器指纹、TLS 客户端、JavaScript 环境或请求行为。
爬取 API 比代理更好吗?
它们解决的是不同的问题。
当您希望控制爬虫,且主要需要网络基础设施时,请使用代理。
当您希望浏览器、代理、渲染和数据提取等基础设施有更多部分由服务商代为管理时,请使用爬取 API。
核心要点
关于 DataDome,最关键的一点在于:并不存在单一的“机器人信号”。
现代反机器人检测技术会跨层进行分析。
一个请求不仅仅是一个 IP 地址。
它包括:
一个 IP 地址
建立 TLS 连接
发送 HTTP 头部
来自浏览器或应用程序
处于会话之中
带有浏览历史
以及特定的行为模式。
这些要素之间的一致性越强,客户端看起来就越连贯。
这就是为什么更换 IP 地址虽然能解决一个问题,却可能让另外五个问题依然存在。
这也是为什么 Playwright 虽然解决了 JavaScript 执行问题,却未能解决所有检测问题。
更是为什么托管式爬取 API 之所以存在。
如果你需要完全控制,就自己构建技术栈,并将代理用作网络基础设施。
如果你主要需要可靠的网页内容,且不想维护浏览器和代理协调,那就使用爬取 API。
关键在于弄清楚你实际上想要修复的是哪一层。