爬虫识别-小于自设值的次数-需求及思路|学习笔记

简介: 快速学习爬虫识别-小于自设值的次数-需求及思路

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第五阶段爬虫识别-小于自设值的次数-需求及思路】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/673/detail/11711


爬虫识别-小于自设值的次数-需求及思路

 

内容介绍:

一、按 IP 地址聚合-某个 IP ,5分钟内小于最短访问间隔(自设)的关键页面查询次数的需求

二、实现步骤设计

三、代码

四、总结

 

一、按 IP 地址聚合-某个 IP ,5分钟内小于最短访问间隔(自设)的关键页面查询次数的需求

查询次数为两个时间差之间的次数,所以仍需求出时间差,要求时间差小于最短访问间隔(自设)。 

爬虫具备持续、不间断、高效等特性。它的爬取是非常快的。爬取数据的过程中相邻两此的爬取时间差都非常小。

我们可以自定义一个很小的时间,比如2秒,由于爬虫的效率很高,每两次的时间会很短。时间间隔可能小于2秒,也可能大于2秒。我们统计时间间隔小于2秒中的次数,次数越多,它是爬虫的可能性就越大。 

这个指标可以很灵活的区分爬虫和普通用户,普通用户两个页面之间需要思考、筛选、分析的时间,可能会很久,在两秒钟以内做完的可能性不大。爬虫则不然,爬虫的效率很高大部分可以在两秒内甚至更短的时间完成。 

企业系统内设置了这个自设的最小时间和小于这个时间次数的阈值。如果根据数据计算出的结果(小于自设时间的次数)大于设置的阈值,那么他很有可能是爬虫。

 image.png

如上图,如果查询次数大于10,那么就很有可能是爬虫;如果小于10,那么就不能确定是否为爬虫。

 

一、实现步骤设计

1、拿到 kafka 数据,关键页面的广播变量,系统内自设的最小时间广播变量。窗口时间,滑动时间进行计算。

2、获取出流程中的最小访问时间

image.png

image.png

3、从 kafka 数据中取到 request ,匹配关键页面。

4、匹配成功,返回 IP 和时间,记录( remoteAddr , timelso8601 ),并做 groupByKeyAndWindow 操作,将相同 remoteAddr 的 timelso8601 统计到 ArrayBuffer 中。因为自设了最小访问时间间隔,要将其进行对比,就要算出数据中相邻的两个数据的时间间隔,所以就需要多个日期数据,算出相邻两个时间差,才能进行数据对比。

5、拿到上面的数据进行 map ,循环出每一个 remoteAddr 和它对于的 timelso8601 List 。

6、对 timelso8601 List 进行循环计算,计算临近的两个时间差,将时间差与最小时间对比。

7、若时间差小于预设值的,那么计数器 count 加1。计数器的作用为记录小于自设值的数据的数量。

8、最终封装成( remoteAddr , count ),也就是某个用户对关键页面访问时间小于预设值的访问次数。

9、最后将( remoteAddr , count )返回,收集到 map 中。

 

二、代码CoreRule.lessDefaultTimes(processedDate,broadcastCriticalPagesList.value,broadcastFlowList.value)

// processedDate 为数据

// broadcastCriticalPagesList 为关键页面

// broadcastFlowList 为流程中的最小访问间隔

创建后得到

def lessDefaultTimes(processedDate:DStream[ProcessedDate],criticalPagesList:ArrayBuffer[String],flowList:ArrayBuffer[FlowCollocation]):Unit = {

 

三、总结

1、获取企业系统内的自定义的最小时间间隔。遍历流程,获取流程内的规则,找到规则中 ruleName 等于" criticalPagesLessThanDefault "的规则(有两个参数,第一个是默认的最小时间,第二个是阈值),获取出规则中的第一个参数。

 image.png

2、设置一个计数器(记录小于自设值数据出现的次数)

3、抽取出数据中的 IP 和数据的访问时间

4、遍历数据库中的关键页面的规则。

5、使用 url 与规则进行匹配。若数据的 url 能够与规则的任意一个匹配成功,那么表示这个 url 就是关键页面,将 ip 和时间返回;若数据的 url 能够与规则的任意一个没有匹配成功,那么表示这个 url  不是关键页面,将””和””返回。

6、调用 groupByKeyAndWindow ,获得到的结果是 key ( IP )和 value 的 list (时间的 list )。

7、获取到 ip 和时间的 list 。

8、遍历时间的 list ,将这个字符串类型国际时间转换成普通时间(时间戳)。

9、将多个时间戳添加到一个 list 。

10、对这个时间截的 list 进行排序。

11、遍历每两个时间戳,求取两个时间戳的时间差。

12、用时间差与自设值进行对比。若时间差小于自设值,那么计数器加1;若时间差大于自设值,跳过(什么都不做)。

13、将 ip 和计数器的值返回。

14、将最终数据转换为 Map ,便于后续提取、使用。

以上就是实现最小访问间隔的关键页面查询次数的思路

相关文章
|
6月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
374 0
|
6月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
174 0
Python爬虫之点触验证码的识别
|
6月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
128 0
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
401 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
140 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
126 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
爬虫识别-准备离线计算数据| 学习笔记
|
数据采集 大数据 数据库
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
快速学习爬虫识别-指标碰撞-准备数据代码实现
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
156 4