in

Akamai WAF 反爬处理

Akamai WAF 反爬处理

网络爬取是一种古老而又常见的提取数据的技术。Akamai 机器人管理和其他供应商试图减轻搜刮行为可能造成的问题。他们的目标是阻止DDoS或欺诈性认证尝试等攻击。我们的目标,出于教育目的,是绕过Akamai。

爬取者不是他们的主要目标,但无论如何都可能让他们的内容被屏蔽。区分好的和坏的机器人并不是一件容易的事。让我们看看它们是如何做到的,并学习如何绕过Akamai的机器人管理!

什么是机器人检测软件

机器人检测,也被称为网络应用防火墙(WAF)或反刮擦保护,是一组对机器人进行分类和检测的技术。

在过去,这些措施涉及检测高负荷的IP和检查头文件。这使得防御系统能够阻止大部分的搜刮流量。

随着这些技术的发展,搜刮界也在发展。许多搜刮者试图绕过这些措施,导致机器人检测行业变得更好。

几年后,反窃取软件开始包括被动和主动的方法。被动的是存储IP和机器人网络,并为每个请求识别它们。主动式是指监测浏览器和用户活动,或将浏览历史反馈给机器学习程序。

根据一份官方白皮书(第13页),Akamai在2016年已经开始做行为分析。从那时起,他们一直在不断发展,就像所有的机器人检测软件供应商一样。他们现在为网站所有者提供了一个机器人评分模型,以微调其拦截的积极性。


Akamai机器人管理是做什么的?

Akamai 机器人管理主要目标是在最危险、最狡猾的机器人侵蚀客户信任之前阻止它们。这涵盖了各种各样的行为,包括网络搜刮。

为了实现他们的目标,他们采用了混合行动。他们维护一个机器人目录,应用人工智能来检测新型的机器人,由于他们存在于许多大规模流量的网站中,他们获得了集体智慧。

所有这些安全也适用于更具侵略性的攻击。DDoS、创建虚假账户或复制具有网络钓鱼意图的网站。分清目的是一个关键的方面。

机器人管理的两个关键方面是。

  1. 将人类与机器人区分开来。
  2. 区分好的机器人和坏的机器人。

并非所有的机器人都是恶意的。没有人想把谷歌排除在外,他们也会爬行和刮擦。那么,他们是如何做到的呢?


Akamai 机器人管理是如何工作的?

如上所述,他们使用了各种各样的技术。在我们深入研究技术实现之前,我们将解释其中一些。当然,还要学习如何绕过它们。

这些是绕过Akamai 机器人管理的活动部分。

  • 机器人网络:维护已知机器人的历史数据,并向其系统提供。相同的IP范围,用户代理命名的常见错误,或类似模式。任何这些都可能泄露出一个机器人网络。一旦识别和记录,阻止这种模式就会感到安全。没有人类会像这样浏览。
  • IPs:阻止IP可能听起来是最简单的方法。其实并不那么简单。IP的所有权并不经常改变,但谁在使用它们却会改变。攻击者可能使用属于普通ISP的IP,掩盖其来源和意图。一个普通用户可能在一周后得到这个IP地址。到那时,它应该可以无障碍地访问内容。
  • CAPTCHAs:区分人类和机器人的最佳程序,对吗?再次,一个论证。通过在每个会话中使用验证码,一个网站会赶走一些用户。没有人愿意每隔一次请求就解决它们。作为一种防御策略,验证码只有在流量可疑的情况下才会出现。
  • 浏览器和传感器数据:注入一个javascript文件,它将观察并运行一些检查。然后将所有的数据发送到服务器上进行处理。我们将在后面看到它是如何做的,以及要发送哪些数据。
  • 浏览器指纹识别:与机器人网络一样,共同的结构或模式可以让你离开。刮削者可能会改变和掩盖他们的请求。但有些细节(浏览器,或与硬件有关)是很难隐藏的。而Akamai将利用这一优势。
  • 行为分析:比较网站上的历史用户行为。检查模式和常见行为。例如,用户可以时不时地直接访问产品。但如果他们从不去分类或搜索页面,可能会触发警报。

