如何处理受到 DataDome 保护的公共网页数据
Advanced Bot Mitigation Engineer
TL;DR:
- DataDome保护的页面可能返回一个阻止,验证码,设备检查或普通内容。 在提取之前对表示进行分类。
- 403或空列表是症状。 记录最终URL,状态,内容类型,标题,挑战标记,区域和所需的公共字段。
- 浏览器和会话的一致性很重要。 JavaScript,cookies,网络来源,指纹和导航顺序都可能影响网站返回的内容。
- 使用有限的公共页面工作流程。 在需要时预热批准的来源,在同一云浏览器会话中加载目标,并仅接受符合内容合同的页面。
- 不要承诺一个通用的解决方案。 在验证码,登录,私人数据或项目未授权跨越的任何访问边界停止。
DataDome可以保护HTML页面,单页面应用程序以及这些页面调用的API。抓取程序可能会收到403,挑战响应或看似普通的页面,其预期列表从未加载。
安全工作流程是诊断性的。识别到达的表示,保持批准的浏览器会话一致,并在目标页面通过身份和字段检查后解析数据。
DataDome如何影响页面
DataDome将服务器端集成与浏览器端逻辑相结合。它的 JavaScript标签文档 表示该标签有助于收集信号,管理会话状态,并在Fetch或XMLHttpRequest调用被阻止时显示响应页面。
DataDome还记录了 设备检查,这是一种自动化验证过程,可以允许普通内容,阻止客户端或呈现额外的挑战。
这些机制解释了可能的响应类型。它们没有揭示为什么一个客户端会收到一个响应。地理位置,浏览器状态,流量历史,网站政策,应用程序状态和自定义规则都可能有所贡献。
症状,可能的原因和检查
| 症状 | 可能的解释 | 第一个检查 |
|---|---|---|
| 带HTML的HTTP 403 | 阻止或挑战表示 | 内容类型,标题,正文标记,最终URL |
| 带JSON的HTTP 403 | 受保护API返回了备用数据 | 响应模式和请求资源 |
| 出现验证码或滑块 | 提出了交互挑战 | 停止自动交互并检查范围 |
| 正常状态但空列表 | 客户端呈现失败或API调用被阻止 | 网络日志和所需列表标记 |
| 直接HTTP失败,浏览器正常 | JavaScript或浏览器状态影响内容 | 比较最终URL,cookies和呈现标记 |
| 第一页正常,下一页失败 | 会话或顺序影响表示 | 保持导航在一个上下文中 |
| 错误的市场数据出现 | 位置或语言不同 | 钉住所需的地理位置和区域 |
不要从单行中推断出特定原因。记录足够的证据以比较受控的变化。
保持一致的信号
网络来源
住宅路由可以将明显的位置与数据集对齐。目标仍然可能评估网络声誉和请求历史。代理改变的是网络来源,而不是浏览器执行。
HTTP和TLS
方法,头部,重定向和内容协商都会影响请求。 HTTP语义规范 定义了这些字段。 TLS 1.3规范 定义了安全传输握手。
从浏览器复制一个头部并不能重现周围的传输,运行时和会话。
JavaScript和指纹
浏览器执行网站的脚本并暴露运行时特征。DataDome的浏览器端集成可以观察到浏览器和设备的一致性。在有限的任务中保持指纹配置稳定。
Cookies和会话链
DataDome记录了其JavaScript标签和响应页面使用的cookie。不要手动分类或编辑该状态。保持浏览器上下文,以便网站可以通过批准的公共导航管理自己的cookies。
导航和流量
公共工作流程可以从来源开始,并继续到列表或详细页面。当需要时保持该顺序。保持流量成比例,并从低并发开始。
选择获取路径
| 路径 | 适用情况 | 接受条件 |
|---|---|---|
| 直接HTTP | 初始响应中存在所需公共字段 | 所需标记和页面身份匹配 |
| 本地浏览器 | 批准的交互需要JavaScript | 渲染字段和规范页面通过 |
| 无抓取的浏览器 | 团队需要管理的云渲染,地理位置和会话连续性 | 批准的主机,区域和字段通过 |
| 支持的公共API | 网站提供合适的合同 | 授权和响应架构匹配 |
开始时使用最简单的允许的路径。在页面证明JavaScript或连续性是必要的情况下,再切换到浏览器。
无抓取浏览器 提供云端JavaScript渲染、位置路由、指纹配置和持久的浏览器会话。抓取浏览器快速入门 记录会话生命周期和代理国家参数。
受限的 DataDome 网页抓取工作流程
一个可辩护的工作流程将获取与提取分开。
步骤 1 — 定义内容合同
记录批准的HTTPS目标、预期的最终主机、区域设置、规范模式和一个必需的公共数据选择器。决定数据集中需要哪些字段,哪些字段不在范围内。
步骤 2 — 在需要时预热公共来源
在批准的目标之前,在相同的浏览器上下文中加载该网站的公共来源,当这与普通导航路径匹配时。不要提交凭证或挑战响应。
步骤 3 — 加载目标并等待业务标记
以有限的超时导航,并等待稳定的字段,例如公共项目ID、标题或结果列表地标。存在语义角色或结构属性时,避免生成的类名。
步骤 4 — 检查页面身份
比较请求的URL、最终URL、主机名、标题、规范URL和区域设置。挑战页面可以返回正常的传输状态,因此所需的业务标记仍然是强制性的。
步骤 5 — 发现稳定的数据来源
检查渲染的DOM和授权的浏览器网络活动。优选稳定的公共JSON字段或语义DOM元素。不要将敏感的cookie或授权状态导出到另一个客户端。
步骤 6 — 提取和分类
将批准的字段映射到一个狭窄的架构。将每个页面标记为接受、内容缺失、意外页面、政策审查或网络错误,然后再存储。
在免费计划中获取您的API密钥: app.scrapeless.com
输出合同
一个被接受的记录应保留源和验证上下文。
| 字段 | 目的 |
|---|---|
requested_url |
批准的输入 |
final_url |
检测重定向和备用页面 |
canonical_url |
确认页面身份 |
locale |
确认市场代表 |
observed_at |
支持源漂移分析 |
validation_state |
将意外页面排除在数据之外 |
required_marker_found |
强制内容接受 |
data |
仅包含批准的公共字段 |
将挑战文档和空壳排除在业务数据集之外。当操作分析要求时,单独存储一个小的诊断指纹。
处理 DataDome 保护页面的故障排除
| 观察 | 检查 | 控制变更 | 通过条件 |
|---|---|---|---|
| 403 响应 | 正文、内容类型、最终URL | 仅在范围允许时切换到浏览器 | 普通公共页面通过 |
| CAPTCHA或滑块 | 挑战标记和政策 | 停止交互 | 批准的非挑战路径可用 |
| 正确页面,空列表 | 网络活动和选择器 | 修复一个渲染或选择器问题 | 所需的列表标记出现 |
| 首页正常,详情无法显示 | 会话cookie和序列 | 保持一个浏览器上下文 | 详情标记通过 |
| 错误的语言或货币 | 地理和语言 | 固定批准的市场 | 区域与合同匹配 |
| 结果在多次运行中有所不同 | 源漂移或随机化标记 | 使用语义定位器和稳定ID | 所需字段保持完整 |
| 直接JSON与页面不同 | 授权或UI过滤 | 将可见页面视为记录源 | 数据集与定义的表示匹配 |
一次更改一个变量。如果路径、国家、浏览器配置文件、选择器和目标都发生变更,测试无法隔离原因。
不丧失可观察性地扩展
在增加流量之前测试每个所需的公共模板。每个主机从三个或更少的工作者开始,并记录接受状态、持续时间、区域设置和源模板。
仅在网站发布的规则、项目的授权和小规模结果支持时扩展。使用每个模板的质量检查,以便新的挑战表示不能变成有效数据。
Scrapeless Scraping Browser最佳实践指南 涵盖了生产工作流中的一般会话和渲染选择。
结论:让内容验证成为关卡
DataDome网络抓取应以表示诊断开始,而不是选择器变化。保留已批准的浏览器会话,验证主机和所需的公共字段,仅解析接受的页面。
没有浏览器或代理可以保证访问每个页面。在有效的地方保留受支持的API或直接HTTP路由,在公共页面需要时使用云渲染,并在超出批准范围的挑战和访问控制处停止。
准备构建一个内容验证的浏览器管道吗?
加入Scrapeless社区讨论公共页面获取和验证:Discord · Telegram。
查看Scrapeless定价,然后在app.scrapeless.com注册以获取免费的Scraping Browser运行时。
常见问题
问:抓取DataDome保护的网站合法吗?
抓取公开或授权数据可能是合法的,但法律、合同和事实各异,因此请检查网站条款并为项目获取法律建议。
问:DataDome是否总是返回403?
DataDome集成可以返回不同的阻止、挑战、设备检查或普通内容表示,因此请一起检查状态、主体、最终URL和页面标记。
问:你需要一个住宅代理吗?
住宅代理可以提供一个批准的地理来源,但JavaScript、浏览器状态、Cookies、指纹一致性和授权仍然是单独的要求。
问:自动化工作流该如何处理CAPTCHA或滑块?
工作流应该将CAPTCHA或滑块分类为意外页面并停止,而不是自动化交互。
问:你应该如何处理DOM轮换?
重新检查批准的页面,优先考虑语义定位器或稳定的结构字段,并在接受输出之前要求业务标记。
问:抓取器应该使用多少并发?
每个主机从三个或更少的工作线程开始,只有在网站规则、项目授权和观察到的稳定性支持的情况下才增加。
问:这个工作流可以在没有AI代理的情况下运行吗?
是的,有限的会话设置、导航、验证、提取和分类是确定性的浏览器操作。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



