Web 抓取攻击,或简称为“抓取”,发生在机器人自动从您的网站收集数据时,通常是出于恶意目的,如内容转售和降价。爬虫机器人模仿真实用户在常规浏览器上访问网站,在那里他们提取机器人程序员想要存储在本地数据库中的数据。
爬虫与其他类型的机器人有何不同?
与不需要执行很多请求的scalpers这样的机器人相反,抓取程序经常需要发出数百万个请求来抓取网页。尽管他们执行的请求量很大,但 Scraper 机器人被设计为有利可图。
例如,与剥头皮机器人相比,爬虫可能使用质量较低的代理,但它们倾向于使用与其他机器人相同的底层技术。爬虫可以基于自动化(无头)浏览器,或者它们可以利用 HTTP 客户端,如 aiohttp 和 Axios。爬虫机器人可以定制,或者欺诈者可以利用不同的专门框架,例如 Scrapy,使爬虫的创建更容易。许多机器人即服务 (BaaS)也专门用于抓取——他们所要做的就是使用 API 来抓取网站。
如何检测抓取攻击?
与其他类型的攻击一样,可以使用三种主要类型的信号检测抓取攻击:
- 行为
- 名声
- 签名
行为
可以在服务器端和客户端收集行为信号。在服务器端,该引擎分析用户如何浏览网站或移动应用程序,以检测一段时间内请求数量中的可疑异常值——因为机器人发出请求的速度比任何人都快得多。
在客户端,JavaScript(用于网站)或 SDK(用于移动应用程序)将收集浏览器中事件的详细信息,例如点击、触摸事件、打字速度和鼠标移动。然后可以通过机器学习 (ML) 模型分析这些细节,以检测交互是否与人类行为一致。
名声
信誉信号仅在服务器端以不同的粒度级别(如 IP 地址或用户会话)和时间窗口(如分钟、小时、天或月)计算。有了信誉信号,检测引擎可以使用先验知识来调整决策。例如,如果某个自治系统经常与数据抓取相关联,ML 模型将决定更积极地阻止来自该系统的流量。
由于抓取工具需要扩大攻击规模才能抓取数千或数百万页,因此他们往往严重依赖代理。最先进的爬虫使用住宅代理来访问类似于人类用户的 IP 地址。这就是为什么能够检测代理以阻止爬虫很重要的原因。
签名
签名信号在服务器端和客户端都被收集,可以包括:
- HTTP 指纹:HTTP 标头的详细信息(服务器端)。
- TLS 指纹:在 TLS 握手(服务器端)期间提取的元数据。
- 浏览器指纹:JavaScript (JS) 收集有关操作系统 (OS)、浏览器和设备(客户端,在浏览器中)的信息。
- 移动指纹:SDK 收集有关操作系统和设备(客户端,在移动应用程序中)的信息。
最彻底的检测将始终利用浏览器和移动指纹,因为使用 JS 或 SDK 制作的高级解决方案可以检测流行的无头浏览器和自动化框架,如无头 Chrome、Puppeteer、Playwright和Selenium。
客户端挑战还可以帮助检测和跟踪旨在绕过传统机器人检测技术的爬虫经常使用的修改后的机器人框架,尤其是:
- 傀儡师额外隐身
- 修改后的 Selenium ChromeDriver
- 修改编剧
关于抓取检测和保护的问题和误解
大多数网站和移动应用程序都实施了针对爬虫的反制措施,其中包括验证码、速率限制、Web 应用程序防火墙 (WAF) 等。但一些常见的反制措施不足以保护您的网站免受复杂的爬虫攻击——更糟糕的是,其中一些可能会产生误报。
传统的 CAPTCHA 是否足以对抗爬虫?
不会。大多数爬虫可以伪造传统的验证码,使用基于人工智能的图像或音频识别或验证码农场,人类工人代表机器人解决验证码挑战。最重要的是,向用户显示验证码(也称为“误报”)会显着降低真实用户的用户体验。
在我的网站和 API 端点上使用基于 IP 的速率限制可以确保我的安全吗?
虽然基于 IP 的速率限制可以阻止最简单的机器人程序(仅从一个或几个 IP 运行的机器人程序),但它无法捕捉到最复杂的爬虫程序。复杂的爬虫利用代理将他们的攻击分布到数千个不同的 IP 地址。因此,每个 IP 地址仅发出少量请求,这使攻击者能够保持在速率限制阈值以下。
此外,阻止整个 IP 地址是危险的,因为许多 IP 地址被大量共享。事实上,大多数移动 IP 地址在任何给定时间都由成百上千的用户共享。因此,阻止 IP 会导致许多误报(挑战真正的人类用户),从而损害您的用户体验并使您的消费者感到沮丧。
阻止来自数据中心 IP 的所有流量是否足以阻止爬虫?
不幸的是,阻止所有数据中心 IP 流量是不够的,更糟糕的是,它会触发误报。许多合法流量来自数据中心 IP,包括 VPN 用户和大公司代理。您不想阻止您的合法用户。最重要的是,攻击者可以访问数百万个住宅代理——而不仅仅是数据中心代理。一些代理服务以每 GB 带宽几美元的价格提供对住宅 IP 的访问。因此,攻击者可以使用属于 Comcast、AT&T 和 Verizon 等知名互联网服务提供商 (ISP) 的 IP ,就像您的真实用户一样。
如果我使用地理封锁来阻止来自我的业务未开展业务的国家/地区的所有流量,爬虫能否绕过它?虽然地理封锁可能会阻止从单个 IP 或外国数据中心代理运行的简单爬虫,但它不会阻止利用住宅代理的更复杂的攻击者。住宅代理网络允许欺诈者选择位于特定国家/地区的代理。
我们在观察到的是,大多数攻击者选择与他们所针对的网站位于同一国家/地区的代理——这有助于他们显得更人性化并绕过地理封锁技术。
地理封锁也会产生误报,因为您的一些用户可能正在国外旅行或暂时居住。此外,请记住 IP 地址位置并非 100% 准确。因此,IP 位置数据库中可能存在一些国家/地区错误分类,地理封锁可能会在这些 IP 上产生误报。
我的 WAF 可以防止抓取吗?
不,不完全是。WAF 无法与当今复杂的爬虫机器人相提并论,因为 WAF 旨在使用一组二进制规则检测和过滤恶意流量。尽管昨天的简单机器人程序和已知威胁可能会受到 WAF 中指定规则的约束,但爬虫现在可以轻松访问使用代理和 ML 来模仿人类行为的复杂机器人程序。今天复杂的爬虫可以轻松绕过基于规则的安全工具,如 WAF。