反爬虫项目
项目实现的背景
很多订票网站的官网在互联网提供查询、预订等服务,如:各种航空公司的官网、去哪网、携程等,有大量正常用
户访问的同时,也存在大量爬虫。爬虫消耗了系统资源,但是却没有转化成销量,导致系统资源虚耗,严重时会造
成系统波动,影响正常用户访问购票。通过系统日志分析等,发现官网访问中存在大量爬虫,且通过大量的 IP 进
行伪装。
项目的概述
- 数据源(网页上的点击日志信息)的获取,方式有很多主要介绍两种:js埋点生成数据和OpenResty生成数据。
js埋点生成数据简单的说就i是在客户浏览的页面上记录客户的操作行为,并将该数据写到log sever服务器中。
OpenResty是集成了Nginx+lua+tomcat的数据采集工具,主要是lua脚本进行数据的采集
- 使用lua脚本将采集到的数据存到kafka(肖峰、解耦、异步等特点)中来。
- 使用sparkStreaming或者flink对数据进行清洗使数据结构化,主要的操作有:转换、分类、过滤、脱敏等操作。
- 将处理好的数据再次存入到 kafka中,处理过后,不同的类别放在kafka中不同的topic中,可以分别进行实时和离线 操作。
- 进行离线操作
使用sparkCore或者SparkSql对数据进行处理,生成规则信息,将结果输出到mysql,供Web配置
- 进行实时操作
使用SparkStreaming或者flink获取kafka中的数据,根据配置进行反爬业务的处理,将反爬黑名单存入Redis,当Nginx接收到客户的请求时,可以获取客户的IP,将该IP与Redis中的进行对比,若相同,则返回402页面,否则正常返回页面。
以上就是整个业务,项目的整体框架流程
错误记录
在导入Web项目时,必须使用import,并且需要修改maven库为自己本地的maven库,修改conf文件中的配置。同时在mysql中建表建库。
模拟实时处理数据
kafka-console-producer.sh生产数据 --> idea模拟消费处理数据 --> 将处理好的数据存入到kafka
//使用flink模拟
//flink中获取Source Sink的工具类
package com.cxl.util
import java.util.Properties
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming<