反反爬虫技术
爬虫软件是一种模拟浏览器的行为,是从指定网站抓取和保存网络数据的应用软件。爬虫软件提取出存在于网页上的数据,并以结构化的方式存储。主要活动于计算机网络通信模型中的传输层与应用层。传输层使用TCP/IP协议与目标Web服务器进行数据传输;应用层使用HTTP或HTTPS协议与目标Web服务器通信。由于传统的初级爬虫不使用任何隐藏伪装手段,在对站点发送大量请求时,会加重目标Web服务器的负担,且容易被服务器侦测。在大中型网站中,开发者会针对传统的初级爬虫制定一系列的反爬机制,如针对爬虫软件所处终端进行IP限制;针对请求报文中Header属性拦截爬虫软件;通过分析网站流量和日志统计分析过滤爬虫。爬虫开发者针对反爬虫机制,开发了一套反反爬虫机制,在爬取数据的过程中防止被目标站点拦截,开发者需最大限度地将爬虫模拟成真人行为,获取真实可靠的数据。
反反爬虫策略
降低访问频率
对目标站点连续访问不同网页,如果不限制爬虫的请求频率,爬虫的效率只会受到所处终端的处理能力和带宽的限制,因此爬虫的访问频率会非常高。通过增加线程的休眠时间,降低访问频率,实现模仿人为浏览的行为。
伪装用户代理
用户代理(User-Agent)是一种代表用户行为的属性,用于发送HTTP请求描述用户系统和浏览器信息。站点服务器通过获取报文中的User-Agent属性,给不同操作系统与浏览器发送不同页面。通常爬虫软件在请求数据时不会携带此属性字段,目标站点也因此可侦测与进行拦截。所以,爬虫脚本在请求时需在头部加入类似浏览器的User-Agent属性。
IP代理
爬虫脚本在访问请求的过程中,TCP报文会携带客户端的IP地址,站点服务器也因此可获取到客户端的IP地址。爬虫软件访问频率过高,站点服务器可对此IP地址进行暂时性的封禁。开发者在编写脚本时需要设置IP代理池。在多进程下,多个进程间使用不同的IP代理访问目标网站,绕过站点服务器IP地址字段的检测,加快爬取数据的效率。