爬虫识别-IP 段统计-需求及思路|学习笔记

简介: 快速学习爬虫识别-IP 段统计-需求及思路。

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

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


爬虫识别-IP 段统计-需求及思路

 

目录:

一、目标

二、需求

三、设计

四、详细思路

 

一、目标

上节课将爬虫识别的八个指标列出,梳理出爬虫识别三件事情以及数据入库三件事情。

实现代码

//1按 IP 段聚合- 5 分钟内的 IP 段(IP 前两位)访问量

目标:计算出5分钟内某个 IP 段(IP 前两位)访问量

 

二、需求

计算 5分钟内 IP 段的访问量,IP 段是指

192.16856.151->192.168,

192.16856.151 IP 段是192.168计算192.168在此批次里出现多少次、一段时间内出现多少次,计算IP段可以帮助监控爬虫的攻击范围,如果爬虫伪造 ip,但是出口 ip 是公司内部的网络,打出的 IP 段一样,可能 IP 一样,IP 段不一样。

根据 ip  段判断源于哪个区域,大概确定范围,可以判断某个区域访问量是多少。统计 IP 访问量传递来一条一条数据,每一条数据都有 IP 统计 IP 的量。

IP 段 count 传递来一条条数据,每一条都有 IP,将 IP 段截取作为 key,一一作为 value 输出,调用 reduceByKeyAndWindow

 

三、设计

1、拿到 kafka 读取的 message 数据,封装为 processedData,调用窗口函数,窗口长度5分钟,需求明确表示计算5分钟范围内 IP 段量,滑动长度30s计算指标

2、先判断 remoteAddress 是否有数据,remoteAddress 用户的 IP,判断用户是否为爬虫,如果用户不存在返回(null,1)用户存在获得用户 IP,截取出 IP 前两位,假设为 192.16856.151 IP要192.168,截取 IP 段

3、用户存在获得用户 IP,截取出 IP 前两位,假设为 192.16856.151 IP要192.168,截取 IP 段,IP 作为 key,1作为 value 输出

4、调用 reduceByKeyAndWindow 窗口5分钟,运行周期30秒计算指标,可计算出5分钟范围内 IP 段计算多少次

实现过程与word count 非常像,wordcount 是单词的数量,IP 段 count 是 IP 段的数量.

开发工具实现第一个功能,单独写 updata,判断 IP 段访问量逻辑放到 updata 里,返回结果。

CoreRule.ipBlockCounts()

CoreRule 报红,现在没有 updata,创建 updata。项目中找到 rulecompute businessprocess 右键进行 Scala Object,

创建 CoreRule

image.png

//用于八个指标数据的计算