刮擦检测并非非黑即白。Akamai 机器人管理结合了上述所有因素–以及其他一些因素。然后,根据网站的设置,它将决定是否阻止一个用户。机器人检测服务混合使用服务器端和浏览器端检测技术。

如果我们想跳过Akamai 机器人管理,我们必须首先了解它是如何使用它们的。否则就会面临 “拒绝访问的页面”。

我们只能猜测Akamai是如何进行服务器侧检测的。但我们可以看一下他们的客户端。从这里开始,它将变得技术化。请大家打起精神来!

如何在浏览器上隐藏防御性代码?混淆。Akamai将提供一个混淆的javascript文件。它将收集数据并将其发送到服务器进行处理。

Akamai 页面请求

正如我们在上图中看到的,该脚本触发了一个带有巨大有效载荷的POST请求。如果我们想绕过Akamai Bot检测,了解这个有效载荷是至关重要的。这并不容易。


消除挑战的模糊性

你可以在这里下载该文件。要想看到它,请访问KICKZ并在DevTools上寻找该文件。你什么都不懂,别担心……这就是我的想法!”。

首先,在一个JavaScript Deobfuscator上运行该内容。这将把那些奇怪的字符转换成字符串。然后,我们需要用这些字符串替换对初始数组的引用。

他们不直接用名字声明变量或对象键,以增加事情的难度。他们使用间接方法:用相应的索引来引用该数组。

我们还没有找到一个在线工具来钉住替换过程。但你可以做以下工作。

  1. 从生成的代码中剪切_acxj变量。
  2. 创建一个文件并放置该变量。
  3. 然后将其余的代码放在另一个变量中。
  4. 替换(不完美)所有对数组的引用,见下面的代码。
  5. 审查,因为其中一些会失败。

消除挑战的模糊性

它需要一些手动调整,因为它是一个笨拙的尝试。适当的替代将需要更多的细节和例外。下载他们的最终版本,看看它看起来如何。

为了节省你的时间,我们已经这样做了。原始文件经常变化。这个结果现在可能不一样了。但它会帮助你了解什么数据和他们如何将id发送到服务器上。


Akamai的传感器数据

kamai的传感器数据

你可以看到上面发送处理的数据。我们可以把红色突出显示的项目作为例子。从它的内容,我们可以猜到前两项来自哪里:用户代理和屏幕尺寸。第三项看起来像一个JSON对象,但我们不能只通过它的键就知道它代表什么。但是,让我们来找找看

第一个键–cpen–存在于脚本中。在文件中快速查找一下就可以知道。所以,我们要去找引用它的那一行

Akamai的传感器数据

这是什么意思?该脚本检查callPhantom是否存在。在谷歌上快速搜索一下,我们知道这是PhantomJS引入的一项功能。意思是说,发送cpen:1可能是Akamai的警报。没有合法的浏览器会实现这个功能。

如果你检查接下来的几行,你会发现它们一直在发送浏览器数据。例如,window.opera,如果浏览器不是Opera,就不应该为真。或者mozInnerScreenY只存在于Firefox浏览器上。你看到一个模式了吗?没有任何一个数据点是破坏性的(好吧,也许是PhantomJS的那个),但它们在一起分析的时候会发现很多东西

被称为bd的函数生成了所有这些数据点。如果我们寻找它的用法,我们就会到达一个有许多变量串联的行。n + ", " + o + ", " + m + ", " + r + ", " + c + ", " + i + ", " + b + ", " + bmak.bd()。信不信由你,但o是屏幕的可用高度。

我们怎么能知道呢?转到变量的定义。在IDE上用Control + click或类似的方法会带你到那里。

