in

如何在网页爬取时绕过 Akamai反爬机制

如何在网页爬取时绕过 Akamai反爬机制

Akamai Bot Manager 是一项流行的 Web 服务,可保护网站免受机器人程序和爬取工具的侵害。许多流行网站都在使用它,包括Amazon、Ebay、Airbnb 等。

Akamai 主要因其在机器人检测软件中使用人工智能而闻名,但它由指纹识别和连接分析等传统机器人检测方法提供支持。这意味着通过精心设计,在网络爬取时可以绕过 Akamai。

在本文中,我们将了解如何绕过 Akamai Bot Manager 以及如何检测请求何时被 Akamai 阻止。我们还将介绍常见的 Akamai 错误和指示请求已被阻止的迹象。让我们深入了解吧!

什么是 Akamai 机器人管理器?

Akamai 提供一套 Web 服务,Bot Manager 服务用于确定连接用户是人工过程还是自动化过程。虽然它具有保护网站免受恶意机器人攻击的合法用途,但它也可以阻止网络爬取工具访问公共数据。

Akamai Bot Manager 主要由 Ebay.com、Airbnb.com、Amazon.com 等大型网站使用,这使得对这些目标进行网络爬取变得困难但可能。接下来,我们来看看一些常见的 Akamai 错误以及整个过程是如何运作的。

如何识别 Akamai 块?

大多数 Akamai 机器人阻止都会生成 HTTP 状态代码 400-500。最常见的是,返回状态代码 403 以及消息“请原谅我们的中断”或“访问被拒绝”。不过,为了摆脱机器人,Akamai 也可以使用相同的消息返回状态代码 200。

Similarweb 上的 Akamai 阻止页面的屏幕截图

爬取 simpleweb.com 时 Akamai 阻止页面的屏幕截图

此错误主要在第一个请求时遇到,因为 Akamai 特别擅长在连接的第一阶段检测机器人。然而,Akamai 的 AI 行为分析可以随时阻止连接。

接下来让我们看看 Akamai 如何准确检测网络爬取工具和机器人。

Akamai 如何检测网络爬取工具?

Akamai Bot Manager 使用许多不同的 Web 技术来确定用户是人类还是机器人。不仅如此,Akamai 还持续跟踪用户的行为来调整检测结果(也称为信任分数)

信任分数是在许多不同的阶段计算的。最终分数是所有阶段的加权平均值,并确定用户是否可以绕过 Akamai。

这一复杂的过程使得网络爬取变得困难,因为开发人员必须管理许多不同的因素才能绕过 Akamai。然而,如果我们看一下各个阶段,我们就会发现绕过 Akamai 的可能性非常大!

TLS 指纹识别

TLS(或 SSL)是 HTTP 连接过程的第一步。它用于连接的端到端加密https

首先,客户端和服务器都必须协商加密方法。由于有许多不同的密码和加密选项,双方必须就同一个密码和加密选项达成一致。这就是 TLS 指纹识别发挥作用的地方。

由于不同的计算机、程序甚至编程库具有不同的 TLS 功能,因此如果爬取工具使用了与常规 Web 浏览器具有不同 TLS 功能的库,则可以通过此方法进行识别。这通常被称为JA3指纹

因此,如果网络爬取工具使用的库与常规网络浏览器相比具有不同的 TLS 功能,则可以通过此方法进行识别。

为了避免被 JA3 指纹识别,请确保 HTTP 连接中使用的库和工具具有 JA3 抵抗能力

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

IP 地址指纹识别

Akamai 检测的下一步是 IP 地址分析和指纹。

首先,有几种不同类型的 IP 地址:

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

使用 IP 分析 Akamai 可以确定 IP 地址是住宅、移动还是数据中心。这是通过将 IP 地址与已知 IP 地址的数据库进行比较并检查公共 IP 提供商详细信息来完成的。

例如,由于真实用户很少从数据中心 IP 进行浏览,因此如果网络爬取工具正在使用数据中心 IP,那么就完全暴露了它是一个机器人。

因此,现阶段请使用高质量的住宅或移动代理以避免被 Akamai 阻止。

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

HTTP 详细信息

下一步是 HTTP 连接本身。HTTP 协议变得越来越复杂,Akamai 正在利用这种复杂性来检测机器人。

首先,大多数网络运行在 HTTP2 和 HTTP3 上,而许多网络爬取库正在使用 HTTP1.1。因此,如果网络爬取工具使用 HTTP1.1,则可以清楚地表明它是机器人。

