什么是数据抓取?
数据抓取,以其最一般的形式,是指一种计算机程序从另一程序生成的输出中提取数据的技术。数据抓取通常体现在网页抓取中,网页抓取是使用应用程序从网站提取有价值信息的过程。
为什么要抓取网站数据?
通常,公司不希望其独特内容被下载并重新用于未经授权的目的。因此,它们不会通过开放的 API 或其他便于访问的资源公开所有数据。而另一方面,不管网站怎样限制访问权限,抓取机器人都会尝试对网站数据进行抓取。这样,网页抓取机器人与各种内容保护策略之间就存在一种猫捉老鼠的游戏,道高一尺,魔高一丈。
尽管执行起来可能很复杂,但网页抓取的过程非常简单。网页抓取分为3个步骤:
- 首先,用于提取信息的代码段(我们称为抓取机器人)将 HTTP GET 请求发送到特定网站。
- 当网站响应的时,抓取器将解析 HTML 文档以获取特定的数据模式。
- 数据提取后,被转换为抓取机器人设计者所设计的特定格式。
抓取机器人可以被设计用于多种用途,例如:
- 内容抓取–可以从网站上抓取内容以便复制依赖于该内容的独特产品或服务优势。例如,Yelp之类的产品依赖评论。竞争对手可以从Yelp中抓取所有评论内容,然后复制到自己的网站,让自己网站的内容开起来十分具有原创性。
- 价格抓取–通过抓取价格数据,竞争对手可以汇总其竞品信息。这可以使他们拥有独特的定价优势。
- 联络信息抓取–许多网站明文包含电子邮件地址和电话号码。通过抓取诸如在线员工目录之类的位置,抓取机器人能够汇总联络信息,以尝试大规模邮件发送、自动呼叫或恶意的社交工程攻击。这是垃圾信息发送者和诈骗者寻找新目标的主要方法之一。
如何防护网页抓取?
通常,网站访问者可以看到的所有内容都必须转移到访问者的计算机上,并且访问者可以访问的任何信息都可以被机器人抓取。
有方法能够限制可能发生的抓取量。以下是三种限制数据抓取工作的方法:
- 速率限制请求 – 对于访问网站并点击网站上一系列网页的真实用户,他们与网站交互的速度普遍是可预测的;例如,不可能有人类用户每秒浏览100个网页。另一方面,计算机则能以比人类快多个数量级的速度发出请求,而初级数据抓取程序则可能采用不受限抓取技术尝试快速抓取整个网站的数据。通过限制特定 IP 地址在给定时间时段内发出的最大请求数,网站能够保护自己免受侵略性请求的影响,并限制在特定时间范围中可能发生的数据抓取量。
- 定期修改 HTML 标记 - 数据抓取机器人依靠持续一直的格式化来有效地遍历网站内容并解析和保存有用的数据。阻止此工作流的一个方法就是定期更改 HTML 标记的元素,使格式一致的抓取过程变得更加复杂。嵌套 HTML 元素或者更改其他方面的标记,即可阻碍或者阻止简单的数据抓取活动。某些网站在每次呈现网页时,会对某些形式的内容保护进行随机修改。其他网站则偶尔修改自己的标记代码,防止更长期的数据抓取活动。
- 将 CAPTCHA 用于大量数据的请求者 – 除了使用速率限制解决方案外,减慢内容抓取速度的另一个有用步骤是要求网站访问者完成计算机难以实现的挑战。尽管人类可以合理地应对这个挑战,但一个在进行数据抓取的无脑浏览器*极有可能无法通过该挑战,更不可能持续通过数个挑战。但是,持续不断的 CAPTCHA 测试可能会对真实用户的体验产生负面影响。
另一种不太常见的防护方法要求将内容嵌入例如图像类的媒体对象中。由于内容不存在于字符串中,因此复制内容要复杂得多,需要光学字符识别 (OCR) 才能从图像文件中提取数据。但这也会给需要从网站复制内容的真实用户带来麻烦,他们将不得不靠记忆或重新输入例如地址或电话号码之类的信息,而无法直接复制。
*无头浏览器是网页浏览器的一种,类似于 Chrome 或 Firefox,但默认情况下它没有可视的用户界面,因此其移动速度比常见的网页浏览器快得多。本质上它是在命令行界面运行,无头浏览器可以避免呈现整个 Web 应用程序。数据抓取工具会编写机器人使用无头浏览器来更快地请求数据,因为没有人会去查看要抓取的每个页面。
如何完全防止抓取?
完全防止抓取网页的唯一方法是避免将内容完全放在网站上。但是,使用高级的机器人管理解决方案可以帮助网站几乎完全消除抓取机器人的访问权限。
数据抓取和数据爬虫有什么区别?
爬取是指 Google 等大型搜索引擎在发送其机器人爬网程序(如 Googlebot)到网络中以建立互联网内容索引时所进行的过程。另一方面,抓取则是明确从特定网站提取数据的一种典型架构。
以下是抓取机器人与网页爬网程序机器人的3种不同行为:
- 抓取机器人会假装为网页浏览器,而爬网程序机器人会表明其目的,而不是试图蒙骗网站。
- 有时,抓取机器人会采取高级措施,例如填写表格或进行其他行为以进入网站的特定部分。爬网程序则不会。
- 抓取程序通常会无视 robots.txt 文件,这个文本文件中包含专门设计用于告诉 Web 爬网程序的信息,让其了解可以解析哪些数据,以及应该避开网站的哪些区域。抓取程序旨在抓取特定内容,因此,它可能设计用于抓取明确标记为应该忽略的内容。
Cloudflare 机器人管理使用机器学习和行为分析来识别例如抓取器等恶意机器人,保护网站独特的内容并防止机器人滥用 Web 资产。相似地,Super Bot Fight 模式现已在 Cloudflare Pro 和 Business 服务方案中提供,旨在帮助较小规模的组织防御爬虫和其他恶意机器人,同时更深入了解其机器人流量。