What is data scraping?

攻击者能够利用 Web 抓取工具,以比预期更快的速度访问数据。 这可能导致数据被用于未经授权的用途。

学习目标

阅读本文后,您将能够:

  • 明确数据抓取的概念
  • 说明 Web 抓取背后的目的
  • 了解数据抓取的防护方法
  • 区分数据抓取与数据爬取

复制文章链接

什么是数据抓取?

数据抓取,以其最一般的形式,是指一种计算机程序从另一程序生成的输出中提取数据的技术。数据抓取通常体现在网页抓取中,网页抓取是使用应用程序从网站提取有价值信息的过程。

数据抓取

为什么要抓取网站数据?

通常,公司不希望其独特内容被下载并重新用于未经授权的目的。因此,它们不会通过开放的API或其他便于访问的资源公开所有数据。而另一方面,不管网站怎样限制访问权限,抓取机器人都会尝试对网站数据进行抓取。这样,网页抓取机器人与各种内容保护策略之间就存在一种猫捉老鼠的游戏,道高一尺,魔高一丈。

尽管执行起来可能很复杂,但网页抓取的过程非常简单。网页抓取分为3个步骤:

  1. 首先,用于提取信息的代码段(我们称为抓取机器人)将 HTTP GET请求发送到特定网站。
  2. 当网站响应的时,抓取器将解析HTML文档以获取特定的数据模式。
  3. 数据提取后,被转换为抓取机器人设计者所设计的特定格式。

抓取机器人可以被设计用于多种用途,例如:

  1. 内容抓取–可以从网站上抓取内容以便复制依赖于该内容的独特产品或服务优势。例如,Yelp之类的产品依赖评论。竞争对手可以从Yelp中抓取所有评论内容,然后复制到自己的网站,让自己网站的内容开起来十分具有原创性。
  2. 价格抓取–通过抓取价格数据,竞争对手可以汇总其竞品信息。这可以使他们拥有独特的定价优势。
  3. 联络信息抓取–许多网站明文包含电子邮件地址和电话号码。通过抓取诸如在线员工目录之类的位置,抓取机器人能够汇总联络信息,以尝试大规模邮件发送、自动呼叫或恶意的社交工程攻击。这是垃圾信息发送者和诈骗者寻找新目标的主要方法之一。

如何防护网页抓取?

通常,网站访问者可以看到的所有内容都必须转移到访问者的计算机上,并且访问者可以访问的任何信息都可以被机器人抓取。

有方法能够限制可能发生的抓取量。以下是三种限制数据抓取工作的方法:

  1. 速率限制请求 – 对于访问网站并点击网站上一系列网页的真实用户,他们与网站交互的速度普遍是可预测的;例如,不可能有人类用户每秒浏览100个网页。另一方面,计算机则能以比人类快多个数量级的速度发出请求,而初级数据抓取程序则可能采用不受限抓取技术尝试快速抓取整个网站的数据。通过限制特定 IP 地址在给定时间时段内发出的最大请求数,网站能够保护自己免受侵略性请求的影响,并限制在特定时间范围中可能发生的数据抓取量
  2. 定期修改HTML标记–数据抓取机器人依靠持续一直的格式化来有效地遍历网站内容并解析和保存有用的数据。阻止此工作流的一个方法就是定期更改 HTML 标记的元素,使格式一致的抓取过程变得更加复杂。嵌套 HTML 元素或者更改其他方面的标记,即可阻碍或者阻止简单的数据抓取活动。某些网站在每次呈现网页时,会对某些形式的内容保护进行随机修改。其他网站则偶尔修改自己的标记代码,防止更长期的数据抓取活动。
  3. Use CAPTCHAs for high-volume requesters - in addition to using a rate limiting solution, another useful step in slowing content scrapers is the requirement that a website visitor answers a challenge that’s difficult for a computer to surmount. While a human can reasonably answer the challenge, a headless browser* engaging in data scraping most likely cannot, and certainly will not consistently across many instances of the challenge. However, constant CAPTCHA challenges can negatively impact the user experience.

另一种不太常见的防护方法要求将内容嵌入例如图像类的媒体对象中。由于内容不存在于字符串中,因此复制内容要复杂得多,需要光学字符识别(OCR)才能从图像文件中提取数据。但这也会给需要从网站复制内容的真实用户带来麻烦,他们将不得不靠记忆或重新输入例如地址或电话号码之类的信息,而无法直接复制。

*无头浏览器是网页浏览器的一种,类似于Chrome或Firefox,但默认情况下它没有可视的用户界面,因此其移动速度比常见的网页浏览器快得多。本质上它是在命令行界面运行,无头浏览器可以避免呈现整个Web应用程序。数据抓取工具会编写机器人使用无头浏览器来更快地请求数据,因为没有人会去查看要抓取的每个页面。

如何完全防止抓取?

完全防止抓取网页的唯一方法是避免将内容完全放在网站上。但是,使用高级的机器人管理解决方案可以帮助网站几乎完全消除抓取机器人的访问权限。

数据抓取和数据爬虫有什么区别?

Crawling refers to the process large search engines like Google undertake when they send their robot crawlers, such as Googlebot, out into the network to index Internet content. Scraping, on the other hand, is typically structured specifically to extract data from a particular website.

以下是抓取机器人与网页爬网程序机器人的3种不同行为:

  1. 抓取机器人会假装为网页浏览器,而爬网程序机器人会表明其目的,而不是试图蒙骗网站。
  2. 有时,抓取机器人会采取高级措施,例如填写表格或进行其他行为以进入网站的特定部分。爬网程序则不会。
  3. 抓取机器人通常会忽略robots.txt文件,该文件是一个文本文件,专门用于告诉爬网程序能解析哪些数据以及不能访问的区域。因为抓取器被设计为提取特定内容,所以它可以被设计专门抓取那些被明确禁止抓取的内容。

Cloudflare Bot Management uses machine learning and behavioral analysis to identify malicious bots such as scrapersprotecting unique content and preventing bots from abusing a web property. Similarly, Super Bot Fight Mode, now available on Cloudflare Pro and Business plans, is designed to help smaller organizations defend against scrapers and other bad bots while giving them more visibility into their bot traffic.