虽然 cURL 和httpx等许多较新的 HTTP 库支持 HTTP2,但 Akamai 仍然可以使用 HTTP2 指纹识别来检测到它。

HTTP 请求标头也发挥着重要作用。Akamai 正在寻找网络浏览器使用但网络爬取工具不使用的特定标头。因此,确保请求标头及其顺序与真实的 Web 浏览器和网站上下文相匹配非常重要。

例如,像Origin,这样的标题Referer可以在网站的某些页面中使用,但不能在其他页面中使用。其他身份标头(如User-Agent和编码标头)Accept-Encoding也可用于识别机器人。

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

JavaScript 指纹识别

最后,最复杂且最难绕过的阶段是 Javascript 指纹识别。

由于 Web 服务器可以在客户端计算机上执行任意 javascript 代码,因此它可用于收集有关连接客户端的大量信息:

  • JavaScript 引擎详细信息
  • 硬件详细信息和功能
  • 操作系统信息
  • Web 浏览器上下文信息

所有这些数据都用于创建唯一的指纹,用于跟踪用户和识别机器人。

幸运的是,JavaScript 很复杂并且需要时间来执行。这限制了实用的 Javascript 指纹识别技术。换句话说,没有多少用户可以等待 3 秒页面加载或容忍误报块。

如需深入了解,请参阅我们关于在网络爬取工具检测中使用 javacript 的文章。

要绕过 Akamai 的 javascript 指纹识别,我们通常有两种截然不同的选择。

我们可以拦截和逆向工程 JavaScript 行为,并向 Akamai 提供虚假数据。这是一个非常复杂且耗时的过程,因为 Akamai Bot 团队不断调整和改变。

或者,我们可以使用SeleniumPuppeteerPlaywright等浏览器自动化库来运行真正的 Web 浏览器,这些库可以启动真正的无头浏览器并导航它以进行网页爬取。

因此,使用浏览器自动化库来绕过 Akamai 的 javascript 指纹识别

这种方法甚至可以与传统的 HTTP 库混合使用,因为我们可以使用真实的 Web 浏览器建立信任评分并将会话切换到 HTTP 库以加快爬取速度。

行为分析

绕过上述所有方法后,Akamai 仍然可以使用行为分析来检测机器人。由于 Akamai 正在跟踪网站上发生的所有情况,因此它可以通过检测异常行为来检测爬取工具和机器人。

因此,通过多个代理分配网络爬虫流量非常重要。
这是通过使用代理、标头详细信息和其他设置创建多个配置文件来完成的。如果使用浏览器自动化,则每个配置文件应使用不同的浏览器版本和配置(如屏幕尺寸等)。

如何绕过 Akamai 机器人管理?

现在我们已经熟悉了用于检测机器人程序的所有方法,我们对如何通过避免所有这些检测方法来绕过 Akamai 机器人程序保护有了大致的了解。

应对这一挑战的方法有很多,但为了在 2024年绕过 Akamai,我们可以将一般方法总结如下:

  • 使用高质量的住宅或移动代理
  • 使用浏览器自动化库绕过 Akamai 的 javascript 指纹识别
  • 使用指纹抵抗补丁修补浏览器自动化库(例如puppeteer-stealth
  • 通过多个代理分配网络爬取流量

常问问题

为了结束本文,我们来看看有关网络爬取 Akamai 页面的一些常见问题:

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

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

是的,Google Cache 或 Archive.org 等公共页面缓存服务可用于绕过 Akamai 受保护的页面,因为 Google 和 Archive 往往会被列入白名单。然而,由于缓存需要时间,缓存的页面数据通常已经过时,不适合网页爬取。缓存的页面也可能会丢失动态加载的部分内容。

是否可以完全跳过 Akamai 并直接爬取真实网站?

这与安全研究更接近,不建议在网络爬取时参与。虽然爬取和绕过 Akamai 页面是完全合法的,但在许多国家/地区滥用安全漏洞可能是非法的。

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

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

Akamai 绕过摘要

在本文中,我们了解了如何在网页爬取时绕过 Akamai Bot Management。

我们首先确定 Akamai 用于为每个新连接制定信任评分的所有方式以及该评分在网络爬取中的作用。我们已经研究了每种方法以及我们可以采取哪些措施来绕过它。

Written by 河小马

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