爬虫识别-指标碰撞-准备数据 avi| 学习笔记

简介: 快速学习爬虫识别-指标碰撞-准备数据 avi

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

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


爬虫识别-指标碰撞-准备数据 avi

目录:

一、判断是否为爬虫

二、爬虫识别实践

三、指标碰撞详细步骤

 

一、判断是否为爬虫

分为6

1、获取到封装好的 processedData 进行 map 操作,得到每一条访问数据

2、使用数据库流程策略、ip、和所有收集的 map 为指标碰撞准备数据

3、指标碰撞分析将数据计算的值与企业配置的阈值进行对比,为打分算法准备数据

4、打分算法接收数据返回分值

5、根据分值与最终阈值进行对比,判断是否是爬虫

6、最后将所有打分结果封装到AntiCalculateResult 中返回

六步可细化为三个部分,爬虫识别流程中的爬虫识别分指标碰撞、最终打分、爬虫判断三步。

//爬虫识别

//1指标碰撞

//2最终打分

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

 

二、爬虫识别实践

获取到封装好的 processedData 进行 map 操作,得到每一条访问数据

image.png

拿到八个结果,下一步在此批数据中拿到每一条数据。

image.png

截取数据中 ip,用 ip 截取八个结果对应的值与企业配置的八个阈值对比。

用此八个结果做数据碰撞,需要抽取数据。

image.png

 

拿到原始数据调用 map 拿到某一条数据,抽取 ip,将流程和八个结果放到一个方法做。

processedData 为原始数据,1-8步都使用了 processedData。一批数据进入processedData产生八个结果,再从 processedData 里拿出某一条数据。

processedData调用.map 操作,拿到一条数据。一条数据中获取数据中 ip,val ip=message.remoteAddr

processedData.map(message=>{

//获取数据中 ip

val ip=message.remoteAddr

ip、数据库中流程规则、八个结果三个数据为指标碰撞准备数据,不能都写到获取数据中 ip 否则代码很多、很大、很乱,放到独立的方法里,在方法里准备数据。

方法名字RuleUtil.calculateAntiResult 计算反爬虫结果

计算结果

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])

最终返回样例列,将需要用到的所有数据封装完,ProcessedDataip、八个指标ipBlockCounts:Int, ip 段对应的值、ipAccessCounts: Int,ip 访问总量对应的值、criticalPageAccessCounts: IntuserAgent

Counts: IntcritivalPageMinInterval:Int

accessPageIntervalLessTha

nDefault:Int, differentTripQuerysCounts: IntcriticalCookies: Int,)

ProcessedData、八个指标计算出的值,ip 可截取。只差 flowsSco

re

写方法RuleUtil.calculateAntiResult 加括号

RuleUtil.calculateAntiResult()

报红,没有 RuleUtil,创建。rulecompute businessprocess 右键新建 Scala Class Object,名为RuleUtil,

image.png

//用于实现爬虫识别逻辑的代码

Object RuleUtil{

}

引入RuleUtil.calculateAntiResult()

需要用很多数据,传入 ip、八个结果集、流程。缺少 ProcessedData,方法的名字是计算反爬虫的结果。样例是结果,封装最后返回值,返回值里要ip、八个结果的对应的值、flowsScore:ArrayProcessedDat

a, iP,八个结果返回值、flowsScore 可算出。

ProcessedData原始数据,第一个参数将ProcessedData messa

ge ip数据传入。ipBlockCounts:Int值为 map, ip 抽出。将计算的八个 map 放入第一个参数,每条数据和八个结果拿到后放到提取结果里。第一个 Map ipBlockCountMap,第二个 ipCountsMap,第三个criticalPagesCountsMap,第四个userAgentCountsMap,第五个differentJourneysCountsMap,第六个 ipCookCountMap,第七个 minTimeDiffMap,第八个LessDefaultTimesMap粘贴。有了 MapipProcessedData 差广播变量,企业配置的8个指标阈值,广播变量在流程规则,复制粘贴 .value。爬虫识别所有的数据放到了此方法里。

//放回结果是最终的返回结果AntiCalculateResultRuleutil.calculateAntiResult(message,ip,ipBlockCountsMap,ipcountsMap,criticalPagescountsMap,userAgentCountsMap,differentJourneysCountsMap,ipCookCountMap,minTimeDiffMap,lessDefaultTimesMap,broadcastFlowList.value)

创建方法,问号去掉,大括号补全

