开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段:爬虫识别-爬虫识别详细流程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/673/detail/11686
爬虫识别-爬虫识别详细流程
内容介绍:
一、 爬虫识别流程-读取封装及指标计算
二、 爬虫识别流程-爬虫识别
三、 爬虫识别流程-数据入库
为何要详细介绍爬虫识别流程,在我们做项目的时候,首先要做一个项目规划即我们要实现一个什么样的目标,我们的目标就是爬虫识别然后写入 Redis,如果我们要实现这个目标,需要按什么项目顺序去做呢,每一步要规划好(如图步骤顺序),规划好后按这个顺序、流程来做,不能摸着石头过河。
接下来仔细学习这个流程,这个流程再细化一下,怎样计算指标,计算完后按怎样的顺序。
一、爬虫识别流程-读取封装及指标计算
首先灰色的部分是我们做指标计算的过程,这里面先要从 Kafuka 当中把数据读到程序里面来,读完数据后,得到的是一批数据,然后针对这批数据进行封装,封装成 Process.D,通过点的方式拿出去,其次学习指标计算,即计算这八个指标
先看第一个指标 IP 段访问量,尤其看橙色箭头是从一批数据中得出的
然后在计算第二个-某个 IP5分钟内访问总量,也是从一批数据中读取的,第三个某个 IP5分钟内关键页访问总量,也是从一批数据中读取的,以及第四个同样也是如此,也即同一批数据用了很多次,而八个流程中可换顺序,但是这几个顺序不能换
从这一批数据衍生出来的还会有5、6、7、8等等,1到8是反复用这批数据,然后计算出来的结果,到这我们就得到了八个结果集即八个指标对应的结果集,然后再从这批数据当中拿出每一条数据,每一条数据拿到,八个结果集也有了,然后下一步提取结果,这八个结果集每一个都算好了,左侧每一条数据对应的值在八个结果集中肯定是有的,所以我要做结果提取
接下来蓝色部分,每一条数据补过来的一条数据,比如192.168.34.11,A,B,C,后面有一堆数据,其次,是刚刚计算完第八个结果,接下来就是要在这八个结果集当中,把我192.168.34.11,A,B,C,这个 IP,每一条数据都跑一遍,也就说找到一条数据的 IP,在这八个结果当中抽取数据。抽取什么数据?如图橙色部分 ,肯定得有个 IP还得有个总量,如某 IP5分钟内关键页访问总量,都是 IP 数量,都是一个IP加一个值,用192.168.34.11,A,B,C,这个 IP去抽取第一个IP段的量,把量拿出来,第二个也是把某IP5分钟内访问总量拿出来,第三个把第三个的量拿出来,第5、6、7、8个都是如此,把92.168.34.11,A,B,C,这个 IP 在八个结果集当中的量抽取出来。一条数据在八个结构机当中对应的值就抽取出来,如果有十条数据,那每一条数据都要总结。找到了8个结构及一条数据,对应8个结构结构及当中的量,这个量有什么用?来看这里面企业端还配置了8个指标的阈值,值拿到了,我在和数据库里面的这8个值去对比去对比,两个结果里,一个是企业端配的阈值,另外一个是一条数据在这8个结果里面的值。
二、爬虫识别流程-爬虫识别
得到这两个结果后,要去做指标碰撞,把这两个结果去碰撞对比,到底是多大,到底是超过没超过,没超过碰撞,碰撞完了以后我会要两个结果,第一个结果就是与选定与与否无关的一个结果集。什么叫做与选定与否无关,
流程当中这指标,前面有复选框可以选择也可以不选择,最后有选的和有没选的,而与选定与否无关,也就是说不管选不选都要,得分的一个结合集,如果与选定与否无关,若前面的值超过阈值,不管选没选中,后面就取分数,若没超过就给个零。第二个结果必须得是选定的得分结果集,如果数据超过了值,就拿分数,如果没选中的就不要了,选中的为前提,超过阈值,就拿分数,没超过的就不要这个值了,所以这个必须是选定的结果集,同时得是阈值超过的。算出来得这两个结果集有什么用呢,打分算法需要用到这两个结果集,即与选定与与否无关的一个结果集和选定的得分结果集,这俩结果集塞到打分算法里面,这个打分算法自动的就会给我们返回一个分数,打分算法已经写好了,根据结果集会自动返回一个分数,分数就数据计算出来的分数。数据计算出来的分数有了,要判断是不是爬虫,得有个爬虫的阈值,也就是流程中的11,就是最终的分界线,而得分就是根据数据算出来的
数据计算出来的分数有了,要判断是不是爬虫,得有个爬虫的阈值,在爬虫判断程序里,判断逻辑,如果得分儿大于爬虫阈值,那么我就返回一个 TURE,那就表示它是爬虫,如果我的分数小于爬虫阈值,那么我就返回一个 FALSE,那就表示它不是是爬虫。最后就得到了这个结论,到底是不是爬虫。
三、爬虫识别流程-数据入库
识别完以后再做数据的入库,知道了是不是爬虫,不是爬虫的不关心,就把非爬虫数据过滤掉,只保留爬虫数据,那爬虫数据里面有可能会有重复数据,再做个爬虫去重,去重完了以后,把它写到 Redis 里面就结束。
回顾总体过程,指标计算计算那八个结果,然后爬虫识别,实际上就是指标计算、最终打分,打完分后根据数据的分数和阈值的分数去判断它俩谁大,得出究竟是不是爬虫,知道是否是爬虫后,再去重,非爬虫过滤,然后写入Redis。