爬虫识别-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,便于后续提取、使用。

相关文章
|
8月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
457 0
|
数据采集 安全 数据中心
爬虫应该选择住宅ip代理还是数据中心代理?
爬虫应该选择住宅ip代理还是数据中心代理?
爬虫应该选择住宅ip代理还是数据中心代理?
|
4月前
|
数据采集 中间件 定位技术
新手爬虫er必刷!如何使用代理IP全攻略!
在爬虫开发中,代理IP是规避IP封锁和请求频率限制的重要工具,通过分散请求压力并模拟不同地理位置,提高数据抓取稳定性和成功率。本文详细介绍了代理IP的基本概念、选择服务的关键因素、获取及使用方法,包括Python中的Requests库和Scrapy框架的具体应用,以及IP管理与轮换策略,帮助新手掌握代理IP的使用技巧。
|
5月前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
5月前
|
数据采集 XML 前端开发
Python爬虫实战:利用代理IP爬取百度翻译
Python 爬虫实战:利用代理 IP 爬取百度翻译
239 2
|
数据采集 存储 安全
Python爬虫实战:利用代理IP爬取某瓣电影排行榜并写入Excel(附上完整源码)
Python爬虫实战:利用代理IP爬取某瓣电影排行榜并写入Excel(附上完整源码)
233 0
Python爬虫实战:利用代理IP爬取某瓣电影排行榜并写入Excel(附上完整源码)
|
8月前
|
数据采集
静态代理IP对反爬虫策略的应对,以及静态ip对爬虫的助力
静态代理IP在爬虫应用中用于隐藏真实IP,抵御反爬策略。选择可靠代理服务提供商,获取代理IP并配置到爬虫程序。为防止被封锁,可定期切换代理IP、使用多个代理、降低爬取频率及伪装HTTP头信息。这些策略能有效提升爬虫的匿名性和安全性。
|
8月前
|
数据采集 定位技术 Python
Python爬虫IP代理技巧,让你不再为IP封禁烦恼了! 
本文介绍了Python爬虫应对IP封禁的策略,包括使用代理IP隐藏真实IP、选择稳定且数量充足的代理IP服务商、建立代理IP池增加爬虫效率、设置合理抓取频率以及运用验证码识别技术。这些方法能提升爬虫的稳定性和效率,降低被封禁风险。
|
8月前
|
数据采集 安全 API
SOCKS5代理IP:为什么它是网络爬虫的首选?
代理IP在网络爬虫中扮演重要角色,尤其是SOCKS5代理因其灵活性(支持多种协议)、高度匿名性、高速稳定性和安全性而备受青睐。它能帮助爬虫绕过访问限制,隐秘高效地收集数据,同时提供身份验证以保障安全。穿云API作为代理协议,在爬虫领域也受到推崇。
|
8月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
205 0
Python爬虫之点触验证码的识别