开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段:爬虫识别-熟悉八个指标】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/673/detail/11684
爬虫识别-熟悉八个指标
内容介绍:
一、 课程计划
二、 反爬虫 Rulecompute 功能描述
三、 课程总结
一、 课程计划
到目前为止,回顾整个流程,整个流程中数据预处理阶段已经完成,
然后再看总的流程,总的流程3-1、3-4数据预处理彻底结束以后,接下来开始进行第5步,5-1、5-2和6,此过程就是进行实时计算(爬虫识别),使用到的基础是 SparkStreaming。
也就是进入了第5个阶段。如下是第5个阶段的课程计划,首先先熟悉反爬虫指标的作用。
第五阶段
课程计划
1、熟悉反爬虫指标
2、从 kafka 对接 DataProcess 数据
3、数据分割封装
4、加载数据库规则
5、按 IP 段聚合-5分钟内的 IP 段( IP 前两位)访问量
6、按 IP 地址聚合-某个 IP .5分钟内总访问量
7、按 IP 地址聚合某个 IP .5分钟内的关键页面访问总量
8、按 IP 地址聚合﹣某个 IP .5分钟内的 UA 种类数统计
9、按 IP 地址聚合-某个 IP ,5分钟内查询不同行程的次数
10、按 IP 地址聚合﹣某个 IP ,5分钟内访问关键页面的 Cookie 数
10、按 IP 地址聚合﹣某个 IP ,5分钟内访问关键页面最短访问间隔
10、按 IP 地址聚合﹣某个 IP ,5分钟内小于最短访问间隔(自设)的关键页面查询次数
回到数据处理的流程,要做的事情是爬虫的识别。前面已经处理完成数据,现在需要去识别,问题是用什么样的指标(标准)来衡量它一定是爬虫?上述有8个指标,操作之前要先熟悉一下每个指标的意思以及为什么要用这个指标,熟悉指标以后,开始读取数据。从 Kafka 中对接 DateProcess 数据,把数据读取出来,具体是图上的5-1步骤:从 Kafka 中把刚刚第4步处理好的信息,读过来读到程序当中,即5-1读取数据,也就是第二步。第3步是对数据进行分割并且进行封装。问题是这里面为什么要进行封装,原因是前面第4步在推进去时又把数据进行了拼接,拼接之后推到 Kafka 中是一条数据,然后读出来数据还是一条,一条数据使用不太方便,用颈塞子颈拼接的。需要把它用颈塞子颈拆封,拆封完之后再把它封装成 ProcessDate,在数据预处理阶段封装成 ProcessDate,在里面调用它点的方式能得到一个一个的数据,在识别的过程中读过来一条数据进行拆封,拆封完之后还把它封装成 ProcessDate,这样再用点的方式去调用它的属性就能得到一个一个的数据,这是第3步。再往后是加载数据库的规则。规则就是上图的第5-2步,在上面我们会用到一些指标,如关键页面、过滤规则等等类似于此种指标,我们需要从数据库中把它读取过来,5-2读到我们的实时计算程序当中。读过来之后,我们利用数据以及读过来的规则去判断它是否是爬虫,关键页面还有规则,规则中包括结合这8个指标中的一些规则。从第5步一直到第12步是这8个指标一个一个的实现,也就是说有8个指标,前面的熟悉了哪个指标,后面就要把每一个指标的每一个数据都把它算出来,算的过程会使用到数据库中的数据。
二、 反爬虫 Rulecompute 功能描述
1. 模块功能
爬虫识别的功能用 Rulecompute 来表示,也就是说创建的数据处理方法叫 Rulecompute。
反爬虫功能描述中一共要实现8个指标,分别是以下八个:
反爬虫统计字段规则:基于 IP 段的统计
单位时间内的 IP 段访问量(前两位)
以192.168.56.112为例,IP 段是192.168
以244.12.134.56为例,IP 段是244.12
要判断发过来的数据的这个批次中的 IP 段有多少,每一个IP段有多少数据,要统计IP段的原因是我们国内,全国全球、每一个地区、每一个国家、每一个省市的IP段都是不一样的,如果把IP段统计出来,就知道这个IP段在此批次中有多少个用户进行了访问,比如说192.168是北京的,统计完成后就知道北京此批次中有多少个用户进行了访问;假设说244.12是伦敦的,统计完成后就知道伦敦有多少个用户来进行访问。所以单位时间内的IP段访问量此功能就是来统计某一个地区有多少个用户来进行访问。
基于 IP 的统计
后面2-8都是基于某一个IP的。第1个是单位时间内的访问总量。举一个例子,比如说在5分钟时间范围内,某一个IP访问了多少次,就是说这个服务器(网站)5分钟之内被某一个IP访问了多少次,次数越多它越可能是爬虫。假如已经给它设置了一个阈值(100次),某一个IP 5分钟之内访问了100次这个官网,那么它很可能是爬虫或者涉嫌是爬虫,这是第一个指标。计算出访问的数量越高,是爬虫的可能性越大,这是第二个指标。接下来是某一个IP单位时间内(5分钟范围内)关键页面的访问总量,就是上面不管是不是关键页面,只要访问了就计算。下面的指标是必须访问关键页面,访问普通页面和一般页面都不计算,只统计关键页面的访问总量。即此IP在5分钟时间范围内访问了多少次,访问次数越多,它是爬虫的可能性越大。注意:这里面首先要说明哪些是关键页面,回顾上面的加载数据库规则。其中有一部分就是说明关键页面是什么,用 URL 匹配某个关键页面是否能匹配到?匹配成功此页面就是关键页面。关键页面的总量越多,它是爬虫的可能性越大。再往后看某一个IP单位时间范围内的 UA 种类统计数量,就是说如果它是爬虫,有可能为了防止被抓住,频繁的切换 UA。要统计某一个IP 在5分钟时间范围内,UA出现的种类,如果出现的次数越多,表示它很有可能是爬虫。只有爬虫才会反反复复的去切换UA的种类,正常用户是不会如此操作,因此这也是判断它是否是爬虫的指标。在往后某一个IP单位时间内(5分钟),访问的关键页面的 Cookie数,前提是它必须是关键页面。要统计 Cookie出现的数量,这个数量肯定要去重。只有爬虫才会频繁的切换Cookie,前面的 UA 也要去重。一个浏览器访问了10次相当于只有一个浏览器(只有一个客户端),换了另一个浏览器,就是换了另一个 UA,这就算作第2次。Cookie 要去重,UA 也要去重。
再往后看,某一个IP 5分钟时间范围内查询不同行程的次数,也就是说查询不同行程的次数越多,是爬虫的可能性越大。比如说从北京到上海,从上海到南京,南京到苏州,苏州到广州,广州到深圳,深圳到北京,5分钟时间范围内此IP来来回回查询次数越多,它是爬虫的可能性越大,种类越多可能性越大。不同行程如从北京到上海查询了10次,查询了10次也作为一次(去重),需要的是不同行程的次数,相同行程的作为一次(去重)。
再往后看,单位时间内的关键页面最短访问间隔。爬虫作为程序速度非常快,也就是说假设从第1次、第2次、到第10次,10次之中有9个间隔,如果是爬虫,这9个间隔的时间比较短,就找最短的那个,间隔时间越小是爬虫的可能性越大,这是一个指标。如果是正常人去访问,正常人的时间间隔比较大,操作过程中可能要持续两三秒去切换,是爬虫的可能性就会非常小,所以时间间隔越小是爬虫的可能性越大。
再往后看,,某一个IP在单位时间内(5分钟)小于最短访问间隔(自设)的关键页面查询次数,假设说给它设置了两秒钟,小于两秒钟的,而且是关键页面的的查询次数,假设设置成两秒钟或一秒钟,小于这个值的次数越多,是爬虫的可能性越大。如果是正常人,设置两秒钟,正常人可能反反复复的访问,2秒钟、1秒钟、5秒钟、8秒钟都有可能,小于自设的时间的次数会非常少。爬虫每一次都非常快,10次查询有9个间隔,而9个间隔中可能所有都小于两秒,那它是爬虫的可能性就非常大
单位时间内的访问总量
单位时间内的关键页面访问总量
单位时间内的 UA 种类数统计
单位时间内访问关键页面的 Cookie 数单位时间内查询不同行程的次数
单位时间内的关键页面最短访问间隔
单位时间内小于最短访问间隔(自设)的关键页面查询次数
三、 课程总结
以上就是爬虫识别8个指标的具体实践思路。要识别它是否是爬虫可以通过这8个指标来进行判断,不能仅仅通过某一个指标就断定它是爬虫,要综合来判断,这8个是确定它是否是爬虫的依据。