爬虫识别-爬虫判断及封装 FlowScoreResult| 学习笔记

简介: 快速学习爬虫识别-爬虫判断及封装 FlowScoreResult

开发者学堂课程【大数据实战项目 - 反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第六阶段爬虫识别-爬虫判断及封装  FlowScoreResult】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/674/detail/11723


爬虫识别-爬虫判断及封装  FlowScoreResult

内容介绍

一.爬虫判断(结论:是/不是)

二.封装流程计算结果(如何写爬虫识别的关键代码)

三.爬虫识别

 

一.爬虫判断(结论:是/不是)

接下来要进行第3-爬虫判断。

image.png

 

如图所示,将得分与企业的阈值进行对比,如果得分大于企业阈值则返回 True ; 如果得分小于企业阈值,则返回 False 。这是爬虫判断的流程。

目标:得出是否是爬虫的结论。 “True” 或 “False

思路与关键代码:

1.将获取流程中最终的阈值(爬虫与非爬虫的分界点)

2.用数据得分与最终阈值对比

若数据得分大于最终阈值,那么次数据是爬虫,返回 True

若数据得分小于最终阈值,那么次数据不是爬虫,返回False

image.png 


如图所示,这里的阈值就类似于配置策略中的100

上面是规则,上传数据大于或小于这个值的关系。

// 爬虫判断

//1 将获取流程中最终的阈值(爬虫与非爬虫的分界点)

val flowLimitScore=flow.flowLimitScore  flowLimitScore 即为最终的阈值,这个阈值就是配置策略中的100,或者流程1中的20,接下来进行判断)

//2 用数据得分与最终阈值对比

//若数据得分大于最终阈值,那么次数据是爬虫,返回 True

//若数据得分小于最终阈值,那么次数据不是爬虫,返回 False

val isUpLimited=if(flowScore>flowLimitScore)true else false (如果数据得分大于最终阈值,则返回 True ;否则,返回False 。得到结论后,需要一个变量来接收这个结论,即是否是爬虫。

isUpLimited 就是是否大于阈值,即接收结论的变量。但是需要返回的是 flowsScore ,而不是判断的结论。)

 image.png

如图所示,阈值在流程中,因此,我们要在流程中得到阈值

我们需要返回的是下方的数据,而这些数据中只缺 flowsScore

AntiCalculateResult(

Message: ProcessedData,

ip:String,

ipBlockCounts: Int,

ipCounts: Int,

criticalPagesCounts: Int,

userAgentCounts: Int,

minTimeDiff: Int

lessDefaultTimes: Int,

differentJourneysCounts: Int,

ipCookCount: Int,

flowsScore: Array[FlowScoreResult]

指针碰撞的结果我们传给了 flowsScore ,类型也相同。现在如果我

们要返回,则必须要封装满整。将命中的规则和命中的时间得到后就

可以封装了。

flowsScore.append()FlowScoreResult(flow.flowId,(有流程

就可以获取 ID)                        

flowScore(最终的分数),

flowLimitedScore, (流程的阈值)      

isUpLimited, (返回是布尔类型的)

flow.strategycode,(流程策略代码)

hitRules.toList,(将 Buffer 转化为List

New Date().toString(命中时间 而且是字符串格式)

}

flowsScore.toArray

//命中的规则(我们的最终分数有了,也得到了是否是爬虫,最终结果中只缺 flowsScore 类型为 FlowScoreResult, 这种类型里面,恰好计算出来的分数以及是否是爬虫都是所需要的,用上了它们之后,这个 FlowScoreResult 就有了。但是还差一步,虽然有了一个,但是这里所需要的是Array 类型的。直接来定义 flowsScore ,调用  ArrayBuffer 进行补全,补全以后,目标: Array 类型的 FlowScoreResult 就已经有了。至此所需要的 AntiCalculateResult 封装已经全部完成,所有的数据都有了。爬虫识别的关键代码就写完了。)

val hitRules=new ArrayBuffer[String]() (算法中需要的是 Double 需要的是 String, 而且还是 List ,需要将其转化)

//数据对比

//数据计算的结果大于阈值,根据需求将分数写入相应的 ArrayBuffer

//数据计算的结果小于阈值,根据需求填入 ArrayBuffer (是否需要填写)

If (dataValue>databaseValue){

allRuleScoreList.append(rule.ruleScore)

hitRules.append(rule.ruleName) (无论是否选中,只要命中了就可以。在这里选择命中的规则名称进行返回)

 

二.封装流程计算结果(如何写爬虫识别的关键代码)

@param flowId 流程 Id (有流程即可)

@param flowScore流程得分

@param flowLimitedScore 流程阈值

@param isUpLimited 流程得分是否大于阈值

@param flowStrategyCode流程策略代码

@param hitRules命中的规则(8个数值中有多少超过了阈值)

@param hitTime命中的时间

/

case class FlowScoreResult( flowId: string,

flowScore: Double,

flowLimitedScore: Double,

isUpLimited: Boolean,

flowStrategyCode: String,

hitRules: List[String],

hitRules: List[String],

hitTime: String)

 

三.爬虫识别

//1 指标碰撞

//2 最终的打分

//3 爬虫判断(结论:是/不是)

processedData.map(message=>{ (添加 “val

anticalculateResults= 即可接收回来,其中的

anticalculateResults代表可能有多个值)

//获取数据中 ip

Val ip =message.remoteAddr

//返回结果是最终的返回结果 AnticalculateResult

RuleUtil.calculateAntiResult(调用数据)(message,ip,ipBlockCountsMap,ipCountsMap,criticalPagesCountsMap,userAgentCountsMap,differentJourneysCountsmap,ipcookcountMap,minTimeDiffMap,lessDefaultTimesMap,broadcastFlowList.value)//执行(在调用前面添加 “val anticalculateResult= 即可接收)

anticalculateResult //返回 Map

}

anticalculateResults.foreachRDD(rdd=>rdd.foreach(println))

//输出

至此代码全部完成。

相关文章
|
1月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
54 0
|
1月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
55 0
Python爬虫之点触验证码的识别
|
1月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
44 0
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
352 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
109 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
89 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
168 0
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
145 0
爬虫识别-准备离线计算数据| 学习笔记
|
数据采集 大数据 数据库
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
快速学习爬虫识别-指标碰撞-准备数据代码实现
138 0
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
|
4天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。