🥳加入Scrapeless 社区申请免费试用以访问我们强大的网页抓取工具包!
返回博客

Turnstile 和 Cloudflare Bot Challenge 如何保护网站

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

25-Sep-2024

随着互联网技术不断发展,网络资源的安全问题日益受到网站所有者和开发人员的关注。使用能够抵御自动化攻击和机器人的防护措施变得越来越重要。

Cloudflare 的两项创新技术 Turnstile 和 Bot Challenge 结合了可用性和可靠的安全保障。让我们深入了解它们的运作流程。

据开发人员称,开发这些技术的首要目标是在不影响真实用户的情况下减少恶意机器人攻击。

Cloudflare 如何识别机器人

该服务使用主动(客户端)和被动(服务器端)两种机器人检测技术。

被动方法

机器人网络识别

Cloudflare 会记录与恶意机器人网络相关的设备、IP 地址和行为。任何被认为与这些网络相关的设备都会立即被封锁,或者会遇到更多需要解决的客户端问题。

IP 信誉

用户的 IP 地址的信誉由多个因素决定,包括其位置、ISP 和信誉历史。例如,来自数据中心或信誉良好的 VPN 服务的 IP 地址的信誉将低于来自住宅的 IP 地址。由于来自实际客户端的流量永远不会来自其服务区域之外,因此网站也可能限制来自这些区域的访问。

HTTP 请求标头

Cloudflare 使用 HTTP 请求标头进行验证。如果您的解析器具有非浏览器用户代理,则可能会被误认为机器人。如果机器人提交的请求没有标头,或者根据您的用户代理,标头不匹配,则服务可能会阻止该机器人。

TLS 指纹

当您连接到服务器时,会生成一个 TLS 指纹。系统会检查椭圆曲线、扩展和密码套件,以确定指纹哈希值。

如果来自客户端请求的用户代理标头与记录的指纹哈希值关联的用户代理匹配,则安全系统会得出结论,该请求来自正常的浏览器。如果这些数据不匹配,则该请求将被拒绝。

HTTP/2 指纹

与 TLS 指纹一样,每个客户端请求都将具有静态 HTTP/2 指纹。Cloudflare 通过将请求中的指纹和用户代理对与数据库存储的白名单中的对进行比较,始终验证请求的真实性。

TLS 指纹和 HTTP/2 几乎相同。在 Cloudflare 使用的所有被动机器人检测技术中,这两个技术最难根据请求进行监控。尽管如此,它们是最重要的。

主动方法

监听事件

Cloudflare 使用 JavaScript 将 addEventListener 函数添加到网页,使网站可以监控用户输入,如鼠标点击、击键和动作。如果未使用这些输入,则很有可能是机器人。

API 请求

特定浏览器的专用 API。在某些浏览器中,这些要求存在,但在其他浏览器中可能不存在。

例如,属性 window.chrome 是 Chrome 网页浏览器的独有属性。如果您发送的数据表明您使用的是 Chrome,但您使用的是 Firefox 的用户代理发送数据,那么很明显出现了问题。

时间戳 API

该服务使用时间戳 API(如 Date.now() 和 window.performance.timing.navigationStart)跟踪用户速度指标。如果标签与用户的典型在线行为不符,则用户将被禁止。

自动浏览器检测

Cloudflare 要求的特性只有自动化设置才具备。例如,当存在 window.document.__selenium_unwrapped 或 window.callPhantom 时,会使用 PhantomJS 和 Selenium。如果发现这种情况,您将出于显而易见的原因被禁止。

沙箱识别

检查(如在使用 JSDOM 的 NodeJS 中的检查)会阻止模拟的浏览器上下文。该脚本能够查找特定于 NodeJS 的进程对象文件。
Function.prototype.toString.call(functionName) 也可用于确定函数是否已被修改。

Cloudflare Turnstile

Cloudflare Turnstile 是 CAPTCHA 的智能替代品。它可以包含在任何网站资源中,而无需用户提交验证码或通过 Cloudflare 路由流量。

调用源服务器修复 Cloudflare CDN

最好是将请求直接发送到源服务器,因为 Cloudflare 只能阻止通过其网络的请求。没有安全措施会阻挡您所需的数据!

您需要执行两个步骤:

1. 找到源 IP 地址。

DNS 记录在安全网站上被屏蔽。但是,这可能并不总是如此:邮件、过时的服务和未受保护的子域名都可能仍然指向原始服务器,即使它们可以通过相同的域名访问。

2. 向原始服务器发送数据请求。

太棒了——您仍然拥有原始 IP 地址!那么我现在该怎么办呢?虽然它可能不起作用,但您可能尝试将其粘贴到浏览器地址栏中。这是一个标准的服务器设置,仅接受使用合法域名而非 IP 地址的连接。我们必须远离它们,因为 DNS 与域名一起使用。

由于 Cloudflare 真正采用了诸如等待室之类的安全措施,因此此方法通常会失败。

什么是等待室?为了验证您不是机器人,您的浏览器必须完成某些任务。如果您被标记为机器人,将会出现“拒绝访问”消息。如果不是,将自动重定向到实际网站。

您将短暂地进入 Cloudflare 等待区。目标的安全级别以及您的解析器通过测试的程度将决定确切的时间。完成任务后,您将有一段时间浏览该网站。

如何解决 Cloudflare 的等待室?理想情况下,通过完成 JavaScript 任务来证明您的人性。分析 JavaScript Cloudflare 挑战以理解负责生成任务和确认答案的算法是一种可行的策略,尽管如此。这样就可以重新设计脚本。

在联系 Bot Challenge 和 Turnstile 时,谨慎选择用户代理和使用高级住宅代理至关重要。

结论

考虑到以上所有内容,最简单的方法是相信为通过 Cloudflare Bot Challenge 和 Turnstile 而创建的技术,例如 Scrapeless 等资源,它们提供了一种高效的解决方案,可以以低于其他解决方案的成本解决这类安全问题。

厌倦了不断被CAPTCHA阻碍你的网页抓取工作?

向您强烈推荐 Scrapeless - 性能强大的一体化网页抓取解决方案。

Scrapeless:目前最好的一体化在线抓取解决方案!

借助我们强大的工具套件,可以轻松发挥数据抓取的全部潜力:

最佳 CAPTCHA 解码器

自动解决复杂的 CAPTCHA 问题,确保持续而丝滑地抓取网页数据。

免费试用开启中!

在Scrapeless,我们仅访问公开数据,同时严格遵守适用的法律、法规和网站隐私政策。 本博客内容仅用于演示目的,不涉及任何非法或侵权行为。 对于使用本博客或第三方链接的信息,我们不做任何保证,也不承担任何责任。 在参与任何抓取活动之前,请咨询您的法律顾问并查看目标网站的服务条款或获取必要的权限。

最受欢迎的文章

目录