发明内容
鉴于上述问题,本发明的目的在于提供一种地图瓦片数据爬虫的识别方法,旨在解决现有网站地图数据被网络爬虫恶意下载的技术问题。
一方面,所述地图瓦片数据爬虫的识别方法包括下述步骤:
步骤S1、连接数据源;
步骤S2、接收从数据源输出的数据流,并对数据流预处理;
步骤S3、为预处理后的数据流指定时间戳和水印延迟;
步骤S4、将数据流进行数据格式转换处理,转变成键值对形式的数据流,其中指定键为访问ip,指定值为每条数据的内容;
步骤S5、设置时间窗口;
步骤S6、根据地图瓦片数据爬虫识别逻辑,筛选出每个时间窗口内的爬虫ip。
进一步的,所述方法还包括下述步骤:
步骤S7、把识别出的每个时间窗口中的爬虫ip存入数据库表格中。
进一步的,所述识别逻辑具体为:统计每个时间窗口内, x、y、z三个数据,其中:
统计每个时间窗口内含有同一ip的数据条数,记此数据条数为x;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级)”为键的数据条数,记此数据条数为y;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级,地图切片行号,地图切片列号)”为键的数据条数,记此数据条数为z;
下述两条逻辑中,只要当前ip的一次行为满足任一条逻辑,即可认定当前ip为爬虫ip;
逻辑一:
逻辑二:
其中
是多线程权重参数,
是针对多线程数据下载的阈值参数;
是重复权重参数,
是针对数据重复下载的阈值参数。
进一步的,所述步骤S2中,预处理过程具体为:检查数据流中要保留的字段是否有空值或者空字符串,如果有则用0替换,且如果属性是整数则转化成int类型,如果属性包含小数则转化成float类型。
进一步的,输入的数据流包含以下字段:访问ip,访问时间,请求响应状态,请求资源类型,响应流量,请求流量,服务处理时长,请求处理时长,浏览器User-Agent,地图切片矩阵集合名,地图切片矩阵名,地图层级,地图切片行号,地图切片列号;其中要保留的字段有访问ip,访问时间,地图切片矩阵集合名,地图切片矩阵名,地图层级,地图切片行号和地图切片列号。
另一方面,所述地图瓦片数据爬虫的识别系统,包括:
连接单元,用于连接数据源;
预处理单元,用于接收从数据源输出的数据流,并对数据流预处理;
延迟处理单元,用于为预处理后的数据流指定时间戳和水印延迟;
数据格式转换单元,用于将数据流进行数据格式转换处理,转变成键值对形式的数据流,其中指定键为访问ip,指定值为每条数据的内容;
时间窗口设置单元,用于设置时间窗口;
识别单元,用于根据地图瓦片数据爬虫识别逻辑,筛选出每个时间窗口内的爬虫ip。
进一步的,所述系统还包括:
结果输出单元,用于把识别出的每个时间窗口中的爬虫ip存入数据库表格中。
进一步的,所述识别单元的识别逻辑具体为:统计每个时间窗口内, x、y、z三个数据,其中:
统计每个时间窗口内含有同一ip的数据条数,记此数据条数为x;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级)”为键的数据条数,记此数据条数为y;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级,地图切片行号,地图切片列号)”为键的数据条数,记此数据条数为z;
下述两条逻辑中,只要当前ip的一次行为满足任一条逻辑,即可认定当前ip为爬虫ip;
逻辑一:
逻辑二:
其中
是多线程权重参数,
是针对多线程数据下载的阈值参数;
是重复权重参数,
是针对数据重复下载的阈值参数。
本发明的有益效果是:本发明技术方案利用流式数据处理方式,同时利用网站的访问请求信息和地图瓦片数据下载的信息,根据生产环境的具体情况,合理设置阈值参数,实现实时识别爬虫ip。本方案稳定、快速、高效、易扩展,考虑了多线程数据下载和相同数据重复下载的情况,适用于一般的数据爬虫场景。对未来大数据爬虫的识别方法都有一定的参考意义。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例提供的地图瓦片数据爬虫的识别方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。
如图1所示,本实施例提供的地图瓦片数据爬虫的识别方法包括下述步骤:
步骤S1、连接数据源。
本步骤不限定数据源的类型。数据源不限于分布式消息队列。也可以是文件系统或数据库。
连接数据源可以获取日志数据流,日志数据采集、运输使用的是大数据架构。日志收集系统负责采集网站实时生成的日志数据,然后接收采集的数据,最后消费数据。
步骤S2、接收从数据源输出的数据流,并对数据流预处理。
预处理的目的是防止计算时出现数据类型不符问题。预处理过程具体为:检查数据流中要保留的字段是否有空值或者空字符串,如果有则用0替换,且如果属性是整数则转化成int类型,如果属性包含小数则转化成float类型。
本步骤输入的数据流包含以下字段:访问ip,访问时间,请求响应状态,请求资源类型,响应流量,请求流量,服务处理时长,请求处理时长,浏览器User-Agent,地图切片矩阵集合名,地图切片矩阵名,地图层级,地图切片行号,地图切片列号。其中要保留的字段有访问ip,访问时间,地图切片矩阵集合名,地图切片矩阵名,地图层级,地图切片行号和地图切片列号。这些保留的字段需要根据通过本步骤进行预处理。
步骤S3、为预处理后的数据流指定时间戳和水印延迟。
数据流的时间戳是数据流的时间标记。通过指定数据流的时间戳,就可以知道每条数据属于哪个时间窗口。
指定水印是为了处理有些数据接收时间的延迟。正常情况下,每条数据的接收时间应该落在自己所属时间窗口内,则这些数据可被处理。但实际情况是一条数据的接收时间会超过了时间窗口终止时间点。
因此本步骤设置了水印延迟,水印延迟是相对时间窗口终止时间点的允许延迟时长,在该水印延迟内的数据可被处理。亦即,一条数据可被处理的时间范围是时间窗口起始时间点,到时间窗口终止时间点加上水印的最终时间点。
步骤S4、将数据流进行数据格式转换处理,转变成键值对形式的数据流,其中指定键为访问ip,指定值为每条数据的内容。
本步骤是对数据流进行格式转换。对一个时间窗口内所有接收到的数据,根据指定的键名称,聚合含有此ip的所有数据,方便后续的分析。
步骤S5、设置时间窗口。
时间窗口长度的单位为秒,所述时间窗口可根据实际情况设定,不同的情况选不同的窗口,不固定。具体可以为数据流指定滑动事件时间窗口或滚动事件时间窗口,这两种时间窗口都需要指定时间窗口长度,时间窗口长度是定值,可以根据实际需求设置。而其中滑动事件时间窗口还需要为数据流指定窗口滑动步长,窗口滑动步长是指两个相邻的时间窗口起始时间点的时间间隔,步长的单位为秒。
步骤S6、根据地图瓦片数据爬虫识别逻辑,筛选出每个时间窗口内的爬虫ip。
本步骤首先要记录三条数据,具体为统计每个时间窗口内的 x、y、z三个数据,其中:
统计每个时间窗口内含有同一ip的数据条数,记此数据条数为x;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级)”为键的数据条数,记此数据条数为y;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级,地图切片行号,地图切片列号)”为键的数据条数,记此数据条数为z。
本过程有两条识别逻辑。
逻辑一:
逻辑二:
其中
是多线程权重参数,
是针对多线程数据下载的阈值参数;
是重复权重参数,
是针对数据重复下载的阈值参数。作为一种实例列举,逻辑一的参数取值为
;逻辑二的参数取值为
。参数的具体取值视具体生产环境而定。
在每个时间窗口中,单位时间内(每秒),针对每个ip的行为数据进行逻辑识别:上述两条逻辑中,只要当前ip的一次行为满足任一条逻辑,即可认定当前ip为爬虫ip。
步骤S7、把识别出的每个时间窗口中的爬虫ip存入数据库表格中。本步骤最后将结果输出。
本发明实施例方法,首先连接数据源,获取日志数据流;对数据流进行数据预处理,保留有用的字段,确定保留的字段数据类型正确,防止因为数据类型问题对计算造成影响;然后为数据流指定水印和时间戳,指定日志数据的ip字段作为键,为了在时间窗口内根据键名称进行数据聚合操作。指定时间窗口长度(或者同时指定滑动步长),最后执行地图瓦片数据爬虫的识别逻辑,识别结果保存。
实施例二:
图2示出了本发明实施例提供的地图瓦片数据爬虫的识别系统的结构,为了便于说明仅示出了与本发明实施例相关的部分。
如图2所示,本实施例提供的地图瓦片数据爬虫的识别系统,包括:
连接单元1,用于连接数据源;
预处理单元2,用于接收从数据源输出的数据流,并对数据流预处理;
延迟处理单元3,用于为预处理后的数据流指定时间戳和水印延迟;
数据格式转换单元4,用于将数据流进行数据格式转换处理,转变成键值对形式的数据流,其中指定键为访问ip,指定值为每条数据的内容;
时间窗口设置单元5,用于设置时间窗口;
识别单元6,用于根据地图瓦片数据爬虫识别逻辑,筛选出每个时间窗口内的爬虫ip。
另外所述系统还包括:
结果输出单元7,用于把识别出的每个时间窗口中的爬虫ip存入数据库表格中。
上述各个功能单元对应实现了实施例一中的步骤S1-S7。各功能单元的所执行的流程这里不再赘述。其中所述识别单元的识别逻辑具体为:统计每个时间窗口内, x、y、z三个数据,其中:
统计每个时间窗口内含有同一ip的数据条数,记此数据条数为x;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级)”为键的数据条数,记此数据条数为y;
统计每个时间窗口内,以“(ip,地图切片矩阵名,地图层级,地图切片行号,地图切片列号)”为键的数据条数,记此数据条数为z;
下述两条逻辑中,只要当前ip的一次行为满足任一条逻辑,即可认定当前ip为爬虫ip;
逻辑一:
逻辑二:
其中
是多线程权重参数,
是针对多线程数据下载的阈值参数;
是重复权重参数,
是针对数据重复下载的阈值参数。
综上,本方案稳定、快速、高效、易扩展,考虑了多线程数据下载和相同数据重复下载的情况,适用于一般的数据爬虫场景。对未来大数据爬虫的识别方法都有一定的参考意义。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。