这个定义本身并没有告诉我们任何有用的东西:O = -1。但请看下面几行。

Akamai的传感器数据1

这就是你的成果您跟踪了Akamai发送浏览器/传感器数据供后端处理的内容和方式。

我们不会涵盖所有的项目,但你会明白这个道理。对于你感兴趣的任何数据点,适用同样的过程。

但最关键的问题是:我们为什么要这样做?

要绕过Akamai的防御系统,我们必须了解他们是如何做到的。然后,检查他们为此使用了哪些数据。有了这些知识,就能找到不受阻挡地访问该网页的方法。


屏蔽你的传感器数据

如果您的所有机器都有类似的数据发送,Akamai可能会对其进行指纹识别。意思是说,他们会检测并分组。相同的浏览器供应商、屏幕尺寸、处理时间、浏览器数据。是否有一个模式?检查您的数据。他们已经在这样做了。

假设如此,如何避免呢?有几种方法可以掩盖它们,比如 Puppeteer stealth

他们又是如何做到的呢?它是开放源码的,我们可以来看一看evasions

availHeight没有回避的余地,所以我们将改用hardwareConcurrency我们选了一个简单的,因为简单。大多数回避是比较复杂的。

比方说,你的所有生产机器都是一样的。这很平常–同样的规格、硬件、软件等等。它们的并发性将是相同的,例如,"hardwareConcurrency": 4.

这只是沧海一粟。但请记住,Akamai 机器人管理处理数百个数据点。我们可以通过转换一些数据来增加他们的难度

屏蔽你的传感器数据

代理作为一个中介。在这种情况下,对于对象导航器上的函数hardwareConcurrency。当被调用时,它不是返回原始值,而是用我们在选项中设置的值来替代。例如,它可以是一个典型值列表中的一个随机数。

我们用这种方法能得到什么?Akamai会看到随机发送的不同的hardwareConcurrency值。假设我们对几个参数都这样做,就很难看到一个模式。

对Akamai来说,每次访问都要进行这样的程序,不是很复杂吗?对每个人来说,好的部分是他们只做一次。然后设置cookies以避免再次运行所有的进程


利用Cookies以避免持续的挑战

为什么它对你有好处?一旦获得了cookies,接下来的请求就应该不被选中。这意味着这些cookie将绕过Akamai WAF!

我们建议使用相同的IP来模拟一个实际的用户会话,以保证安全。

Akamai使用的标准cookies是_abckak_bmscbm_svbm_mi。要找到关于这些的信息并不容易。由于有了cookie政策,一些网站列出并解释了它们。

请注意,ak_bmsc是HTTP的。这意味着你不能从Javascript中访问其内容。你将需要检查传感器数据调用的响应头。对于其他的,你可以检查头信息或在浏览器上调用document.cookie

而这个cookie的内容是至关重要的!传感器的调用将允许–或不允许–你的请求,并为你的会话生成该cookie。一旦获得,每次都要发送它,以避免新的检查。

哇,那是一个很大的负担。

这甚至不是一个详尽的清单,它可能会让人不知所措。但你做到了!

现在让我们看看如何通过应用我们刚刚学到的要点来跳过Akamai WAF。


如何绕过Akamai 机器人管理

这里有一些典型的做法,在搜刮Akamai保护的网站时,会有帮助,我们要绕过所有的网站。它们的门槛并不都是一样的。有些可能更激进。我们稍后会谈论它们。

遵循 robots.txt

这听起来可能很明显和简单。而且它是。但是,搜刮被robots.txt拦截的内容可能会对您的搜刮器进行标记。而且,如果Akamai发现了一种模式,您的所有请求可能在一段时间后被阻止。请记住,Akamai机器人管理器会从访客和他们的行为中学习。

Honeypots要非常小心。这些是旨在引诱恶意机器人的页面。例如,通过人类永远不会遵循的隐形链接。它们可以标记你或减慢你的进程。


