如何抓取网站数据且不被列入黑名单和屏蔽

Last modified date

Comments: 0

您的网页抓取工具是否被目标网站屏蔽并列入黑名单?这是因为这些网站使用了一些反抓取技术。现在就来了解这些技术以及如何抵制它们。

无需黑名单即可抓取网页

网络抓取技术已经取得了长足进步,帮助大量企业扩大规模并从数据中获取有用的见解。只要您感兴趣的数据可以在网上找到,且不在付费防火墙后面,您就可以使用网络抓取工具将其抓取。

不过,网站抓取的难度各不相同,这取决于阻止抓取的反抓取技术。虽然有些网站对网络抓取工具来说很麻烦,但事实上,只要你知道用于检测机器人流量的技术,你仍然可以抓取它们而不会被列入黑名单。

在本文中,您将了解如何防止网站检测和阻止您的网络抓取工具。我将讨论网站使用的反抓取技术以及如何绕过它们以成功抓取您选择的网站。但在此之前,让我们先简要了解一下 robots.txt 文件。


Robots.txt 文件 – 概述

robots.txt 文件

robots.txt 是 robots 专属标准或 robots 排除协议的另一个名称。它是网站用来与网络爬虫、抓取工具和其他网络自动化机器人进行通信的文件。它指定了网站上机器人应该访问的区域和不应该访问的区域。

