张海++刘晓冬
[摘要]网络爬虫是搜索引擎和网站常用的搜索技术,它在为用户提高高效便利的搜索服务的同时也产生了大量的网络流量,这些大量的网络流量既占用了网络资源,又对网站性能产生了负面影响。对于内容驱动型网站而言,网络爬虫的造访是无法避免的,但可以通过分析网络爬虫的特点进而采取相应的应对措施。
[关键词]网络爬虫;User-Agent;网络策略
[DOI]10.13939/j.cnki.zgsc.2016.23.077
1引言
随着科技的发展,大众正面临着一种信息爆炸的局面。在巨量数据面前,大众面临着一种尴尬局面,那就是互联网中有大量的对自己有用的数据,但是怎样能正确和便捷的获取到这些数据存在着困难。搜索引擎的出现很好地解决了这种局面,让大众通过搜索引擎搜索自己想要的数据。在互联网的搜索引擎和网站中,目前最常用的是网络爬虫技术。任何事物都有正反两个面,网络爬虫的出现也印证了这个说法。网络爬虫在给人们提供搜索便利的同时也占用了大量的网络带宽,很多网站的访问流量构成当中,爬虫带来的流量要远远超过真实用户访问流量,甚至爬虫流量要高出真实流量一个数量级,因此应对网络爬虫是一个值得网站开发者长期探索和解决的问题。
2网络爬虫概述
网络爬虫也被称为网络机器人,是一种能够“自动化浏览网络” 的程序,通过它可以在互联网上自动抓取内容。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。早期的爬虫主要功能是索引网站中的文本内容,随着技术的发展,爬虫的功能也越来越强,例如对图片、视屏与内容的关联,对各种数据格式(如doc、xls、pdf)的解析等。
有关分析数据显示,网站流量中有高达60%可能是由网络爬虫产生的,而这些爬虫则是由用户或其他程序控制,并可能模拟人类的Web访问行为。几乎所有在线业务都可能受到各种类型的爬虫流量的影响。这可能包括抓取内容或价格信息的爬虫、购买限量供应商品及服务而使合法客户无法正常购买的“交易”爬虫、用欺骗手段增加广告收入的自动“点击”爬虫等。另外,因为搜索引擎的流行,网络爬虫实际已经成了应用很普及的网络技术,除了专门做搜索的Google、Yahoo、微软、百度等公司以外,几乎每个大型门户网站都有自己的搜索引擎,除此以外数量繁多的中小型网站也都有自己的搜索引擎,所以说对于处于互联网中的网站来说,受到网络爬虫的光顾是不可避免的。对于一些技术成熟且智能化水平高的搜索引擎来说,爬虫的爬取频率设置比较合理,对网站资源消耗比较少,但是很多设计水平差的网络爬虫,其对网页爬取能力很低,经常并发几十上百个请求循环重复抓取,这种爬虫对中小型网站的影响往往是致命的,特别是一些缺乏爬虫编写经验的程序员写出来的爬虫破坏力极强。
3网络爬虫流量的应对措施
3.1手工识别拒绝爬虫的访问
这种方法主要是针对爬虫的来源IP进行封堵,通过netstat检查网站主机的80端口,察看80端口的IP连接数量,通过连接数量的多少确认网络爬虫的来源IP,这种方法主要应用了网络爬虫并发连接数量非常高的特点。在确定来源IP后可以通过防火墙来拒绝网络爬虫对网站的访问。
3.2通过User-Agent信息识别爬虫
网络爬虫并不是全部具备高并发连接的特点,有时候网络爬虫并不会采用高并发来进行网站内容的爬取,这样一般不容易通过手工方法识别;同时有些网络爬虫来源IP分布范围很大,很难采取封锁IP段的手段来解决问题。它们通常采用以爬虫数量取胜的方法,即通过大量爬虫分别有限爬取网页的办法,这些小爬虫单独爬取的量都不高,所以很难准确识别其IP。这种情况下我们可以通过User-Agent信息来识别爬虫。这是应用了爬虫在爬取网页时会声明自己的User-Agent信息,我们通过分析User-Agent信息来识别爬虫。这种方法实施简单效果也非常好,它可以对特定的爬虫进行封锁,也可以对编程语言中的HTTP类库进行封锁,这样可以避免无用爬虫对网站的影响。同时我们还可以采用一种更高级一点的方法在不封锁特定爬虫的情况下,通过降低爬虫的请求频率来减轻爬虫对网站性能的影响。
3.3通过网站流量统计系统和日志分析来识别爬虫
有些爬虫会通过修改User-Agent信息来伪装自己,把自己伪装成一个真实浏览器的User-Agent信息。这种情况下我们就无法通过User-Agent信息识别爬虫了,但是我们可以通过网站流量系统记录的真实用户访问IP来进行识别。
当前主流的网站流量统计系统经常采用两种实现策略:一种策略是在网页里面嵌入一段JavaScript代码,这段JavaScript代码会向特定的统计服务器发送请求的方式记录访问量;另一种策略是直接分析服务器日志,来统计网站访问量。一般情况下,嵌入JavaScript代码的方式统计的网站流量应该高于分析服务器日志统计的网站流量,这是因为用户浏览器会有缓存,不是每次真实用户访问都会触发服务器的处理。
在进行服务器日志分析时,我们可以采用服务器日志分析软件,好的分析软件可以使我们的分析工作进行的事半功倍。通过日志分析软件的分析和识别功能,可以对网站的IIS、Apache、Nginx等进行识别和分类分析并给出分析结果。
通过流量统计系统一般可以得到用户真实的访问IP。正常情况下爬虫是无法执行网页里面的JavaScript代码片段的。所以我们可以用流量统计系统记录的IP与服务器程序日志记录的IP地址进行比对,如果服务器日志里面某个IP发起了大量的请求,在流量统计系统里面却根本找不到相关的记录,或者能找到访问量却与服务器日志里面的统计量出入很大,那么基本可以确定这就是网络爬虫。
3.4通过设置网络策略实现网站实时反爬虫
通过分析日志的方式来识别网页爬虫只是一种被动的防爬虫方法,它永远滞后与爬虫带来的危害,通过防火墙可以实现一个实时的反爬虫策略。如果一个恶意爬虫非要针对某一网站进行蓄谋的爬取,那么它完全可能会采用分布式爬取的策略来进行,比如通过成百上千个代理服务器对目标网站进行大频率的爬取,从而导致目标网站无法相应正常访问,那么再进行日志分析解决问题就显得非常被动和应对滞后。所以必须采取实时反爬虫策略,要能够动态的实时识别和封锁爬虫的访问。
4结论
科学技术总是在不停地往前发展,这些技术就像矛和盾,总是存在此消彼长的状态,随着技术的进步,攻与防的战斗也在向纵深发展。对于网络爬虫不能只是一味地封堵,比较可行的方法是进行疏堵结合,通过更全面的超越简单拦截的多样化策略,更好地控制爬虫流量,将其负面效应减到最低状态。
参考文献:
[1]詹恒飞,杨岳湘,方宏.Nutch分布式网络爬虫研究与优化[J],计算机科学与探索,2011(1).
[2]李纪欣,王康,周立发,等.Google Protobuf在Linux Socket通讯中的应用[J],电脑开发与应用,2013(4).