好的轮流代理机构

一个好的IP地址可能不会绕过Akamai的防御,但一个坏的IP会自动被拒绝。不改变其IP的代理也是如此。在提出一些请求后,它的机器人管理器会阻止它。这只是一个时间问题。

好的代理有两个属性(非排他性):
  • 轮换:他们每次请求或在很短的时间内改变IP。
  • 起源:它决定了这些IP来自哪里。Akamai 机器人管理很难阻止一个普通4G提供商使用的IP。因为很难区分它是机器人还是人类。

使用无头浏览器

正如我们所看到的,通过Javascript挑战是必须的。没有浏览器,你就无法通过。静态搜刮–curl、js中的axios或python中的request–从长远来看是行不通的。有些网站可能会工作几次,但不可靠。

进入无头浏览器,例如,Selenium。它们执行一个真正的浏览器,如Chrome,但没有图形界面。这意味着它们会下载并运行Akamai的挑战

与良好的代理相结合,它将看起来像一个真正的用户。不过,机器人检测软件还是可以将它们区分开来。


HTTP头文件

浏览器默认会发送一组头信息,在改变这些头信息时要小心。如果您为Chrome和Safari浏览器添加相同的头信息,Akamai就会发现有问题。

只改变你最不需要的部分。并始终检查整个设置是否合理。比方说,你想把Google作为一个推荐人。你可以添加referer:https://www.google.com/。

很简单,对吗?嗯,没那么快。默认情况下,Chrome会发送sec-fetch-site: none。但如果来自谷歌,浏览器将添加sec-fetch-site: cross-site

一个小细节,是的。但是一个真正的浏览器是不会不做的。


无头浏览器的隐形技术

我们在上面已经看到了这些做法的作用。这些做法包括修改浏览器对特定挑战的反应方式。Akamai的检测软件会查询浏览器、硬件和其他许多东西。为了避免模式和指纹,隐身模式覆盖了其中的一些。它增加了变化,掩盖了浏览器。

其中一些行动是可以检测的。你将不得不测试和检查正确的组合。每个网站可以有不同的配置。

好消息是,您已经了解了Akamai是如何决定阻止哪些请求的。或者至少您知道他们为此收集了哪些数据。


不要与Javascript的挑战相矛盾

同样,这可能听起来很明显,但有些数据点可能来自另一个数据点,或者是重复的。如果您决定屏蔽一个而忘记另一个,Akamai的机器人检测会看到它。并采取行动,或者至少在内部进行标记。

在传感器数据例图中,我们可以看到,它发送的是窗口尺寸。大多数数据点都是相关的:实际屏幕、可用、内部和外部尺寸。

例如,”内 “永远不应该比 “外 “大。随机值在这里不起作用。你需要一组实际的尺寸。


绕过Akamai的最简单方法

有时,让别人做繁重的工作是一个好计划。你可以使用代理服务器绕过Akamai机器人管理或任何其他反搜刮系统。它们使您能够搜刮内容,而不必担心自己跳过Akamai或其他人。

专注于建立您的数据提取系统。从您的数据中获得最大的收益。而忘记处理我们谈到的所有复杂部分。以下为用于绕过Akamai的前五名代理服务器:


总    结

这是一个相当大的旅程!我们知道它很深入,但机器人检测是一个复杂的话题。

绕过Akamai机器人检测或其他防御系统的要点是:

  • 具有新鲜和轮换IP的良好代理机构。
  • 遵循 robots.txt。
  • 使用具有隐身模式的无头浏览器。
  • 了解Akamai的挑战,这样您就可以调整规避方法。
blank

Written by 爬取 大师

阿里P12级别选手,能够突破各种反爬, 全能的爬取大师,擅长百万级的数据抓取!没有不能爬,只有你不敢想,有爬取项目可以联系我邮箱 [email protected] (带需求和预算哈, 不然多半不回复)