开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段:第五阶段总结】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/673/detail/11715
第五阶段总结
内容介绍:
一、指标的概念理解
二、指标的计算
一、指标的概念理解
爬虫识别指标(依据)8个已全部讲完,查看流程内部的八个指标数据读取,封装完8个指标已全部做完。计算完成后查看讲义。观察到第五个阶段已经结束,讲第五个阶段进行总结和回顾。
第五单元课程计划:
1、熟悉反爬虫指标
2、从 kafka 对接 DataProcess 数据
当中读取数据以及封装,这过程封装成 process data,然后后面计算时,用里面的数据直接通过 plus 对类型的数据点的把数据点出来吧,就不需要再次去切分。
3、数据分割封装
4、加载数据库规则
流程里加载数据库规则,需要加载两个规则,第一次加载要放到程序初始化阶段,Setup 初始化阶段有一个 SCC,创建完成以后,里面读取数据库规则,这里面需要两个,一个是关键页面的规则,另外一个是流程,而在计算八个指标的时候,两个数据都用到了,需求当中需要计算的是关键页面的访问总量关键页面的 cookie 技术,关键页面的访问时间和关键页面,小于最小时间间隔次数用了好多个关键,而最后也这里面用了一个自己设置,自设的值就在流程里面,在这八个里面用到,要后续的八个里要用它,所以先把这数据读过来,是去数据库里面将数据读过来,内容不太多。
第二个策略,策略里有四张表,因为这四张表之间,要把它读到一个流程里,流程里面包含了流程的信息。还有如图三个部分,这三个是否选中阈值,分数在一个表然后最终的阈值单独一个表,名字单独一个表,就是这样的四个表,这四个表的数据都在流程里,所以,要根据一个关系,把它读取出来,然后放到流程里面。
二、指标的计算
分别计算八个指标:
1、按 IP 段聚合-5分钟内的 IP 段(IP 前两位)访问量
计算 IP 段的次数,类似于单词的次数,把你 IP 拿过来以后,在这将 IP 抽取出来,截取出 IP 的前两个段,第一个点的位置,第二个点的位置,然后从零截取,截取到第二个点的位置,就 是 IP 段,将 IP 段返回作为 K1,做完类似于单词返回作为 K1,作为 V6返回,然后调用 reduce 经统计总。统计总和就行了,而这里面要计算的时候,五分钟时间范围内,而且是很小一个周期,对吧30秒或者几秒钟算一次,每次算五分钟,所以这是一个大的周期。大的时间范围,比如每隔30秒算一次,每次都算五分钟的,或者每一分钟算一次,每一次都算半个小时,有大量的重复数据,这里面给提供一个方法,第一个参数是窗口的宽度,就是大的时间范围,第二也就是滑动的距离,所以是大的范围,小的小的范围,演示一下,实际的生产当中,把它改一下就行。就是第一个功能模块,返回以后得到的结果就是 IP 和它对应的IP段核对的总数,然后前面接收过来,接收过来以后转换成 map,为什么转化成 map?
在这后续里面,数据是 IP 和一个值,而这里面要判断是不是爬虫,需要拿到这些一个 IP 对应的结果,这里把它封装成map,再通过 IP 是 KY6值,拿 IP 去取的时候,方便获取数据,这是第一个指标
2、按 IP 地址聚合-某个 IP,5分钟内总访问量
第二个指标,是统计 IP 的总量,比第一个简单,第一个还截了个 IP 段,这里面不需要截取 IP 直接返回 K 和 Y61就可以了,然后调用去计算。第二个会更简单一点。
3、按 IP 地址聚合-某个 IP,5分钟内的关键页面访问总量
关键页面,首先要有一个关键页面的正则表达式,读取过来传进去以后,从数据当中抽出 IP 抽出 url,用 url 和关键页面的 url 的正则去匹配,匹配成功了就是关键页面,返回 IP 和1不是关键,就返回 IP 和0,然后再调用 reduce poverty and window 去计算,所以这里多了个挑战,是不是关键页面,就前面在 IP 统计量的钱前面加一个条件判断就行。只有是关键再返回,不是关键跳过。
4、按 IP 地址聚合-某个 IP,5分钟内的 UA 种类数统计
五分钟时间内,User agent 出现了,数量,这不需要关键页面,直接统计。在数据当中拿出 IP 和 user agent,而这里要统计的是 user agent 的种类数。既然种类就得去同一种类出现多次,所以分两步,第一步先拿到 IP 和 url,经返回调用 grow up8K 就不是 reduce 了。不知道汇总做的是分组,分组以后拿这 kiss IP 和一个 valid list,也就是 user agent list,然后再单独或者是两个专门把 user agent list 进行一个 distinct,然后 user agent 的种类数,将 IP 和数量返回就可以了。
5、按 IP 地址聚合-某个 IP,5分钟内查询不同行程的次数
和 user agent 非常之像,下面要的是 agent,而这里要是不同形成不同,就得有出发地和目的地。依然是在数据当中找到核心参数,取出出发地和目的地,拼成一个字符串,从北京到上海查了十次,然后这边依然要做驱动。要的是不同的次数,去重完以后,就做完了,和 user agent 非常像。
6、按 IP 地址聚合-某个 IP,5分钟内访问关键页面的 Cookie 数
又涉及到了关键页面,所以依然要取出 URL,URL 和关键页面匹配,匹配成功以后表示 true。在 true 的情况下,返回IP和 cookie.
只有是 true 再返回 IP,所以就应了要求,关键叶脉的归属,有个前提,就是关键前提判断好结果,拿到以后再去,在求 distinct 和size,这样子就拿到了 cookie 的数量,算完以后,将 IP 和 cookies 的值返回,就拿到了五分钟时间范围内关键页面的技术。
7、按 IP 地址聚合-某个 IP,5分钟内的关键页面最短访问间隔
这就比较复杂了,关键页面前面判断比较简单。取出 url 和 IP 去便利,匹配成功就是关见一面,然后将IP和时间返回,也得把时间抽出来。因为需求是最小时间访问间隔,那访问间隔时间的访问价格,得有多个时间,得有时间要把时间抽出来。时间抽出来以后,做事关键页面返回时间,这样同一个 IP 访问了多次的情况下,就拿到了一个 grow up Kay and window 拿到一个时间的例子,只有时间的例子或取出时间的 list,然后再遍历,只有在多个,时间的次数出现两个以上,包括两个的时候,才有时间差。
才能求出最小时间差,所以做一个判断,大于一的时候,返回去计算时间差等于一或者小于一的时候,就没有叫返回。在两个时间出现的情况下,或者两个以上,这里面遍历每一个时间,然后转化成标准的时间,最终转化成时间true,将时间 true 塞的地方时间拖到 list 里面。拿到了多个时间 true 的例子,然后时间差要进行一个排序,排完序以后再去计算时间长,如果不排序,拿第一个和第五个,算第二个和第十个算,那没有意义,要的是相邻的两个时间差,才是真正的时间差,时间差用第二个减去第一个的时间差,第三个减去第二个的,第四个减去第三个,以此类推,用后后面的减去前面就得到了时间差。
然后将时间差再塞入到时间差的类似里。这时间差的例子,然后将时间差的例子在排序,排序以后的第一个,因为排完序以后它是自动的。增量是往上增的所以第一个就是最小的也就取出第一个值然后抽 strain to inch 就拿到了最小的访问时间间隔然后将 ip 和实验结果返回就可以了。
8、按 IP 地址聚合-某个 IP,5分钟内小于最短访问间隔(自设)的关键页面查询次数
复杂的地方就是有一个自设值在系统当中已经配置好,流程里面,规则里面有一个两个参数的指标,
里面第一个参数就是自设的最小间隔,最小间隔传到里面,然后还得是关键页面的,所以关键页面的参数,广播未来也要传进去,还有数据。在数据当中,方法当中首先把最小访问时间间隔抽出来,遍历 florist 流程,但实际上拿到只有一个,因为这里有个状态,是把启用状态的把它取出来,多个流程里面可能只有一个是启动的。
正常情况下只有一个启用一个轻的情况下,就拿一个流程,然后辨别出流程里面的规则,遍历规则,找 rule name real name,有两个值,在获取流程,规则里面。RUY61就是这里面的自设的值也就是这里面的类似于二,就是值读取过来后,乘以一千,二代表的单位是秒,而这里面要把它转换成毫秒。默认的时间,存在一个计数器,计数器是记录,后面就和第七步基本上一样了(读取 ip,url,时间)。
(url 判断是否是关键页面,若是返回 ip,time;不是返回空。)
单独获取出时间的 list,进行遍历,遍历出转成时间戳。添加到时间戳 list 里面排序。找到相邻的两个,将相邻两个求取时间差。将时间差与刚从流程内读出的最小时间间隔默认值进行比较,计算出的时间差小于默认值,计数器加一。最后将 IP 和数量进行返回,小于系统返回值关键页面的次数,这就是爬虫依据的八个指标。