爬虫识别-熟悉八个指标|学习笔记

简介: 快速学习爬虫识别-熟悉八个指标

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

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


爬虫识别-熟悉八个指标

 

内容介绍:

一、 课程计划

二、 反爬虫 Rulecompute 功能描述

三、 课程总结

 

一、 课程计划

到目前为止,回顾整个流程,整个流程中数据预处理阶段已经完成,

image.png 

然后再看总的流程,总的流程3-1、3-4数据预处理彻底结束以后,接下来开始进行第5步,5-1、5-2和6,此过程就是进行实时计算(爬虫识别),使用到的基础是 SparkStreaming。

 image.png

也就是进入了第5个阶段。如下是第5个阶段的课程计划,首先先熟悉反爬虫指标的作用。

第五阶段

课程计划

1、熟悉反爬虫指标

2、从 kafka 对接 DataProcess 数据

3、数据分割封装

4、加载数据库规则

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

6、按 IP 地址聚合-某个 IP .5分钟内总访问量

7、按 IP 地址聚合某个 IP .5分钟内的关键页面访问总量

8、按 IP 地址聚合﹣某个 IP .5分钟内的 UA 种类数统计

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

10、按 IP 地址聚合﹣某个 IP ,5分钟内访问关键页面的 Cookie 数

10、按 IP 地址聚合﹣某个 IP ,5分钟内访问关键页面最短访问间隔

10、按 IP 地址聚合﹣某个 IP ,5分钟内小于最短访问间隔(自设)的关键页面查询次数

回到数据处理的流程,要做的事情是爬虫的识别。前面已经处理完成数据,现在需要去识别,问题是用什么样的指标(标准)来衡量它一定是爬虫?上述有8个指标,操作之前要先熟悉一下每个指标的意思以及为什么要用这个指标,熟悉指标以后,开始读取数据。从 Kafka 中对接 DateProcess 数据,把数据读取出来,具体是图上的5-1步骤:从 Kafka 中把刚刚第4步处理好的信息,读过来读到程序当中,即5-1读取数据,也就是第二步。第3步是对数据进行分割并且进行封装。问题是这里面为什么要进行封装,原因是前面第4步在推进去时又把数据进行了拼接,拼接之后推到 Kafka 中是一条数据,然后读出来数据还是一条,一条数据使用不太方便,用颈塞子颈拼接的。需要把它用颈塞子颈拆封,拆封完之后再把它封装成  ProcessDate,在数据预处理阶段封装成 ProcessDate,在里面调用它点的方式能得到一个一个的数据,识别的过程中读过来一条数据进行拆封,拆封完之后还把它封装成 ProcessDate,这样再用点的方式去调用它的属性就能得到一个一个的数据,这是第3步。再往后是加载数据库的规则。规则就是上图的第5-2步,在上面我们会用到一些指标,如关键页面、过滤规则等等类似于此种指标,我们需要从数据库中把它读取过来,5-2读到我们的实时计算程序当中。读过来之后,我们利用数据以及读过来的规则去判断它是否是爬虫,关键页面还有规则,规则中包括结合这8个指标中的一些规则。从第5步一直到第12步是这8个指标一个一个的实现,也就是说有8个指标,前面的熟悉了哪个指标,后面就要把每一个指标的每一个数据都把它算出来,算的过程会使用到数据库中的数据。

 

二、 反爬虫 Rulecompute 功能描述

1. 模块功能

爬虫识别的功能用 Rulecompute 来表示,也就是说创建的数据处理方法叫 Rulecompute。

反爬虫功能描述中一共要实现8个指标,分别是以下八个:

反爬虫统计字段规则:基于 IP 段的统计

单位时间内的 IP 段访问量(前两位)

以192.168.56.112为例,IP 段是192.168

以244.12.134.56为例,IP 段是244.12

要判断发过来的数据的这个批次中的 IP 段有多少,每一个IP段有多少数据,要统计IP段的原因是我们国内,全国全球、每一个地区、每一个国家、每一个省市的IP段都是不一样的,如果把IP段统计出来,就知道这个IP段在此批次中有多少个用户进行了访问,比如说192.168是北京的,统计完成后就知道北京此批次中有多少个用户进行了访问;假设说244.12是伦敦的,统计完成后就知道伦敦有多少个用户来进行访问。所以单位时间内的IP段访问量此功能就是来统计某一个地区有多少个用户来进行访问。 

基于 IP 的统计

