爬虫识别-IP 统计需求及代码及效果|学习笔记

简介: 快速学习爬虫识别-IP 统计需求及代码及效果。

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

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


爬虫识别-IP 统计需求及代码及效果

 

内容介绍:

一、需求

二、设计

三、实践

四、思路

五、执行效果

六、总结

 

一、需求

IP 段访问总量计算完毕

//2 按 IP 地址聚合-某个 IP,5分钟范围内访问量

某个 IP,5分钟内总访问量

计算某个IP在5分钟的访问量,是否为爬虫。八个指标都是爬虫具备的特性,5分钟范围内 IP 数量越多,是爬虫的可能性越大。

普通人查询5分钟内查10-20次,如果是爬虫次数非常多。根据访问总量,企业系统内设置针对5分钟范围内 IP 访问总量指标的阈值。如果数据计算出的结果超过设置的阈值,那么很可能是爬虫。

5分钟内的 IP 访问量设置为100,正常用户访问总量超过100可能性不大,爬虫很容易超过。

 

二、设计

获取数据,IP 段统计数量,截取 IP 段,做 wordcount。计算 IP 出现多少次,直接拿 IP 做 wordcount

1、拿到 kafka 数据,获取数据

2、统计 remoteaddress 的 wordcount

 

三、实践

拿代码 CoreRule.ipCounts() 方法为空,传入数据 processedData

CoreRule.ipCounts(processedData)

流程如下:

 image.png

第一个算完,第二个还在此批数据读出,数据要用很多次。

创建方法

image.png

代码补全

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

此代码做第二个功能,按 IP聚合,统计某个 IP,5分钟内访问总量

复制粘贴放到最后

 

四、思路

1、抽取出数据中的 IP

2、将 ip 作为 key,1作为 value,输出

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

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

1、抽取出数据中的 IP

ProcessedData.map(message)=>{

//抽取出数据中的 IP

val ip=message.remoteAddr

拿到数据抽取出 IP .map 一条数据,此数据做遍历。val ip=message 直接调用.remoteAdder 为 IP

2、将 ip 作为 key,1作为 value,输出

(ip,1)返回结束

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

reduceByKeyAndWindow 求总量,两个数据a和b,a和b设置类型为 Int,做a+b操作。第一个参数窗口的长度 Seconds 6秒钟,第二个参数 Seconds 2秒钟滑动周期

}).reduceByKeyAndWindow((a:Int,b:Int)=>a+b,Seconds(6)seconds(2))//调用 reduceByKeyAndwindow计算最终每个ip的总量

前面定义变量接收,返回,变量为 ipblockCounts,ipblockCounts 返回

val ipCounts=ProcessedData.map(message)=>{

ipCounts

}

代码写完前面做接收,某个 IP 总数计算完毕。

val ipCounts=CoreRule.ipCounts(processedData)

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

定义 ipCountsMap=null 遍历 map

ipblockCounts.foreachRDD(rdd=>{

rdd 转换为 map

rdd.collectAsMap()

数据类型[String,Int],String 为 IP,Int是值。数据类型给 ipCountsMap

复制粘贴到 rdd.collectAsMap() 报红,将 val 改为 var

var ipBlockCountsMap :collection.Map[string,Int] =null

ipBlockCountsMap=rdd.collectAsMap()

 

五、执行效果

ipBlockCounts.foreachRDD(rdd=>rdd.foreach(println)

跑起来应该是一个 IP 和数量,没有做截取。执行,数据预处理程序跑起来、爬虫识别跑起来,会输出 IP 和总数。

19/05/17 17:20:50 INFO VerifiableProperties: Property zookeeper.

connect is overridden to

19/05/17 17:20:50 INFO VerifiableProperties: Property zookeeper.

connect is overridden to

(192.168.100.2,5)

192.168.100.2 为 IP,5为访问总数。一秒钟跑一次,窗口宽度6秒钟,出现5可能6秒钟恰好跨在两个1秒钟中间。

爬虫停止,5分钟范围内 IP 访问总量,执行6秒钟改为5分钟即可。

 

六、总结

1、抽取出数据中的 IP

val ip=message.remoteAddr

2、将 ip 作为 key,1作为 value,输出

(ip,1)

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

.reduceByKeyAndwindow((a:Int,b:Int)=>a+b,Seconds(6)seconds(2))

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

var ipBlockCountsMap :collection.Map[string,Int] =null

ipblockCounts.foreachRDD(rdd=>{

ipBlockCountsMap=rdd.collectAsMap()

})

截取 IP,将 ip 作为 key,1作为 value,输出,调用 reduceByKeyAnd

Window 为 IP 出现的次数。与 wordcount 一样

reduceByKeyAndWindow 适用场景,计算频繁短时间内计算大时间范围数据,30s计算5分钟

相关文章
|
5月前
|
数据采集 开发者
如何编写有效的爬虫代码来避免网站的反爬虫机制?
如何编写有效的爬虫代码来避免网站的反爬虫机制?
52 1
|
5月前
|
数据采集 Python
【Python自动化】多线程BFS站点结构爬虫代码,支持中断恢复,带注释
【Python自动化】多线程BFS站点结构爬虫代码,支持中断恢复,带注释
59 0
|
5月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
321 0
|
14天前
|
数据采集 中间件 定位技术
新手爬虫er必刷!如何使用代理IP全攻略!
在爬虫开发中,代理IP是规避IP封锁和请求频率限制的重要工具,通过分散请求压力并模拟不同地理位置,提高数据抓取稳定性和成功率。本文详细介绍了代理IP的基本概念、选择服务的关键因素、获取及使用方法,包括Python中的Requests库和Scrapy框架的具体应用,以及IP管理与轮换策略,帮助新手掌握代理IP的使用技巧。
|
5天前
|
数据采集 编解码
jupyter-notebook编写爬虫代码的时候cookie值自动转码的问题
jupyter-notebook编写爬虫代码的时候cookie值自动转码的问题
13 0
|
2月前
|
数据采集 存储 JSON
推荐3款自动爬虫神器,再也不用手撸代码了
推荐3款自动爬虫神器,再也不用手撸代码了
|
2月前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
2月前
|
数据采集 XML 前端开发
Python爬虫实战:利用代理IP爬取百度翻译
Python 爬虫实战:利用代理 IP 爬取百度翻译
148 2
|
4月前
|
数据采集 存储 JavaScript
(2024)豆瓣电影TOP250爬虫详细讲解和代码
这是一个关于如何用Python爬取2024年豆瓣电影Top250的详细教程。教程涵盖了生成分页URL列表和解析页面以获取电影信息的函数。`getAllPageUrl()` 生成前10页的链接,而`getMoiveListByUrl()` 使用PyQuery解析HTML,提取电影标题、封面、评价数和评分。代码示例展示了测试这些函数的方法,输出包括电影详情的字典列表。
116 3
|
4月前
|
数据采集
技术心得:我在写爬虫的验证码识别方案之有个平台叫无限代码
技术心得:我在写爬虫的验证码识别方案之有个平台叫无限代码
38 0
下一篇
无影云桌面