基于决策树算法的爬虫识别技术
2018-01-24刘宇程学林
刘宇 程学林
摘要:网络爬虫指的是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。但是实际上爬虫还分为正规爬虫和非正规爬虫,所谓的正规爬虫就是通过正规途径和手段获取网站信息和数据,非正规爬虫又称为恶意爬虫,主要用于非法盗窃数据,给网站服务器增加负担以及偷窥一些敏感信息数据等。本文将会基于决策树算法设计一种新爬虫检测技术,并根据爬虫检测结果提供一些反爬机制,对恶意爬虫进行进行评屏蔽等,进而实现对网站和服务器以及部分数据,信息的保护,降低互联网资源重叠现象。
关键词:网络爬虫;爬虫检测;恶意爬虫;反爬虫
0引言
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。为了快速从互联网中获得大量目标数据,就需要编写一些脚本程序,按照一定规律批量获取数据,这就是所谓的爬虫,但是在一部分通过正常途径,即先请求网站Robot.tXt之后,再在不影响对方网站前提下,获取相关资料的正规爬虫之外,还有一些恶意爬虫,它们通常表现为无论网站是的Robot.txt是否允许爬虫爬取,都会强制性,批量性获取网站数据,同时会在短时间内大量的发起请求,还有一部分恶意爬虫会恶意制造虚假PV,模拟点击付费广告链接,批量检索网站禁止爬虫爬取信息,用于商业性质分析等。这类爬虫在给互联网带来巨大的机器流量同时,也会给网站带来极大的负担,使得网站性能大大降低,目前互联网内有40%-60%的流量来自爬虫或者相关机器流量,已经严重妨碍核威胁互联网相关的产业健康发展!
为了应对爬虫带来的危害,国内外相关学者和各大公司企业,教育机构甚至很多个人网站站长等,都对爬虫检测,识别等技术进行了深入的研究,例如目前常见的爬虫检测有判断请求的Headers,查看请求频率等众多方法。但是由于常见的这些检测方法并不能灵活快速的检测请求类型,所以本文将会基于决策树算法建立一种新的爬虫检测方式,同时做一些相关的反爬设计。
1请求与爬虫检测
对于网络爬虫的检测,其实就是对请求的分析,一般情况下判断一个请求是否是爬虫,通常是:
(1)单位时问内同一IP请求频率:如果在某一段时间内,某个IP发出大量请求,而这种请求又不是正常人工可以发出的(例如一分钟发出上千次请求等),那么可以基本判定该请求属于爬虫行为;
(2)单位时间内同一IP请求时间间隔:正常人为访问时,访问时间间隔是不固定的,但是很多时候爬虫的访问时间间隔是固定的或者在某段时间范围内,如果同一IP每次发起请求时间间隔都是在一个固定时间间隔内或者波动范围极小的时间间隔内,那么也可以基本判定该行为属于爬虫行为;
(3)User-Agent是否为常用浏览器User-Agent:通常情况下每个浏览器具有特定的User.Agent,以让服务器识别该请求是通过哪个浏覽器发起的,但是很多爬虫在设计时,并未设置User.Agent,所以如果非常见浏览器User-Agent或者带有编程语言名称的User-Agent基本可以判定为该行为是爬虫行为;
(4)请求是否为全部请求:一般情况一个网站如果有图片或者link标签等,这样打开一个网页通常会加载多个资源,如CSS,Js等,但是爬虫访问的时候,通常不会做这些额外的请求。所以当一个请求发起之后,只请求了页面源代码而未请求相关关联资源,那么可以基本判定,该请求是爬虫行为;
(5)是否请求robot:通常情况,爬虫都会请求Robot.txt,而用户是不会请求这个文档的,所以请求Robot.txt的通常为爬虫行为,当然也是有一部分爬虫不会请求该文件的,所以未请求该文档的并不代表非爬虫行为;
(6)请求时是否会带有Cookies:一般情况下爬虫请求页面的时候,都不会带有Cookies,而人为访问的时候,都会带有前一页面或者前一次访问的Cookies,所以在没有前一次Cookies的请求中,有极大可能是爬虫发起的请求;
(7)是否触发爬虫陷阱:通常情况下,爬虫陷阱指的是将Spider访问引入到能产生无限循环的页面,或者带人其他特殊页面中,正常情况下,人为访问是不会走人该陷阱的,而爬虫是“无思维”请求,所以极有可能会自动走入该陷阱。一般情况下走入该陷阱并在陷阱中无法跳出的行为是爬虫行为。endprint