后面2-8都是基于某一个IP的。第1个是单位时间内的访问总量。举一个例子,比如说在5分钟时间范围内,某一个IP访问了多少次,就是说这个服务器(网站)5分钟之内被某一个IP访问了多少次,次数越多它越可能是爬虫。假如已经给它设置了一个阈值(100次),某一个IP 5分钟之内访问了100次这个官网,那么它很可能是爬虫或者涉嫌是爬虫,这是第一个指标。计算出访问的数量越高,是爬虫的可能性越大,这是第二个指标。接下来是某一个IP单位时间内(5分钟范围内)关键页面的访问总量,就是上面不管是不是关键页面,只要访问了就计算。下面的指标是必须访问关键页面,访问普通页面和一般页面都不计算,只统计关键页面的访问总量。即此IP在5分钟时间范围内访问了多少次,访问次数越多,它是爬虫的可能性越大。注意:这里面首先要说明哪些是关键页面,回顾上面的加载数据库规则。其中有一部分就是说明关键页面是什么,用 URL 匹配某个关键页面是否能匹配到?匹配成功此页面就是关键页面。关键页面的总量越多,它是爬虫的可能性越大。再往后看某一个IP单位时间范围内的 UA 种类统计数量,就是说如果它是爬虫,有可能为了防止被抓住,频繁的切换 UA。要统计某一个IP 在5分钟时间范围内,UA出现的种类,如果出现的次数越多,表示它很有可能是爬虫。只有爬虫才会反反复复的去切换UA的种类,正常用户是不会如此操作,因此这也是判断它是否是爬虫的指标。在往后某一个IP单位时间内(5分钟),访问的关键页面的 Cookie数,前提是它必须是关键页面。要统计 Cookie出现的数量,这个数量肯定要去重。只有爬虫才会频繁的切换Cookie,前面的 UA 也要去重。一个浏览器访问了10次相当于只有一个浏览器(只有一个客户端),换了另一个浏览器,就是换了另一个 UA,这就算作第2次。Cookie  要去重,UA 也要去重。

再往后看,某一个IP 5分钟时间范围内查询不同行程的次数,也就是说查询不同行程的次数越多,是爬虫的可能性越大。比如说从北京到上海,从上海到南京,南京到苏州,苏州到广州,广州到深圳,深圳到北京,5分钟时间范围内此IP来来回回查询次数越多,它是爬虫的可能性越大,种类越多可能性越大。不同行程如从北京到上海查询了10次,查询了10次也作为一次(去重),需要的是不同行程的次数,相同行程的作为一次(去重)。

再往后看,单位时间内的关键页面最短访问间隔。爬虫作为程序速度非常快,也就是说假设从第1次、第2次、到第10次,10次之中有9个间隔,如果是爬虫,这9个间隔的时间比较短,就找最短的那个,间隔时间越小是爬虫的可能性越大,这是一个指标。如果是正常人去访问,正常人的时间间隔比较大,操作过程中可能要持续两三秒去切换,是爬虫的可能性就会非常小,所以时间间隔越小是爬虫的可能性越大。

再往后看,,某一个IP在单位时间内(5分钟)小于最短访问间隔(自设)的关键页面查询次数,假设说给它设置了两秒钟,小于两秒钟的,而且是关键页面的的查询次数,假设设置成两秒钟或一秒钟,小于这个值的次数越多,是爬虫的可能性越大。如果是正常人,设置两秒钟,正常人可能反反复复的访问,2秒钟、1秒钟、5秒钟、8秒钟都有可能,小于自设的时间的次数会非常少。爬虫每一次都非常快,10次查询有9个间隔,而9个间隔中可能所有都小于两秒,那它是爬虫的可能性就非常大 

单位时间内的访问总量

单位时间内的关键页面访问总量

单位时间内的 UA 种类数统计

单位时间内访问关键页面的 Cookie 数单位时间内查询不同行程的次数

单位时间内的关键页面最短访问间隔

单位时间内小于最短访问间隔(自设)的关键页面查询次数

 

三、 课程总结

以上就是爬虫识别8个指标的具体实践思路。要识别它是否是爬虫可以通过这8个指标来进行判断,不能仅仅通过某一个指标就断定它是爬虫,要综合来判断,这8个是确定它是否是爬虫的依据。

相关文章
|
11月前
|
数据采集 机器学习/深度学习 安全
Python爬虫之极验滑动验证码的识别
了解极验滑动验证码、特点、识别思路、初始化、模拟点击、识别缺口、模拟拖动。
584 0
|
11月前
|
数据采集 Web App开发 文字识别
Python爬虫之点触验证码的识别
点触验证码识别思路,初始化,获取,识别。
280 0
Python爬虫之点触验证码的识别
|
数据采集 人机交互 API
「Python」爬虫-7.验证码的识别
> 本文主要介绍如何处理一些网页中简单的验证码问题。~~(只提供简单的思路,随着技术的发展,一些验证码已经防范的非常好了,一般的解决方法可能过不了验证码这一关🤺~~
453 0
|
11月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
211 0
|
数据采集 SQL 消息中间件
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
快速学习数据预处理-历史爬虫判断-实现代码及效果
178 0
数据预处理-历史爬虫判断-实现代码及效果|学习笔记
|
数据采集 监控 前端开发
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
快速学习数据预处理-历史爬虫判断-需求与实现思路
163 0
数据预处理-历史爬虫判断-需求与实现思路|学习笔记
|
数据采集 算法 大数据
爬虫识别-总结及效果| 学习笔记
快速学习爬虫识别-总结及效果
爬虫识别-总结及效果| 学习笔记
|
数据采集 存储 消息中间件
爬虫识别-准备离线计算数据| 学习笔记
快速学习爬虫识别-准备离线计算数据
爬虫识别-准备离线计算数据| 学习笔记
|
数据采集 大数据 数据库
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
快速学习爬虫识别-指标碰撞-准备数据代码实现
爬虫识别-指标碰撞-准备数据代码实现| 学习笔记
|
11天前
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
下一篇
oss创建bucket