爬虫识别-UA 种类统计-需求及实现思路|学习笔记

简介: 快速学习爬虫识别-UA 种类统计-需求及实现思路。

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

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


爬虫识别-UA 种类统计-需求及实现思路

 

目录:

一、需求

二、设计

三、实践

四、详细思路

 

一、需求

//4 按 IP 地址聚合-某个 IP,5分钟内的 UA 种类数统计

5分钟内的 UA 种类数统计,种类出现了多少次。

User-Agent

User-Agent 中文名为用户代理,简称UA,它是一个特殊字符串头的字符串,使用字符串使得服务器能够识别客户端使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等都包含在字符串里的 User-Agent,User-Agent 是用户的标识。

正常用户(ip)在短时间内不会切换操作系统和浏览器的,有但不多。爬虫可能通过伪装 User-Agent 来逃过反爬虫系统的检测,聪明的爬虫会做反爬虫的动作,来回切换 User-Agent。

如果查看某一个 ip 在5分钟内频繁切换 User-Agent,明显是躲避检查,切换次数越多,种类越多,数量越多,是爬虫的可能性越大。普通用户切换 User-Age

nt 最多两三次,爬虫来回切换很多次。

企业系统内针对 User-Agent 设置阈值。如果数据计算出的结果(关键页面访问量)超过设置的阈值,切换10次超过5,那么很可能是爬虫。

5分钟内的UA出现次数统计<5

统计 User-Agent 出现的种类数,一条数据发送有 IP User-Agent,同一用户使用浏览器访问10次,统计 User-Agent 种类10次,次数10但只要1,做去重操作。

 

二、设计

1、拿到 kafka 数据、窗口时间、滑动时间进行统计

2、以 remoteaddr 为 key,抽取 User-Agent 作为 value 输出,调用 groupByKeyAndWindow汇总,ip 作为 key,key 做聚合拿到 User-Agent 例子,聚合后得到格式 ip,ArrayBuffer 里有 ua1,ua2

可能1有10个,2有15个。

总后格式为(192.168.56.1,ArrayBuffer(ua1,ua2,……))

3、将上面的结果集进行 map,获得 User-Agent 聚合,将 ua 进行去重统计个数,remoteaddr 作为 key,User-Agent 出现数量作为 value 返回。ArrayBuffer 有 ua1,ua2,ua3,3不是具体哪三个,去重求 ArrayBuffer 大小,大小是 User-Agent 种类数。去重,求大小,remoteaddr 作为 key 统计 key 统计 ua 个数,返回uaCount

4、将统计结果返回,转换为 map

 

三、实践

复制粘贴代码 CoreRule.User-Agent 到开发工具,User-Agent 统计次数功能放在 CoreRule 代码号里,拿数据 processedData,不需要关键页面,没有关键页面需求。创建

image.png

大括号补全,实现第四个放到最后

//4 按IP 地址聚合 -某个 IP,5分钟内的 UA 种类数统计

def userAgent(processedData:DStream[ProcessedData]):Unit={

搭建了架子、梳理了思路

 

四、详细思路

1、抽取出数据中的 IP 和数据中的ua

拿到 DStream,map 拿到数据,统计 IP 和 userAgent

2、使用 ip 作为 key,ua 作为 value,将其输出

有 ip、userAgent 直接返回

3、调用 groupbykeyAndWindow,得到的结果是 key(IP) 和 value 的 list(ua 的 list)

求得大小拿到 ip 和 value list,没办法拿到大小。

4、获取出 ip,和value 的 list(ua 的 list),将 value 的 list 去重再求大小。

5、将 ip 和值大小返回

6、将最终数据转换为 Map,便于后续提取、使用。放到前面

//抽取出数据中的 IP 和数据中的 ua

//使用 ip 作为 key,ua 作为 value,将其输出

//调用 groupbykeyAndWindow,得到的结果是 key(IP)和 value 的list(ua的list)

//获取出 ip,和 value 的 list(ua的list),将 value 的 list 去重再求大小。

//将 ip 和此值大小返回

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

拿到 ip 和 ua,ip 作为 key,userAgent 作为value 返回。返回时调用 groupbykeyAndWindow 进行分组,将相通 key 的 value 汇总在一起得到 key 和 value 的 list,拿到 key、value list、ip,将value 的 list 去重求大小,返回 ip 和数值

相关文章
|
8月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
450 0
|
8月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
202 0
Python爬虫之点触验证码的识别
|
8月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
163 0
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
418 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
150 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
140 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
爬虫识别-准备离线计算数据| 学习笔记
|
2月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
116 6
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
247 4