您的网页抓取工具是否已被目标网站阻止并列入黑名单?那是因为这些网站正在使用某些反抓取技术。现在就来发现这些技术以及如何抵制它们。
Web抓取已经走过了一段漫长的道路,已经帮助许多企业扩大规模并从数据中获得有用的见解。如果您感兴趣的数据可以在网上找到,而不是在付费防火墙之后,您可以使用web scraper来获取这些数据。
但是,抓取的困难程度因网站而异,这取决于所采用的防止抓取的反抓取技术。虽然有些网站可能是网络抓取器的痛处,但事实是,只要你知道用于检测bot流量的技术,就可以将其抓取而不被列入黑名单。
在本文中,您将学习如何防止网站检测和阻止web爬虫。我将讨论网站使用的反抓取技术,以及如何绕过其他方法来成功抓取您选择的网站。但是在此之前,让我们看一下robots.txt文件的简要概述。
Robots.txt文件–概述
robots.txt是漫游器专有标准或漫游器排除协议的别称。它是网站用于与网络爬虫,抓取工具和其他网络自动化机器人进行通信的文件。它指定了机器人应访问的网站区域以及不应访问的区域。它也可以用于与特定的机器人进行通信。对于需要与网络机器人通信的网站,他们在其网站的根目录中创建了robots.txt文件。(https://www.luminati.io/robots)。的的robots.txt的内容Luminati,一个流行的代理网络,在下面。
用户代理:*
禁止:/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文件,但大多数网络抓取工具(例如电子邮件收集器和安全漏洞检查器bot)以及许多其他机器人均不遵守网站中的说明,文件。即使您不尊重要抓取的网站的robots.txt,我也建议您保持礼貌和彬彬有礼-避免在短时间内对网站提出大量要求。
目录
防爬虫技术
网站使用的防爬虫技术很多,并且正在积极开发和引入新技术。另一方面,Web抓取工具位于其游戏的顶端,他们正在寻找技术来绕过这些技术并在不被列入黑名单的情况下进行抓取。下面的列表包含流行的防抓取技术及其解决方案。一些站点几乎将它们全部组合使用。
- IP跟踪和阻止
网站使用的最流行的防抓取技术是IP跟踪。对于他们在服务器上收到的每个请求,他们都记录了用于发送请求的IP地址。当他们注意到来自单个IP地址的请求数量过多时,则该IP地址可能就是机器人的IP地址。大多数复杂的网站都有请求限制,通常是每分钟10个,每小时600个。如果您发送的流量超过此数量,则将怀疑您的流量是漫游器流量,并且在发生这种情况时,您的IP地址将被阻止访问该站点。
该块通常是暂时的,除非在某些情况下可能是永久的。但是,正如您所知,网络抓取要求您发送大量的请求,这些请求超过了人类可以发送的数量,因此,您肯定会超过这些限制。那您该怎么做才能绕开该技术?
绕过IP阻止的最有效方法是使用代理。代理会屏蔽您的IP,并为您的请求附加一个不同的IP地址,从而使您可以匿名浏览Internet。您拥有的IP数量决定了您可以抓取的规模。
对于Web抓取,建议使用代理池,因为它有利于IP轮换并且避免一遍又一遍地使用相同的IP。这应该使您远离IP阻止。如果您可以自己处理代理管理和轮换,则可以使用专用代理。对于初学者来说,代理API可以更好地工作,但价格昂贵。
- 如何使用带有CURL的旋转代理API和代理列表进行数据挖掘
- AJAX
AJAX代表异步JavaScript和XML。这是客户端网站用来创建异步Web应用程序的一组技术,这些应用程序具有响应能力,不需要刷新页面即可从服务器加载数据-这要归功于JavaScript。
由于大多数流行的Web抓取工具(包括Scrapy)都无法呈现JavaScript,因此不适合抓取Ajaxified网站,因此该技术对Web抓取工具构成了挑战。
这是因为Ajaxified网站已在HTML加载后加载数据。如果您使用Scrapy发送请求,您将获得返回的HTML,其中不包含必需的数据。为了使您能够抓取具有AJAX功能的网站,您需要一种执行和呈现JavaScript的方式,以便仅在将所需数据添加到页面后才进行刮擦。
为了抓取JavaScript特色网站的数据,您的浏览器需要具有渲染功能。一个无头的浏览器会做到这一点。无头浏览器是没有用于自动测试的图形用户界面的浏览器。无头浏览器的示例包括无头Chrome和PhantomJS。为了使这些浏览器中的任何一个自动化,您需要一个浏览器自动化工具,例如Selenium。借助它,您可以控制浏览器,让他们填写表单,单击按钮并执行JavaScript代码段。
- 浏览器指纹
网站基本上有3种跟踪用户的方式;通过其IP,Cookie和浏览器指纹。万一您不知道,即使通过获取有关您的浏览器/抓取器的信息切换IP后,网站也可以唯一地标识您的Web抓取器。浏览器指纹识别使用浏览器设置和属性来标识唯一的设备。
指纹基本上有两种类型-静态和动态。静态指纹从请求标头中获取足迹数据,而动态指纹使用JavaScript来获取浏览器信息,例如字体,插件,颜色深度,屏幕尺寸等。
当使用诸如Scrapy之类的工具或其他不呈现JavaScript的工具时,您可以免受动态指纹的影响,因为它们不呈现JavaScript。但是,如果在这种情况下无法执行指纹识别模块,则某些站点可以禁止请求,您必须使用Selenium或其他浏览器自动化工具。
- Selenium代理设置如何在Selenium上设置代理
对于正在积极参与浏览器指纹识别的网站,您必须为其提供其他指纹,否则将被拒绝访问。最好的办法是提供虚假数据。对于您的请求标头,请确保您的网络抓取工具发送了一种流行浏览器的User-Agent。
它还应发送“接受”和“接受语言”的数据,其值应与您使用的User-Agent的值相对应。您发送的标头的顺序很重要。为了防止动态浏览器指纹,请使用Selenium在不同的浏览器之间旋转。但是,请避免使用PhantomJS,因为它是可检测的。
- 如何防止浏览器指纹
- 验证码
CAPTCHA一词是完全自动化的公共Turing测试的缩写,旨在区分计算机和人类。当网站怀疑流量是由机器人发起时,这是网站进行的一项测试。通常,它要求您识别一个图像或一组图像的内容。当网站收到太多请求(典型的Web搜寻器,抓取工具和其他网络机器人)时,会出现验证码。
当您的网页抓取工具请求触发了Captcha的出现时,您必须解决它才能继续进行其他抓取操作;您必须使用其他技术来中断已经开始的过程。
验证码求解是一项艰巨的任务,因为您需要掌握计算机视觉,人工智能和机器学习的技能。实际上,目前已经证明某些Captcha无法使用自动手段解决。当涉及验证码时,最好避免使用它们而不是解决它们。您如何解决验证码的问题?
防止出现验证码的一种解决方案是使用原始IP。住宅IP池是最好的一些,因为它们无法作为代理检测到,因此也就没有怀疑的余地。增加请求之间的时间间隔,进而减少一分钟内从单个IP发送的请求数量,将减少Captcha的发生。即使所有这些,验证码仍然可能发生。触发时,您需要一个Captcha解算器来解决其他Captcha的问题以绕过它们。2Captcha是市场上最受欢迎的选择之一。它的效果相当好,但它是一种付费工具。
- 验证码与代理破解的最佳服务是什么?
- 登录
基本上有两种在线内容–无需登录即可刮取的内容和需要登录的内容。需要登录的剪贴站点没有太大区别,但可能带来新的挑战,您必须意识到它们。首先,您如何处理登录和会话?登录到帐户后,您也无法为每个请求轮换IP,因为这会触发您的验证码。在将单个帐户标记为垃圾邮件之前,可以从单个帐户发送的请求数量也受到限制。
另外,根据您在目标站点上的帐户的重要性,在此过程中丢失帐户的想法可能会引起关注。事实是,与不需要登录的网站相比,从需要登录的网站上抓取数据需要格外小心。
如果您不知道如何登录,请在GitHub托管博客上查看此文章。通常,您需要登录然后保存返回的cookie。保存Cookie后,您可以进行抓取,因为它将使您保持登录状态,并且会话将得以维护。对于这样的站点,重要的是要知道,有时轮换IP的代理是最好的。另外,您可能想在另一个帐户中拥有多个帐户来轮换帐户,但是请确保保留其cookie并相应地使用它们。
- 蜜罐陷阱
网站已经开发出一种技术,可以诱使Web爬虫和爬网程序访问常规Web用户不可见,但可以被自动化bot访问的URL。该技术称为蜜罐陷阱。该技术涉及使用CSS属性来隐藏页面上的链接,以使访问者无法看到它们。这涉及在链接的样式中使用visible:hidden或display:none。有些使链接的颜色与页面背景的颜色相同。这样,对链接的任何访问都将自动标记流量漫游器的发起和访问被阻止。
在为网页抓取器编写代码时,请确保它检查了链接,并通过检查价位的可见性和显示性对普通用户可见。另外,请检查链接的颜色,并确保它与页面背景的颜色不同。
有关请求被阻止的常见问题解答
- 网站抓取合法吗?
网站到位的事实是,反抓取技术意味着他们不支持它。但是,通常,网页抓取并不是非法任务。但是,所涉及的技术和您打算实现的目标可能使其非法。阅读此LinkedIn博客以了解它既合法又非法。
- 如何使用代理从Linkedin抓取数据
- 站点可以成功地防止爬虫吗?
事实是,互联网上没有任何站点可以完全防止爬取。唯一的问题是,从页面上抓取可能会变得困难且缺乏吸引力。但是,有了正确的工具和技术技能以及经验,任何站点都无法防止刮伤。
- Web爬虫实践,以避免常见的爬虫陷阱
- 验证码验证有效吗?
验证码验证可用于大量的验证码。但是,某些验证码很难在没有干扰的情况下破解,因此,验证码解决方案工具会向互联网用户付费,以帮助他们解决这些验证码。
- 抓取Google时防止禁令和验证码的代理
- 网站如何检测网络爬虫?
如果您想知道网站如何分辨出源自机器人的流量与源自人类的流量之间的区别,那么您需要知道它们之间的区别。网站结合使用IP跟踪,浏览器指纹,Cookie和蜜罐来检测机器人流量。如果您可以防止所有这些情况,那么您的机器人将无法被检测到。
- 5种检测IP地址是否是代理的方法
- 我应该使用现成的Bot还是自定义为我的Web抓取任务开发Bot?
除非您能够考虑此页面上突出显示的所有内容,否则最好使用现有的Web抓取工具。但是,您必须考虑成本。自己开发机器人的好处是您可以添加独特的功能-这样可以节省金钱。
结论
如今,网站开始变得困难。与过去简单的网络抓取工具可以完成工作不同,现在您必须处理IP跟踪,cookie跟踪,浏览器指纹识别,Honeypots和Captchas。如果您知道如何绕过所有这些挑战,那么您将成功抓取一个网站而不会被列入黑名单或阻止请求。