对反爬虫网站的应对策略

2017-07-11 08:02刘石磊
电脑知识与技术 2017年15期
关键词:网络爬虫

刘石磊

摘要:随着网络的发展和网络爬虫技术的普及,越来越多的个人用户使用了网络爬虫技术从网站获取信息,而过多的网络爬虫会对目标网站的运营造成一定的影响。某些网站为了防止自己的网站不被除搜索引擎以外的网络爬虫访问,使用了一些反爬虫技术。笔者探讨了一些常见的反爬虫措施以及对应用了该类机制的网站的进行爬虫活动的手段和策略。

关键词:网络爬虫;反爬虫;反反爬虫;抓取策略;分布式爬虫

1概述

随着时代的发展和社会的进步,互联网技术得到了空前的发展,与此同时,互联网容量已经达到了一个空前的规模据。搜索引擎巨头Google透露,在2012年时候,Google的网页爬虫Google bot每天都会经过大约200亿个网页,并且追踪着约300亿个独立的URL链接。此外,Google每个月的搜索请求接近1000亿次。而支撑这一切背后的技术,就是网络爬虫技术。

网络爬虫,通常又被称作网络蜘蛛(Web Spider),是一个可以自动在互联网上漫游并可以自动下载网页的程序或脚本。网络爬虫通常从一个称为种子集的URL集合开始运行,它首先将这些URL全部放入到一个有序的待爬行队列里,按照一定的顺序从中取出URL并下载所指向的页面,分析页面内容,提取新的URL并存人待爬行URL队列中,如此重复上面的过程,直到URL队列为空或满足某个爬行终止条件,从而遍历Web。该技术最早应用于搜索引擎之中,但是随着需求的增加和技术的普及,出现了基于某种特殊目的的个人定制化爬虫,例如对微博内容的爬虫、對CSDN的爬虫等。人们为了收集某些需要的信息,通常会定制好自己的爬虫,并对目标网站进行抓取。

但是,非搜索引擎爬虫会带来一些潜在性问题:第一,爬虫的访问速度要远高于正常人类,相应的,爬虫也会占用更多的目标服务器带宽,如果大量的用户都使用了网络爬虫来抓取同一个目标网站,那么海量的、高并发的非人类用户会显著地增加目标网站的服务器的负载,甚至影响其他正常人类用户的对目标网站的访问速度,导致网络拥堵。第二,网站的内容是网站提供商的收益来源,网络供应商出于保护数据的目的,不希望自己的网站被非搜索引擎之外的爬虫访问。因为普通用户只会访问网站部分内容,而爬虫会对全站所有的网页节点进行扫描,从而遍历网站中的数据,降低了网站的竞争力。因此许多网站建立了反爬虫机制来抵抗网络爬虫。

反爬虫机制fAnti-Spider),即一系列反爬虫措施的集合。反爬虫机制通过预处理请求头、封锁IP、异步加载、使用加密JS算法、设置验证码、等措施达到封锁爬虫的目的。本文探讨了一些常见的反爬虫措施以及对应用了该类机制的网站的进行爬虫活动的手段和策略。

2常见的反爬虫措施

2.1预处理请求头

User-agent是HTTP协议的中的一个字段,其作用是描述发出HTYP请求的终端的一些信息。服务器通常通过这个字段来判断访问网站的对象。对于每个浏览器,访问网站都会有其固定的user agent,通常以“Mozilla/4.0”开头,而网络爬虫的User-agent一般为空缺的,或者以“Serapy”、“Python”等常见爬虫框架/工具的名称开头,所以可以做出如下策略:审查访问的请求头,如果请求头是常规浏览器的形式,判定为人类用户,如果是其他爬虫框架的形式,则判定为机器人用户,返回403错误,禁止访问。预处理请求头是网站管理者技术实现最容易,且爬虫编写者最容易忽视的技术。

猜你喜欢
网络爬虫
炼铁厂铁量网页数据获取系统的设计与实现