如何实施Web爬网保护以保护您的网站


迈克·霍列夫(Mike Khorev)

Web抓取是从网站提取数据或内容的过程。当我们右键单击网站的图像并将其保存时,从技术上讲,我们正在执行Web抓取,但是也可以使用程序或漫游器来执行抓取。这些自动化工具可以更快的速度提取更多数据,从而降低成本。 

话虽如此,Web抓取(也称为屏幕抓取,网站数据提取和Web抓取)可能是无害的,并且完全合法。在某些情况下,它也可能被用于恶意目的,使网站的服务器负担沉重,甚至导致其他形式的网络犯罪攻击。 

Web爬虫程序可能会发送更多请求,典型的人类用户和犯罪者可以在技术上使用它们执行DDoS(分布式拒绝服务)攻击。网络抓取工具提取公开的数据是合法的,但某些网络抓取程序也可以绕过目标网站的安全性,并窃取本应隐藏的敏感数据(即网站用户的财务信息)。 

Web刮板程序可以同时相当简单和非常复杂。我们甚至可以 构建我们自己的网络抓取机器人,尽管这需要相对高级的编程知识。 

Web刮板越高级,构建它的难度就越大。各种预建的Web刮板程序广泛可用,其中一些是免费的。其中一些功能非常复杂,具有多项高级功能。 

预置式网页抓取工具的这种可用性是为什么网站所有者必须了解网页抓取的概念,如何识别网页抓取工具的活动以及在需要时如何阻止其活动的原因。 

网页爬网保护方法

  1. 保护您的网站

以下是一些应在您的网站上实施的基本的防止网页抓取方法: 

  • 正确的使用条款和条件

防止内容抓取的一种基本但有效的方法是在使用条款中明确声明您不允许网络或内容抓取。例如,您可以说: 

“您只能出于个人和非商业目的使用或复制本网站上的内容”。 

这样做可能不会阻止具有恶意意图的黑客,但会阻止具有诚实意图的黑客,并为您提供法律上的好处。 

  • 防止热链接

热链接在使用原始网站的资源时显示其他网站上的资源(图像,视频或其他文件)。在抓取网页期间,通常的做法是直接复制链接和图片。当您在其他网站上显示图片时阻止热链接时,这些图片将不会使用您服务器的资源。虽然这不会阻止其他人窃取和使用您的内容,但至少可以减轻损失。 

  • 使用跨站点请求伪造(CSRF)令牌

在您的网站上实现CSRF令牌可以帮助防止自动化机器人和其他自动化软件对您的网站URL发出任意请求。 

CSRF令牌本质上是由Web服务器生成并在客户端执行HTTP请求时传输给客户端的唯一且秘密的号码。当客户端发出另一个请求时,服务器端应用程序将检查此请求是否包含CSRF令牌,如果令牌丢失,则将拒绝该请求。 

为了避开CSRF令牌,Web爬虫程序机器人必须在将其与请求捆绑在一起之前搜索正确的令牌,并且只有更高级的爬虫程序才能做到这一点。 

  1. 监控流量并限制异常活动

防止卷筒纸刮擦的最佳方法是建立适当的监视系统。因此,当您的系统检测到表明Web Scraper Bot存在的异常活动时,您可以阻止或限制该活动。 

以下是一些常见的尝试方法: 

  • 速率限制:

相当不言自明。您可以在特定时间范围内将网络抓取工具(以及合法用户)限制为有限数量的操作。例如,您仅允许每秒或每分钟每分钟来自任何特定用户(或IP地址)的特定数量的搜索者。这样做会大大减慢网络抓取机器人的活动。 

但是,如果您限制或阻止流量,则应该超越IP地址检测范围。以下是一些指标,可以帮助您识别刮板机器人: 

  • 线性鼠标移动和舔
  • 快速提交表格
  • 检查浏览器类型,屏幕分辨率,时区等,以识别是否存在不良机器人

在共享Internet连接的情况下,您可能会从相同的IP地址收到合法用户的请求。确定IP地址以外的其他因素可以帮助您区分真实的人类用户和网络抓取工具。 

  • 需要创建帐户

要求用户先注册并登录,然后才能访问您的内容,这是Web抓取工具的一项很好的预防措施。尽管如此,它也会影响用户体验(UX),并可能阻止合法用户。因此,请谨慎使用。 

此外,某些复杂的网络抓取工具可以注册并自动使用其帐户登录,甚至可以创建多个帐户。这里的一个好习惯是要求一个电子邮件地址进行注册并验证该电子邮件地址。您还可以实施CAPTCHA测试(下面将对此进行详细介绍),以防止Web爬虫程序机器人创建帐户。 

  • 使用CAPTCHAS

