基于spark和kafka反爬虫技术【第一天】

1.技术背景

现在很多购票网站在互联网提供查询、预定等服务,有大量用户访问的同时,也存在着大量爬虫,爬虫消耗了系统资源,但是没有转化为销量,导致系统资源虚耗,严重时造成系统波动,影响正常用户访问购票。通过日志分析,发现官网访问中存在大量爬虫,且通过ip伪装。
为了限制伪装奇数越来越强的爬虫访问和恶意占座行为,需要开发大数据爬虫工具。

2. 项目概述

2.1 系统功能

数据管理:数据采集、分类、处理、结构化

流程管理:链路的统计,实时监控,执行相应的策略

策略管理:根据对应的算法,进行关联规则的分析

规则管理:通过我们手动设置反爬规则

实时监控:监控集群负载情况,根据数据个对应的特性监控爬虫行为

数据可视化:将结果进行可视化,属于运营部门或前端部门实现

2.2 js埋点生成数据并发送过程

基于spark和kafka反爬虫技术【第一天】

2.3 数据流程的描述(技术架构的描述)

步骤一:

1、将lua嵌入到我们的数据采集服务器中

2、将采集的数据用脚本发送到kafka

3、使用streaming消费kafka数据,进行数据的过滤、脱敏、分类、结构化等操作,然后将数据发送到kafka

步骤二:

1、离线处理,使用sparkcore/sql,统计报表,生成规则

2、将结果输出到mysql供web配置

步骤三:

1、通过streaming获取kafka数据

2、根据配置,进行反爬业务处理

3、将反爬黑名单存入redis

4、nginx获取redis黑名单数据进行反爬的过滤
基于spark和kafka反爬虫技术【第一天】

2.4 逻辑架构设计

数据采集层:使用数据采集器(lua),将数据采集到kafka

数据处理层:

​ 首先读取kafka的数据,

​ 然后进行数据清洗、脱敏、分类、解析、加工,

​ 最后将结构化的数据推送到kafka

实时计算层:

​ 获取web中的配置规则

​ 通过规则进行反爬虫计算

​ 将计算结果存入redis,后期备份到hdfs

离线/准实时计算层:

​ 获取kafka/hdfs数据进行报表指标分析

​ 将结果存入mysql,为web过滤配置提供服务

数据展示层:在web展示对应的结果数据,或者用于使用者手动改动其规则阈值
基于spark和kafka反爬虫技术【第一天】

2.5 数据平台

数据平台一般是作为结果展示和提交任务的作用的,当使用者有任务需要提交时,在数据平台的对应页面输入提交任务的参数,然后点击提交按钮。此时该提交行为会远程调用任务运行脚本,进而将大数据应用程序提交的集群上运行对应的job。等应用程序运行出结果后,会将结果数据对接到对应的数据库。数据平台会定时地获取数据库结果数据进行展示。

2.6 导入web项目

导入web前需要在本地安装tomcat
安装步骤:
1、将tomcat压缩包解压到本地
2、配置tomcat的环境变量
配置CATALINA_HOME
变量值填写刚刚解压的tomcat存放路径。
配置CATALINA_BASE
变量值填写解压后的tomcat存放路径。
在path中添加%CATALINA_HOME%\lib;%CATALINA_HOME%\bin
启动tomcat的方法:
第一种,进入tomcat目录下,进入bin目录,双击startup.bat文件。
第二种,cmd进入tomcat下的bin目录,输入startup.bat回车,就可以启 动 tomcat了。 接下来在浏览器地址栏输入localhost:8080,如果出现一只汤姆猫 的页面,恭喜你,tomcat启动成功啦
1、打开idea用import project 的方式导入项目
2、保证idea的maven的配置环境正确
打开pom.xml获取依赖,如果依赖爆红的话,需要更改maven 的路径
基于spark和kafka反爬虫技术【第一天】
3、更改mysql和Redis的连接配置(resources包里的config.properties)
基于spark和kafka反爬虫技术【第一天】
基于spark和kafka反爬虫技术【第一天】
更改hibernate.cfg.xml文件
基于spark和kafka反爬虫技术【第一天】
4、在idea中设置tomcat
File -> Settings -> Plugins ,搜索tomcat的插件,下载安装,重启idea
在顶部菜单 Run -> Edit Configurations 进入设置运行配置界面
选择配置界面左上角的加号,就可以看到smart tomcat的添加插件,选择插件添加新配置。

5、配置tomcat

新建完tomcat的配置后,需要对tomcat做以下配置:
1、项目名称
2、deployment:部署地址,注意此处需要填写的路径是源码里webapp的路径。
3、Context Path: 发布的上下文,即访问url的前面的根路径(会自动识别,一般不需要修改)
4、tomcat访问相关的端口
5、启动tomcat虚拟机的相关参数,如设置虚拟机的内存空间等等(开发一般不需要设置)
基于spark和kafka反爬虫技术【第一天】
至此,配置基本完成,启动Redis集群,运行项目,如果没有报错,则配置没有问题
基于spark和kafka反爬虫技术【第一天】
网页输入http://localhost:8082/gciantispider_web/pages/index.jsp
基于spark和kafka反爬虫技术【第一天】