def calcufateAntiResult(message: ProcessedDataip:stringipBloc

kCountsMap:collection.Map[string,Int],

ipCountsMap:collection.Map[StringInt]

criticalPagesCountsMap:c

ollection.Map[String,Int],userAgentCountsMap:collection.Map[string,Int],differentJourneysC

ountsMap:collection.Map[String ,Int],ipCookCountMap:collectionMap[String,Int],minTimeDiffMap:collection.Map[stringInt],lessDefaultTimesMap:collectionMap[string,Int],value:ArrayBuffer[Flowcollocation):AntiCalculateResult

calcufateAntiResult 要拿到最终的返回结果 AntiCalculateResult,没有此结果,放 AntiCalculateResult{},数据为空后续封装需要的数据。

calcufateAntiResult 方法做爬虫识别的步骤

//爬虫识别

//1指标碰撞

//2最终打分

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

数据碰撞还未抽取数据,属于数据碰撞准备数据阶段。

 

三、指标碰撞的详细步骤

1目标:为打分算法准备数据

指标碰撞做分步,准备数据阶段和碰撞阶段。

image.png

此过程为准备数据,将一条数据在8个结果集内对应的指标值和企业端配置的8个指标阈值抽出。

碰撞数据阶段:

image.png

2思路与关键代码:准备数据

1)提取一个 ip 在八个结果集内对应的数据,

ip 在8个结果中抽出

2)将取出的数据封装为 Map,将 Map 与流程数据传入碰撞方法

企业端配置的8个指标阈值是8个结果集,拿到8个数字是零散的,需要打包到一起放入一个 Map,企业端配置的8个指标阈值在一个数据里。将打包好的 Map 8个计算的结果和企业端配置的8个指标阈值传给指标碰撞,打分算法直接用。为了方便计算,结果封装为 Map 一起传入指标碰撞。

//1指标碰撞(准备数据)

//1.1提取一个 ip 在八个结果集内对应的数据,

//1.2将取出的数据封装为 Map,将 Map 与流程数据传入碰撞方法

相关文章
|
20小时前
|
数据采集 数据挖掘 API
主流电商平台数据采集API接口|【Python爬虫+数据分析】采集电商平台数据信息采集
随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。本文将介绍如何使用Python编写爬虫程序,抓取电商平台的商品信息、价格、评论等数据。 当然,如果是电商企业,跨境电商企业,ERP系统搭建,我们经常需要采集的平台多,数据量大,要求数据稳定供应,有并发需求,那就需要通过接入电商API数据采集接口,封装好的数据采集接口更方便稳定高效数据采集。
|
23天前
|
数据采集 开发者 Python
Python爬虫实战:利用Beautiful Soup解析网页数据
在网络爬虫的开发过程中,数据解析是至关重要的一环。本文将介绍如何利用Python的Beautiful Soup库来解析网页数据,包括解析HTML结构、提取目标信息和处理特殊情况,帮助开发者更好地实现爬虫功能。
|
25天前
|
数据采集 机器学习/深度学习 搜索推荐
探索数据之海——网络爬虫与数据抓取技术的应用与发展
在当今信息爆炸的时代,获取大量高质量的数据成为各行各业的迫切需求。网络爬虫和数据抓取技术作为一种有效的手段,正在被广泛应用于各个领域。本文将深入探讨网络爬虫的原理、应用场景以及未来的发展趋势,为读者带来关于数据抓取技术的全面了解。
167 5
|
26天前
|
Web App开发 数据采集 JavaScript
【Python爬虫】<万物可爬>Selenium+自动化测试工具 获取数据
【1月更文挑战第22天】【Python爬虫】<万物可爬>Selenium+自动化测试工具 获取数据
|
26天前
|
数据采集 大数据 调度
利用aiohttp异步爬虫实现网站数据高效抓取
利用aiohttp异步爬虫实现网站数据高效抓取
|
30天前
|
数据采集 数据挖掘 数据处理
探索数据世界之门:Python爬虫与数据抓取技术
在信息爆炸的时代,数据成为了无处不在、无所不包的珍贵资源。而Python爬虫与数据抓取技术作为一道通向数据世界的大门,为我们提供了强大的工具和方法。本文将深入探讨Python爬虫的原理与应用,以及数据抓取技术的重要性,帮助读者更好地了解并利用这一技术。
|
1月前
|
数据采集 搜索推荐 数据处理
探索数据的无尽可能性:网络爬虫与数据抓取技术
本文将深入探讨网络爬虫与数据抓取技术的重要性和应用,介绍其在信息收集、市场分析、学术研究等领域的广泛应用。我们将探索这一技术的原理、挑战和发展前景,并展望未来数据抓取技术的潜力。
28 0
|
1月前
|
数据采集 JSON API
使用phpQuery库进行网页数据爬虫案例
使用phpQuery库进行网页数据爬虫案例
|
2月前
|
数据采集 XML 数据格式
python爬虫入门篇:如何解析爬取到的网页数据?试下最简单的BeautifulSoup库!
前面笔记解析了如何使用requests模块向网站发送http请求,获取到网页的HTML数据。这篇我们来如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据。Beautiful Soup,简称bs4,是Python的一个HTML或XML的解析库,一般用它来从网页中提取数据。
49 1
|
2月前
|
数据采集 Python
Python爬虫:实现爬取、下载网站数据的几种方法
Python爬虫:实现爬取、下载网站数据的几种方法
78 1