Object CoreRule{

创建后引入,实现 ipBlockCounts 方法,方法要有参数。

//将kafka内的数据使用“#CS#”拆分,拆分后封装成processedData

val processedData=QueryDataPackage.queryDataLoadAndPacka

ckage(kafkaValues)

//processedData.foreachRDD(rdd=>rdd.foreach(println))

数据经过 CS#拆分,返回到 processedData 可以拿到 IP,拿到 IP 可结出 IP 段,数据出入。

有了计算 IP 段访问量,创建

image.png

将问号删掉,括号补全,代码块实现5分钟内 IP 段的访问总量

object coreRule {

//1按IP 段聚合 -5分钟内的IP段(IP前两位)访问量

def ipBlockCounts(processedData:DStream[ProcessedData]):Unit=

按照什么先后顺序实现,有数据调用窗口函数,先截取出 IP 段看有没有数据,有返回截取 IP 段,没有返回 (null,1),调用 reduceByKeyA

ndWindow。详细流程在随堂笔记 IP 段访问量。

流程规则数据格式流程是怎样来的,多个流程,一个流程里的数据。

 

四、详细思路

1、抽取出数据中的 IP

2、截取出 ip 的前两位

3、将前两位作为 key,1作为 value 输出

4、调用 reduceByKeyAndWindow 计算最终每个 ip 段的总量

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

有了数据,拿到遍历数据抽取 IP。模拟 count,调动的 IP 段 count,将前两位作为 key,1作为value输出。输出后调用 reduceByKeyAnd

Window,调用5分钟范围内,5分钟设置为窗口宽度,周期设置短一点,需要在很短时间内计算很长时间内的数据所以调用 reduceByKe

yAndWindow。封装成 Map,IP 段、IP 总量、IP段5分钟内总量、5分钟内关键页面总量、5分钟内 UA 种类,实际要一个 IP 和数值。

数值与其它数据进行计算,将IP 里每一个抽出,先将数据封装为 Map,Map 的 key 是 IP,value 为值。IP 为 key,值为总量。有了 IP 直接调用 Map get IP 拿到值,后续要抽数据,为了方便抽取转换为 Map.

image.png

粘贴到开发工具

//抽取数据中的 IP

//截取出 ip 的前两位

//将前两位作为 key,1作为 value 输出

//调用 reduceByKeyAndWindow 计算最终每个ip段的总量

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

相关文章
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
1205 0
|
3月前
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
3月前
|
数据采集 消息中间件 NoSQL
分布式爬虫的全局请求间隔协调与IP轮换策略
分布式爬虫的全局请求间隔协调与IP轮换策略
|
7月前
|
数据采集
Haskell编程中,利用HTTP爬虫实现IP抓取
以上就是利用Haskell编写IP抓取爬虫的详细步骤。希望这篇文章的演示对于理解在Haskell这种函数式编程语言中如何实现网络爬虫有所帮助,而其中的网络访问、标签解析和列表处理等技术在许多其他的问题中都有广泛的应用。
180 26
|
5月前
|
数据采集 机器学习/深度学习 边缘计算
Python爬虫动态IP代理报错全解析:从问题定位到实战优化
本文详解爬虫代理设置常见报错场景及解决方案,涵盖IP失效、403封禁、性能瓶颈等问题,提供动态IP代理的12种核心处理方案及完整代码实现,助力提升爬虫系统稳定性。
393 0
|
6月前
|
数据采集 机器学习/深度学习 Web App开发
Python爬虫如何应对贝壳网的IP封禁与人机验证?
Python爬虫如何应对贝壳网的IP封禁与人机验证?
|
7月前
|
数据采集 运维 监控
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
随着互联网数据采集需求的增长,传统爬虫架构因固定IP易封禁、资源浪费及扩展性差等问题逐渐显现。本文提出基于Serverless与代理IP技术的新一代爬虫方案,通过动态轮换IP、弹性调度任务等特性,显著提升启动效率、降低成本并增强并发能力。架构图与代码示例详细展示了其工作原理,性能对比数据显示采集成功率从71%提升至92%。行业案例表明,该方案在电商情报与价格对比平台中效果显著,未来有望成为主流趋势。
285 0
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
|
6月前
|
数据采集 Python
解决requests爬虫IP连接初始问题的方案。
通过上述技艺,爬虫程序的调试和优化将变得十分高效,最妙的是,这些技术诀窍不仅可以帮你避开网络世界里的雷区,更能让你在数据抓取的战场上游刃有余。
112 0
|
7月前
|
数据采集 人工智能 边缘计算
爬虫IP代理效率优化:策略解析与实战案例
本文深入探讨了分布式爬虫中代理池效率优化的关键问题。首先分析了代理效率瓶颈的根源,包括不同类型代理的特点、连接耗时及IP失效问题。接着提出了六大核心优化策略:智能IP轮换矩阵、连接复用优化、动态指纹伪装、智能重试机制等,并结合电商价格监控、社交媒体舆情分析和金融数据抓取三个实战案例,展示了优化效果。同时建立了三维效率评估体系,从质量、成本和稳定性全面衡量性能。最后展望了AI驱动调度、边缘计算融合等未来演进方向,帮助爬虫系统实现从“暴力采集”到“智能获取”的进化,大幅提升效率并降低成本。
299 0
|
数据采集 中间件 定位技术
新手爬虫er必刷!如何使用代理IP全攻略!
在爬虫开发中,代理IP是规避IP封锁和请求频率限制的重要工具,通过分散请求压力并模拟不同地理位置,提高数据抓取稳定性和成功率。本文详细介绍了代理IP的基本概念、选择服务的关键因素、获取及使用方法,包括Python中的Requests库和Scrapy框架的具体应用,以及IP管理与轮换策略,帮助新手掌握代理IP的使用技巧。