爬虫识别-指标碰撞-准备数据 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 与流程数据传入碰撞方法

相关文章
|
12天前
|
数据采集 API 数据处理
Objective-C 音频爬虫:实时接收数据的 didReceiveData: 方法
Objective-C 音频爬虫:实时接收数据的 didReceiveData: 方法
|
28天前
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
18 1
|
1月前
|
数据采集 数据挖掘 数据处理
Python中实现简单爬虫并处理数据
【9月更文挑战第31天】本文将引导读者理解如何通过Python创建一个简单的网络爬虫,并展示如何处理爬取的数据。我们将讨论爬虫的基本原理、使用requests和BeautifulSoup库进行网页抓取的方法,以及如何使用pandas对数据进行清洗和分析。文章旨在为初学者提供一个易于理解的实践指南,帮助他们快速掌握网络数据抓取的基本技能。
55 3
|
29天前
|
数据采集 Web App开发 JSON
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
|
29天前
|
数据采集
爬虫案例—抓取找歌词网站的按歌词找歌名数据
爬虫案例—抓取找歌词网站的按歌词找歌名数据
|
3天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
25 6
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
157 4
|
3月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
4月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
80 4
|
1月前
|
数据采集 存储 数据挖掘
深入探索 Python 爬虫:高级技术与实战应用
本文介绍了Python爬虫的高级技术,涵盖并发处理、反爬虫策略(如验证码识别与模拟登录)及数据存储与处理方法。通过asyncio库实现异步爬虫,提升效率;利用tesseract和requests库应对反爬措施;借助SQLAlchemy和pandas进行数据存储与分析。实战部分展示了如何爬取电商网站的商品信息及新闻网站的文章内容。提醒读者在实际应用中需遵守法律法规。
158 66