更新时间:2022-11-22 来源:黑马程序员 浏览量:
随着网络爬虫技术的普及,互联网中出现了越来越多的网络爬虫,既有为搜索引擎采集数据的网络爬虫,也有很多其他的开发者自己编写的网络爬虫。对于一个内容型驱动的网站而言,被网络爬虫访问是不可避免的。
尽管网络爬虫履行着Robots协议,但是很多网络爬虫的抓取行为不太合理,经常同时发送上百个请求重复访问网站。这种抓取行为会给网站的服务器增加巨大的处理开销,轻则降低网站的访问速度,重则导致网站无法被访问,给网站造成一定的压力。
因此,网站管理员会根据网络爬虫的行为特点,从来访的客户端程序中甄选出网络爬虫,并采取一些防爬虫措施来阻止网络爬虫的访问。与此同时,网络爬虫会采取一些应对策略继续访问网站,常见的应对策略包括添加User-Agent字段、降低访问频率、设置代理服务器、识别验证码,关于这几种应对策略的介绍如下。
浏览器在访问网站时会携带固定的User-Agent(用户代理,用于描述浏览器的类型及版本、操作系统及版本、浏览器插件、浏览器语言等信息),向网站表明自己的真实身份。
网络爬虫每次访问网站时可以模仿浏览器的上述行为,也就是在请求网页时携带User-Agent,将自己伪装成一个浏览器,如此便可以绕过网站的检测,避免出现被网站服务器
直接拒绝访问的情况。
如果同一账户在较短的时间内多次访问了网站,那么网站运维人员会推断此种访问行为可能是网络爬虫的行为,并将该账户加入黑名单以禁止其访问网站。为防止网站运维人员从
访问量上推断出网络爬虫的身份,可以降低网络爬虫访问网站的频率。不过,这种方式会降低网络爬虫的抓取效率。为了弥补这个不足,可以适当地调整一些操作,如让网络爬虫每抓
取一次页面数据就休息几秒,或者限制每天抓取的网页的数量。
网络爬虫在访问网站时若反复使用同一IP地址,则极易被网站识别身份后屏蔽、阻止、封禁等。此时可以在网络爬虫和Web服务器之间设置代理服务器。有了代理服务器之后,网
络爬虫会先将请求发送给代理服务器,代理服务器再转发给服务器,这时服务器记录的是代理服务器的IP地址(简称代理IP),而不是网络爬虫所在设备的IP地址。
互联网中有一些网站提供了大量的代理IP,可以将这些代理IP进行存储,以备不时之需。不过,很多代理IP的使用寿命非常短,需要通过一套完整的机制校验已有代理IP的有效性。
有些网站在检测到某个客户端的IP地址访问次数过于频繁时,会要求该客户端进行登录验证,并随机提供一个验证码。为了应对这种突发情况,网络爬虫除了要输入正确的账户密
码之外,还要像人类一样通过滑动或点击行为识别验证码,如此才能继续访问网站。由于验证码的种类较多,不同的验证码需要采用不同的技术进行识别,具有一定的技术难度。