它还可用于与特定机器人进行通信。对于需要与网络机器人通信的网站,他们会在网站根目录创建一个 robots.txt 文件。(https://www.luminati.io/robots )。流行代理网络Luminatirobots.txt 内容如下。

用户代理: *
不允许:/lum/
不允许:/lp/*
禁止:/www/*.html
禁止:/use_cases/fintech
主办方:luminati.io
站点地图:https://luminati.io/sitemap.xml

从上面可以看出,有些 URL/路径是它不想让网络爬虫/抓取工具访问的。它甚至指定了其站点地图的链接。要了解使用 robots.txt 文件进行通信的标准,请访问robots.txt 网站。不想被抓取的网站会在其 robots.txt 文件中传达这些信息。

虽然 Google、Bing、Yandex 等搜索引擎和其他一些网页抓取公司尊重网站的 robots.txt 文件,但大多数网页抓取工具(例如电子邮件收集器、安全漏洞检查机器人和许多其他机器人)并不尊重文件中的指令。即使您不尊重要抓取的网站的 robots.txt,我还是建议您保持礼貌和温和 – 避免在短时间内向网站发送大量请求。


防爬虫技术

防爬虫技术

网站使用的反抓取技术多种多样,新技术正在积极开发和引入。另一方面,网络抓取工具则处于领先地位,正在寻找绕过这些技术并在不被列入黑名单的情况下进行抓取的技术。以下列表包含流行的反抓取技术及其解决方案。一些网站几乎使用了所有这些技术的组合。


  • IP 跟踪和阻止

网站使用的最流行的反爬取技术是 IP 跟踪。对于服务器收到的每个请求,网站都会记录发送请求的 IP 地址。如果他们发现来自单个 IP 地址的请求过多,那么该 IP 地址可能是机器人的 IP 地址。

大多数复杂网站都有请求限制,通常为每分钟 10 次,每小时 600 次。如果你发送的请求超过这个数量,你的流量将被怀疑是机器人流量,当这种情况发生时,你的IP 地址将被阻止访问该网站。

IP 追踪

这种封锁通常是暂时的,除了少数情况可能是永久性的。但正如你所知,网页抓取需要你发送大量请求,这些请求的数量超过了人类可以发送的数量,因此你肯定会超出这些限制。那么你该怎么做才能绕过这种技术呢?

如何绕过

绕过 IP 封锁的最有效方法是使用代理。代理会屏蔽您的 IP 并将不同的 IP 地址附加到您的请求,从而允许您匿名浏览互联网。您拥有的 IP 数量决定了您可以抓取的规模。

对于网页抓取,建议使用代理池,因为它有助于IP 轮换,避免反复使用同一个 IP。这应该可以让你远离 IP 封锁。如果你可以自己处理代理管理和轮换,你可以使用专用代理。对于初学者来说,代理 API 效果更好,但它们更昂贵。


  • AJAX

AJAX 代表异步 JavaScript 和 XML。它是网站在客户端使用的一组技术,用于创建响应式异步 Web 应用程序,并且不需要刷新页面即可从服务器加载数据 – 这要归功于 JavaScript。

这种技术对网络抓取工具来说是一个挑战,因为大多数流行的网络抓取工具(包括Scrapy)都不呈现 JavaScript,因此不适合抓取 Ajaxified 网站。

Youtube 视频

这是因为 Ajax 化网站在 HTML 加载后才加载数据。如果您使用 Scrapy 发送请求,并且它喜欢,您将获得没有所需数据的 HTML。对于使用 AJAX 功能抓取网站,您需要一种执行和呈现 JavaScript 的方法,以便仅在将所需数据添加到页面后才进行抓取。

如何绕过

为了抓取 JavaScript 特色网站的数据,您的浏览器需要具有渲染功能。无头浏览器可以实现这一功能。无头浏览器是没有图形用户界面的浏览器,用于自动化测试。无头浏览器的示例包括无头 Chrome 和 PhantomJS。为了自动化这些浏览器,您需要一个浏览器自动化工具,例如Selenium。有了它,您可以控制浏览器,让它们填写表单、单击按钮并执行 JavaScript 代码片段。


  • 浏览器指纹

网站追踪用户的方式基本上有三种:通过 IP、cookie 和浏览器指纹。如果您不知道,网站可以通过获取有关您的浏览器/抓取工具的信息,即使在切换 IP 后也能唯一地识别您的网络抓取工具。浏览器指纹识别使用浏览器设置和属性来识别唯一设备。

指纹识别基本上有两种类型:静态和动态。静态指纹识别从请求标头获取其足迹数据,而动态指纹识别使用 JavaScript 获取浏览器信息,例如字体、插件、颜色深度、屏幕尺寸等等。

浏览器指纹

当使用 Scrapy 或其他不渲染 JavaScript 的工具时,您可以免受动态指纹识别的影响,因为它们不渲染 JavaScript。但是,如果指纹识别模块未执行,某些网站可能会禁止请求。在这种情况下,您必须使用 Selenium 或其他浏览器自动化工具。

如何绕过

对于积极参与浏览器指纹识别的网站,您必须为其提供指纹,否则您将被拒绝访问。最好的办法是提供虚假数据。对于您的请求标头,请确保您的网络抓取工具发送其中一个流行浏览器的用户代理。

它还应该发送 Accept 和 Accept-Language 的数据,并且值应该与您使用的用户代理的值相对应。发送标头的顺序很重要。为了防止动态浏览器指纹识别,请使用 Selenium 在不同的浏览器之间轮换。但是,请避免使用 PhantomJS,因为它很容易被检测到。


  • 验证码

CAPTCHA 是完全自动化的公共图灵测试的缩写,用于区分计算机和人类。当网站怀疑流量来自机器人时,就会进行此测试。通常,它要求您识别图像或图像组的内容。当网站收到太多请求时,就会出现验证码,这是网络爬虫、抓取工具和其他网络机器人的典型特征。

当您的网络抓取请求触发验证码时,您必须解决它才能继续抓取;您必须使用其他技术,而这些技术将会中断您已经开始的进程。

验证码

解决验证码是一项艰巨的任务,因为您需要具备计算机视觉、人工智能和机器学习技能。事实上,一些验证码已被证明目前无法使用自动化手段解决。当谈到验证码时,最好避免它们而不是解决它们。你如何解决验证码问题?

如何绕过

防止出现验证码的解决方案之一是使用原始 IP。住宅 IP 池是最好的选择之一,因为它们无法作为代理检测到,因此不会留下任何怀疑的余地。增加请求之间的时间间隔,进而减少您在一分钟内从单个 IP 发送的请求数量,将减少验证码的发生。

即使经过所有这些,验证码仍然可能发生。当它被触发时,您需要一个验证码求解器来解决验证码以绕过它们。2Captcha是市场上流行的选择之一。它工作得很好,但它是一个付费工具。


  • 登录

网上的内容基本上分为两种类型:一种是无需登录即可抓取的内容,另一种是需要登录才能抓取的内容。抓取需要登录的网站并没有太大区别,但它会带来新的挑战,你必须意识到这一点。首先,你如何处理登录和会话?当你登录帐户时,你也无法为每个请求轮换 IP,因为这会引起怀疑和验证码。此外,从单个帐户发送的请求数量也有限制,否则该帐户将被标记为垃圾邮件。

此外,根据您在目标网站上的帐户的重要性,在此过程中丢失帐户的想法可能会成为令人担忧的原因。事实是,与无需登录的网站相比,从需要登录的网站抓取数据需要格外小心。

如何绕过

如果您不知道如何登录,请查看 GitHub 托管博客上的这篇文章。通常,您需要登录,然后保存返回的 cookie。保存 cookie 后,您可以抓取,因为它会让您保持登录状态,并且会话将得到维护。对于这样的网站,重要的是您要知道,有时轮换 IP 的代理是最好的。此外,您可能希望拥有多个帐户来轮换帐户,但请确保保留它们的 cookie 并相应地使用它们。


  • 蜜罐陷阱

网站已经开发出一种技术来诱骗网络抓取工具和爬虫访问普通网络用户无法看到但自动化机器人可以访问的 URL。这种技术被称为蜜罐陷阱。该技术涉及使用 CSS 属性隐藏页面上的链接,使它们对人类访问者不可见。这涉及在链接样式中使用visibility:hidden 或 display:none。有些将链接的颜色设置为与页面背景的颜色相同。这样,任何对该链接的访问都会自动标记为流量机器人来源并阻止访问。

蜜罐陷阱技术

如何绕过

在编写网页抓取工具的代码时,请确保检查链接,并通过检查可见性和显示值来确保普通用户能够看到它。此外,检查链接的颜色,确保它与页面背景的颜色不同。


有关请求被阻止的常见问题解答


网站实施反抓取技术这一事实意味着他们不支持这种行为。然而,一般来说,网页抓取并不是一项非法任务。然而,所涉及的技术细节以及你打算实现的目标可能会使它成为非法行为。阅读此 LinkedIn 博客,了解它如何既合法又非法。


  • 网站能成功防止抓取信息吗?

事实是,互联网上没有哪个网站可以完全阻止抓取。唯一的问题是,它会让从其网页抓取内容变得困难和缺乏吸引力。但是,只要有正确的工具、技术技能和经验,没有哪个网站可以阻止抓取内容。


  • 验证码解答器有用吗?

验证码解答器可以解决大量验证码问题。但是,有些验证码很难在不受干扰的情况下破解,因此验证码解答工具会向互联网用户付费,以帮助他们解决这些验证码。


  • 网站如何检测网络爬虫?

如果您想知道网站如何区分机器人流量和人类流量,那么您需要知道它们的区别。网站使用 IP 跟踪、浏览器指纹识别、cookie 和蜜罐的组合来检测机器人流量。如果您能防范所有这些,您的机器人将无法被检测到。


  • 我应该使用现成的机器人还是定制开发一个机器人来完成我的网络抓取任务?

除非您能够考虑到本页上突出显示的所有事项,否则使用现有的网络抓取工具是最好的。但是,您必须考虑成本。自己开发机器人的优势在于您可以添加独特的功能 – 而且可以为您节省资金。


结论

如今,网站越来越难做。过去,一个简单的网页抓取工具就能搞定一切,而现在,你必须应对 IP 跟踪、cookie 跟踪、浏览器指纹识别、蜜罐和验证码。如果你知道如何绕过所有这些挑战,那么你将成功抓取网站,而不会被列入黑名单或请求被阻止。


chcrazy

Share

发表回复