爬虫识别-打分| 学习笔记

简介: 快速学习爬虫识别-打分

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

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


爬虫识别-打分

内容介绍:

一.最终打分

二.打分算法代码

 

一.最终打分

1.目标:根据已有数据计算最终分数,并返回分值

通过遍历规则我们拿到了两个结果,接下来就要进行打分,我们需要打分算法。

2.打分算法:

computeScore(allRuleScoreList.,selectRuleScoreList.)

需要指标碰撞中算好的两个参数即,与选定于无关的结果和必须选定的结果。

image.png

会发现报错,需要 ArrayDouble,这里是 ArrayBuffere[Double]

改成:

computeScore(allRuleScoreList.toArray,selectRuleScoreList.toArray)

只需将两个结果集传入算法,算法会自动返回一个分值。

定义一个变量来接受此结果(需要用流程得分flowScore 来声明):

//2 最终的打分

Val flowScore=computeScore(allRuleScoreList.toArray,selectRuleScoreList.toArray)

Case class AntiCalculateResult(processedData:ProcessedData,

Ip:String,

ipBlockCounts: Int,

ipAccessCounts: Int,

criticalPageAccessCounts: Int,

userAgentCounts: Int,

critivalPageMinInterval: Int,

accessPageIntervalLessThanDefault: Int,

differentTripQuerysCounts: Int,

criticalCookies: Int,

flowsScore:Array[FlowScoreResult])

AntiCalculateResult 为最终要返回的结果,而这些数据当中, flowsScore 前面的数据已经得到,只缺少 flowsScore

flowsScore.append()FlowScoreResult(flow.flowId,

flowScore(最终的分数),

flowLimitedScore,

isUpLimited,

flow.strategycode,hitRules.toList,

New Date().toString

计算得出的结果即流程得分。                  

 

二.打分算法代码:

通过算法计算打分,此算法是从企业得来的,没有做任何的修改,直接使用即可。我们需要用到3个系数。

系数2权重:60%,数据区间:10-60

系数3权重:40,数据区间:0-40

系数2+系数3区间为:10-100

系数1为:平均分/10

所以,factor1*(factor2+factor3)区间为:平均分--10倍平均分

Def computeScore(scores:Array[Double],xa:Array[Double]): Double={

//打分列表(传入的第一个结果就是与选定于无关的,即8个值,0或其它结果。 xa 是规定的,直接使用即可。 均为 Double 类型)

val sum=scores.sum

//总打分(无论是否选中,计算后,如果结果超过了某一个值就输出分数;如果没有超过,则返回0。也就是说,如果8个值中有3个结果超过了值,那么就取这3个的分数,然后对它们求总和。如果3个都超过了,就取3个值的总和,另外5个均为0;如果8个值都超过了,就计算8个值的总和。sum 即代表分数)

val dim=scores.length

//打分列表长度(总的分数得到后,又要求分数的长度,也就是8 dim 代表超过了值的结果数量,也就是8

val factor1=sum/(10*dim)

//系数1:平均分/10 (平均数的十分之一,此为第一个系数)

val maxInXa - if(xa.isEmpty){

0.0

} else {

xa.max

}

//命中数据库开放规则的 score

//命中规则中,规则分数最高的( xa 为第二个值,即必须是选中状态同时超过阈值的,如果是空,假设选中的这些都没有超过,则为空那么返回0:如果不是空,那么取出其中的最大值。比如,我们选中了实时规则中的后4个,假如它们都超过了阈值,那么就取出里面的最大值)

val factor2=if(1<1.0/6.0)*maxInXa) { (判断:最大值的六分之一是否大于1对应着不同的路线。比如10987的六分之一都大于1,权重就给足606的六分之一不大于1(1.0/6.0)*1*60=60; 5的六分之一也不大于1,(1.0/6.0*5*60=50。权重最高为60,不能超过60,当数据小于6的时候,计算出的权重就是最高分数)

60

} else {

(1.0/6.0)*maxInXa*60

}

//系数2:系数2的权重是60,指的是最高 score 6为分界,最高score 大于6,就给满权重60,不足6,就给对应的 maxInXa*10

val factor3 = 40*(xa.sum/sum)

//系数3:打开的规则总分占总规则总分的百分比,并且系数3的权重是40(选定的结果求和后,除以之前得到的与选定与否无关的和。选中的规则的总分数占总权重百分比。)

factor1*(factor2+factor3) (系数2加上系数3再乘以系数1.

(系数2权重:60%,数据区间:10-60

系数3权重:40,数据区间:0-40

系数2+系数3区间为:10-100

系数1为:平均分/10

}

得到最终分数后返回,即我们最终接受到的分数。

其中,数据60,数据40,最终打分的核心算法 factor1*(factor2+factor3) 与业务的关联性十分强,也是为了防止爬虫刻意避开规则,不需要明白原理,能够理解代码即可。

拿到算法后,只需要上传 scores xa 这两个参数,就能够得到分数computeScore

拿到分数后,可以根据分数判断是否是爬虫。

相关文章
|
2天前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
107 0
|
2天前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
78 0
Python爬虫之点触验证码的识别
|
2天前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
61 0
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
357 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
111 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
93 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
174 0
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
148 0
爬虫识别-准备离线计算数据| 学习笔记
|
数据采集 大数据 数据库
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
快速学习爬虫识别-指标碰撞-准备数据代码实现
141 0
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
|
数据采集 算法 大数据
爬虫识别-指标碰撞-准备数据 avi| 学习笔记
快速学习爬虫识别-指标碰撞-准备数据 avi
143 0
爬虫识别-指标碰撞-准备数据 avi| 学习笔记