一般而言,CAPTCHA(“完全自动化的测试可以告诉计算机和人类分开”)是一种有效的措施,可抵御Web爬虫和自动化脚本(机器人)。 

使用CAPTCHA的主要思想是,测试应该足够容易(或非常容易)被人类用户解决,但很难被机器人解决。您可以在敏感页面中包含CAPTCHA,或者仅在系统检测到可能的抓取工具并希望 停止内容抓取

有多种简便的方法可在您的网站上实施验证码。例如,Google的 reCAPTCHA 是在您的网站上添加验证码的免费可靠方式。尽管Google的Recaptcha相当可靠,但它并不完美,并且确实存在一些缺点。

要记住的一件事是不要以任何形式在您的页面上包含CAPTCHA的解决方案。一些网站犯了将解决方案包含在页面本身的HTML标记中的错误。抓取者可以简单地将其抓取,并使用它绕过验证码。

请记住,Web刮板有多种方法可以绕过验证码。例如,有多种验证码农场服务,需要付费才能支付真实的人来解决验证码,从而使验证码变得无用。在这种情况下,我们需要将验证码与 先进的机器人检测软件 可以检测专门用于解决验证码和reCAPTCHA的验证码场和漫游器。 

  • 不要公开您的全部内容和API端点

不要为脚本或漫游器提供一种方法来访问您在一页上的所有内容。例如,不要在目录页面上列出您的所有博客文章,但可以使这些文章只能通过网站的现场搜索来访问。 

这样,网络抓取工具必须搜索 全部 可能的短语来查找您的所有文章,即使对于最复杂的刮板来说,这也是非常困难且耗时的。希望刮板将由于这种简单的措施而放弃。 

但是,搜索“ the”,“ and”或其他通用关键字之类的内容可能会揭示您几乎所有的内容。您可以仅显示10或20个结果来解决此问题。 

确保您不公开任何API,尤其是API端点。抓取工具可以对此进行反向工程,并在抓取脚本中使用它。相反,请确保您的所有API端点都很难被其他人使用。 

  1. 保护您的页面

我们已经提到您应该要求登录特定内容,以避免内容被抓取。这样,您可以阻止自动机器人,即使它们可以登录,也可以准确地跟踪其行为。当您检测到抓取活动时,也可以禁止该帐户。 

虽然要求注册和登录并不会100%停止抓取内容,但至少可以为您提供见识和控制权。 

您可以在此处使用一些提示: 

  • 定期更改您的HTML

网络抓取工具的一种常见做法是在网站的HTML标记中找到模式和可能的利用方式。然后,犯罪者可以利用这些模式通过利用漏洞对您网站的HTML发起进一步的攻击。 

话虽如此,请考虑经常更改网站的HTML标记,或确保网站的标记不一致或不一致。这样做可能会阻止无法有效找到您网站的HTML模式的攻击者。 

这些更改并不一定意味着您需要完全重新设计网站,但是您可以简单地定期更改HTML和CSS文件中的ID和类。 

  • 创建蜜罐或陷阱页面

蜜罐页面是您的普通访客不会点击的隐藏页面或页面上的隐藏元素(即,隐藏链接)。网页抓取工具倾向于点击页面上的每个链接,因此他们会无意间点击该链接并输入“陷阱”。例如,您可以伪装链接以使其与页面背景融为一体。 

当特定的访问者访问此蜜罐页面时,我们几乎可以确定这不是人类的访问者,并且您可以监视活动。如果需要,您可以限制甚至阻止来自此客户端的所有请求。 

结束语

网络抓取工具会吞噬您网站的资源,还可能导致其他恶意活动,例如内容被盗用, 第7层DDoS攻击。因此,网站所有者与抓取工具之间的斗争通常是漫长而持续的:网站所有者必须始终领先于黑客和抓取工具,以防止恶意内容抓取和其他网络安全威胁。

上面,我们讨论了几种防止刮网的可能解决方案,但是对于先进和复杂的刮网机器人来说,它们仍然不是100%的预防措施。最好始终保持谨慎并监视您的流量,以便您可以识别恶意流量并尽快对其进行阻止/阻止。 


Mike Khorev对IT领域中的所有新兴技术充满热情,并喜欢撰写所有这些技术。他是终身的市场营销和互联网专家,在Web技术,SEO,在线营销和网络安全方面拥有超过10年的经验。


Follow 华晨安全杂志on 推特, Facebook, 和 领英 以确保您收到有关最新安全和网络安全新闻和信息的警报。