什么是数据抓取?

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

Share facebook icon linkedin icon twitter icon email icon

数据抓取

学习目标

阅读本文后,您将能够:

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

什么是数据抓取?

从广义上讲,数据抓取是指计算机程序从其他程序生成的输出中提取数据的一种技术。数据抓取通常表现为 Web 抓取,该过程利用应用程序从网站提取有价值的信息。

Data Scraping

抓取网站数据的原因是什么?

企业通常不希望其独特的内容被下载并重复用于未经授权的用途。因此,这类企业不会经由消费型 API 或者其他易于获取的资源公开所有数据。另一方面,抓取程序机器人无视任何访问限制尝试,对获取网站数据乐此不疲。因此,Web 抓取机器人和多种多样的内容保护策略便玩起了猫抓老鼠游戏,各方都希望以策略制胜。

Web 抓取这一过程相当简单,但实施起来很复杂。Web 抓取有 3 个步骤:

  1. 首先,用于提取该信息的代码段称之为“抓取程序机器人”,其会向特定网站发送 HTTP GET 请求。
  2. 如果网站作出了响应,抓取程序则会解析 HTML 文件以获得特定模式的数据。
  3. 数据一经提取,即被转换为抓取程序机器人作者设计的任何特定模式。

抓取程序机器人的设计目的很多,如:

  1. 内容抓取 - 可以从网站提取内容到另一站点,以便复制依赖于内容的特定产品或服务的独特优势。例如,Yelp 等产品主要依靠评论;竞争对手可以从 Yelp 抓取所有评论内容,并在自己的站点上再现这些内容,假装内容为原创。
  2. 价格抓取 - 竞争对手通过抓取定价资料,能够对竞争信息进行汇总。由此可以形成自身的独特优势。
  3. 联系人抓取 - 大量网站中包含纯文本的电子邮件地址和电话号码。抓取程序通过抓取线上员工目录等位置,能够将联系人详细信息汇总,用于群发邮件列表、骚扰电话或是恶意社会工程学攻击企图。这是垃圾邮件发送者和欺诈者查找新目标时使用的其中一种主要方法。

如何进行 Web 抓取防护?

一般而言,网站访问者能够查看的所有内容必须传送到访问者的机器上,而机器人能够抓取访问者所能访问的任何信息。

但是可以采取措施尽力限制发生的 Web 抓取量。以下 3 种方法可用于限制数据抓取活动:

  1. 速率限制请求 - 人类访问者点入浏览网站上一系列网页时,与网站的交互速度具有一定程度的可预见性;例如,人类绝不可能在 1 秒钟内浏览 100 个网页。另一方面,计算机则能以比人类快多个数量级的速度发出请求,而初级数据抓取程序则可能采用不受限抓取技术尝试快速抓取整个网站的数据。网站采取速率限制方法限制特定 IP 地址在给定时间段内所能提出的最大请求数量,能够保护自身免于接收过多请求并限制在一定时间段内发生的数据抓取量
  2. 定期修改 HTML 标记 - 数据抓取机器人有赖于一致的格式,才能有效遍历网站内容,并解析和保存有用数据。阻止此工作流的一个方法就是定期更改 HTML 标记的元素,使格式一致的抓取过程变得更加复杂。嵌套 HTML 元素或者更改其他方面的标记,即可阻碍或者阻止简单的数据抓取活动。某些网站在每次呈现网页时,会对某些形式的内容保护进行随机修改。其他网站则偶尔修改自己的标记代码,防止更长期的数据抓取活动。
  3. 采用 CAPTCHA 应对大量请求者 - 除采用速率限制解决方案外,其他阻碍内容抓取程序的有效措施包括要求网站访问者回答计算机难以克服的质询。虽然人类能够合理回答质询,但参与数据抓取的无界面浏览器* 很有可能无法做出合理回答,当然也就无法连续通过各种质询实例。但连续的 CAPTCHA 质询会给用户带来不好的用户体验。

还有一种不常见的防护方法是将图片等媒体对象嵌入内容中。因为内容并非以字符串形式存在,复制内容是项十分复杂的操作,需采用光学字符识别 (OCR) 技术将数据从图片文件中提取出来。但对那些需要从网站上复制地址或者电话号码等内容,而无需记住或者重新输入这些内容的网站用户而言,这也会造成妨碍。

*无界面浏览器是一种 Web 浏览器,很像 Chrome 或者 Firefox,但其默认无可视用户界面,因此运行速率比传统 Web 浏览器快很多。无界面浏览器基本上是以命令行级别运行,能够避免呈现整个 Web 应用程序。数据抓取程序编写采用无界面浏览器快速请求数据的机器人,

原因在于没有人类用户在查看正被抓取每个网页。

如何完全阻止 Web 抓取?

完全阻止 Web 抓取的唯一方法是避免将所有内容全部放在一个网站上。然而,采用先进的机器人管理解决方案有助于网站近乎完全阻止抓取程序机器人进行访问。

数据抓取与数据爬取二者有何区别?

爬取是指 Google 等大型搜索引擎在发送其机器人爬网程序(如 Googlebot)到网络中以建立 Internet 内容索引时所进行的过程。另一方面,抓取则是明确从特定网站提取数据的一种典型架构。

抓取程序机器人进行的以下 3 种活动,将其与 Web 爬网程序机器人行为区分开来:

  1. 抓取程序机器人会假装为 Web 浏览器,而爬网程序机器人则会表明自己的目的,不会尝试欺骗网站误认其身份。
  2. 有时抓取程序会采用填写表格或者以其他方式进行其他行为,以达到访问网站特定部分的目的。而爬网程序不会。
  3. 抓取程序通常会无视 robots.txt 文件,而这份文本文件内含专门针对 Web 爬网程序的信息,其中表明哪些数据可以解析以及网站哪些区域应该绕开。抓取程序的设计目的是为了抓取特定内容,因此其可能旨在抓取明确标记为应忽视的内容。

Cloudflare 机器人管理利用机器学习和行为分析来辨别抓取程序等恶意机器人,从而保护独特内容,并防止机器人滥用 Web 属性。