爬虫识别-不同行程统计-需求及实现思路|学习笔记

简介: 快速学习爬虫识别-不同行程统计-需求及实现思路

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

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


爬虫识别-不同行程统计-需求及实现思路

 

目录:

一、目标

二、详细需求

三、设计

四、详细思路 

 

一、目标

//5 按 IP 地址聚合-某个 IP,5分钟内查询不同行程的次数

目标:计算出某个 IP,5分钟内查询不同行程的次数。

 

二、详细需求

正常用户的行程基本都是确定的,普通用户买票时从哪出发,发哪里去都是确定的,变化的可能性不大。例如从北京去上海,可能查询很多车次和时间,但是行程永远是北京到上海,可能出现特殊的情况,但肯定是少数。

爬虫行程是不固定的,一个买完给另一个买,循环迭代,查询不同行程次数非常多。在短时间内大量的爬取不同行程、不同车次、不同时间,与普通用户是有区别的,通过此维度的指标能计算出爬虫的特征。正常用户不同行程数量较少,基本都是确定的,但爬虫非常多,通过数量可判断爬虫。如果处理数据后发现不同行程种类很多,很可能是爬虫。

统计一段时间内 ip 查询不同行程的次数(北京到上海查了 10 次,作为一次)次数越多,是爬虫的可能性就越大,越小是爬虫可能性越小。

访问不同行程的次数企业系统内设置此指标的阈值。如果根据数据计算出的结果(关键页面访问量)超过设置的阈值,很有可能是爬虫。

正常用户查询次数在10个以内,超过10个认为很可能是爬虫。

5分钟内查询不同行程的次数<10

从北京到上海,上海到南京,南京到苏州,苏州到广州,广州回来。北京到上海是一个行程,上海到南京是一个行程,如果从北京到上海访问20次,相通行程算1个。从北京到上海,上海到南京是不同行程,出发地不同。

 

三、设计

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

2、取出 remoteaddr,出发城市、到达城市,进行封装 (remoteAddr(re

questParams.depcity,requestParams.arrcity)),并进行 groupByKey操作,将当前 remoteaddr 的所有查询行程封装到buffer中

remoteaddr(ip),行程有出发城市和目的地,requestParams 调用出发地和目的地,封装 出发地和目的地

3、将出发城市和到达城市转换成字符串“depcityarrcity”,然后进行去重操作、count 操作,得到5分钟内 remoteaddr 查询了多少个不同城市

出发地和目的地拼接为字符串,拼接后的数据作为 value 输出,key为 remoteaddr,拿到结果去重、求大小。北京到上海10次,去重是1种

4、将(remoteaddr,count)封装,记得到最终结果,并收集到 map中

搭架子,复制粘贴 CoreRule.differentJourneys,括号补全,拿数据 processedData,不涉及关键页面。创建方法,问号删掉,括号补全,剪切到最后。

//5 按IP 地址聚合 -某个 IP,5分钟内查询不同行程的次数

def differentJourneys(processedData:DStream[ProcessedData]):u

nit={

 

四、详细思路

1、抽取出数据中的 IP 和数据中的出发地和目的地

2、使用 ip 作为 key,将出发地拼接目的地,以拼接的结果作为 value将其输出

3、调用 groupByKevAndWindow,得到的结果是 key(IP)和 value 的list(出发地拼接目的地的 list

4、单独获取出 ip,和 value 的 list(出发地拼接目的地的list),将value 的 list 去重再求大小

5将 ip 和值大小返回

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

与 UA 种类统计很像,第二步多了出发地与目的地的拼接

//抽取出数据中的 IP 和数据中的出发地和目的地

//使用 ip 作为 key,将出发地拼接目的地,以拼接的结果作为 value将其输出

//调用 groupByKevAndWindow,得到的结果是 key(IP)和 value 的list(出发地拼接目的地的 list

//单独获取出 ip,和 value 的 list(出发地拼接目的地的list),将value 的 list 去重再求大小

//将 ip 和值大小返回

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

相关文章
|
7月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
434 0
|
7月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
191 0
Python爬虫之点触验证码的识别
|
7月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
159 0
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
410 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
148 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
133 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
爬虫识别-总结及效果| 学习笔记
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
99 6
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
214 4
|
4月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。