版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
反爬虫监控平台详细设计与实现摘要爬虫,网络安全最大的威胁之一!在互联网时代,网络爬虫是一个很普遍的技术,并且网络爬虫的入门门槛低,这就造成网络上爬虫横行,消耗网络和机器资源,轻则影响网站服务的访问速度,重则网站无法访问。爬虫技术根据爬取数据类型而分,爬虫有不少种类,比如爬取Email地址的、爬取商品价格的、爬取图片的,以及爬取数据内容的。订票网站是受到恶意爬虫危害较严重的场所之一,我们可以发现很多订票网站存在大量的非法占座会员及非会员手机号用户,存在大量爬虫。爬虫消耗了系统资源,严重时会造成系统波动,影响正常用户访问购票。通过系统日志分析等,可以发现这些爬虫往往通过大量的IP进行伪装。正常用户被热门路线的好车次和航线的特价舱位吸引而通过官网订票的同时,存在大量恶意占座的非法代理。爬虫对网站的性能、信息安全以及客户的用户体验带来了不小的影响。为了减少爬虫对网站性能的影响,减少网站信息泄露,为了限制伪装技术越来越强的爬虫访问和恶意占座行为,给用户以良好的用户体验,需要识别并拒绝爬虫的访问。广泛使用的方法有:人工识别爬虫,通过查看系统日志识别爬虫,通过用户代理信息识别爬虫等。这些手段虽然容易实现,但对爬虫的相关信息缺乏管理,不够自动化和智能,因此需要为网站开发一个反爬虫平台来实时的拦截爬虫。本课题将实现一种为订票网站实时拦截爬虫的防护性能很强的反爬虫监控平台。关键词:反爬虫系统;网络爬虫;大数据;信息安全目录TOC\o"1-3"\h\u23953摘要 I304251.绪论 171291.1研究背景和意义 1256711.2国内外研究现状 1100191.3主要研究内容 27151.4论文组织结构 2227952.系统分析 4227342.1可行性分析 4223832.1.1实施可行性 444822.1.2操作可行性 4292682.1.3经济可行性 4204632.1.4技术可行性 4285012.2业务流程分析 5325632.2.1流程描述 53492.3需求分析 5127342.3.1概述 5223812.3.2主要用例 5285772.3.3用例图 6169462.4本章小结 951593.反爬虫监控平台总体设计 10122213.1系统设计 1074993.1.1系统设计结构 10301143.1.2系统功能模块描述 1091623.1.3系统非功能需求分析 10259143.2系统架构设计与系统功能架构设计 12104673.2.1系统架构设计 12171283.2.2数据采集层 1238493.2.3数据处理层与实时计算层 13165243.2.4数据展现层 14320033.3防爬规则 14236913.3.1数据源 14100783.3.2规则制定 14210103.3.3爬虫特点 1566843.4数据库设计 15277783.4.1数据库E-R图 15115063.4.2数据库表 17243583.5本章小结 18242394.反爬虫监控平台详细设计与实现 1929724.1数据采集层的设计与实现 19308284.1.1场景描述 19134744.1.2技术方案 1981274.1.3数据采集字段(随时更新) 20184634.1.4代码书写 20304714.2数据处理层的设计与实现 236744.2.1场景描述 2396064.2.2技术方案 23326874.2.3数据处理时序图 25114964.3实时计算层的设计与实现 2696124.3.1场景描述 26246794.3.2技术方案 2742104.4数据展示层的设计与实现 35127184.5本章小结 36785.反爬虫监控平台的系统测试 37271725.1测试环境和测试目的 3795865.1.1测试环境 37233705.1.2测试目的 37194315.2功能测试 37100655.2.1首页功能测试 3787715.2.2数据采集功能测试 3828335.2.3数据处理功能测试 39415.2.4规则管理与策略管理功能测试 4074325.2.5数据可视化功能测试 42291575.3本章小结 4320751总结 4420191参考文献 46 1.绪论1.1研究背景和意义近年来随着互联网数据源的繁荣,随着电子商务的兴起,爬虫的需求急剧增加,爬虫会消耗已访问系统上的资源,并且经常未经批准就访问站点。当访问大量页面时,系统波动、服务器负载和资源虚耗问题就会产生。对于不希望被爬网的公共站点,反爬虫机制显得格外重要。订票网站是受到恶意爬虫危害较严重的场所之一,我们可以发现许多订票网站存在大量的非法占座会员及非会员手机号用户。许多购票网站,用户还没来得及抢,票已经没了,正常用户被热门路线的好车次和航线的特价舱位吸引而通过官网订票的同时,存在许多恶意占座的非法代理。在统计用户流量的时候,爬虫也影响了统计结果。爬虫对我们的站点产生了很严重的影响,所以通过反爬技术将爬虫踢出我们的系统,对于订票网站等公共站点显得格外重要。大多数网站要求用户在访问有价值的网站内容之前对其进行身份验证。但如今恶意爬虫采用了越来越多的新算法来躲避拦截,爬虫对站点产生了很严重的影响,因此通过反爬技术识别或强制约束爬虫将爬虫踢出我们的系统能够有效的访问权限和爬取行为的反爬虫方法对于维护商业利益和保持电子商务行业有序竞争起着至关重要的作用。1.2国内外研究现状爬虫可以比人工搜索更快,更深入地检索数据,因此它们可能对站点的性能产生严重的影响。当前对于爬虫的研究领域主要分为爬虫检测技术研究与爬虫技术研究。相比之下,在大数据时代爬虫技术受到了更多的关注,利用互联网时代庞大的网络资源进行竞争对手分析,网络舆情监测,为信息整合与数据采集应用提供新的技术路线。同时,爬虫技术也带来了许多问题,于是爬虫检测技术应运而生。爬虫和反爬虫技术是矛与盾之间的冲突,随着爬虫更新换代速度越来越快,对于反爬虫需要系统化、长期化、标准化、平台化的研究,以防止每次遇到爬虫和反爬虫的问题都进行冗余重复的工作。对于反爬虫,应该实施应用网站反爬虫技术的措施,才能有效屏蔽爬虫工具恶意窃取数据。为了检测和限制恶意爬虫,研究人员开发了许多反爬虫机制,通常可以将其分为两类,一是针对信息源网站的反爬虫技术研究,然后提出有针对性的解决方案,以便合法、高效、轻易地获取开源信息。二是针对恶意爬虫攻击,研究相应的反爬虫解决方案(例如,怎样匹配规则,怎样制定上下策略,更换惩罚等),限制网络爬虫大量的无效访问和恶意检索信息。基于网络流量的分析技术,不仅能识别文本爬取类爬虫,还可以检测其他类型的网络爬虫。该方法通过寻找人类正常用户与爬虫流量特征的不同、查询数量和时间间隔模式的不同来检测是否为爬虫,也就是通过会话的多维特征来分辨正常用户与爬虫这两个类别。1.3主要研究内容爬虫可以获取目的网站的页面内容,比如可以获取各大电商网站或某某博客网的网页内容。并且能模拟用户对网站的点击操作行为,比如点击,请求,注册,购买等行为。爬虫还有一个重要的特性,往往是一次到位引入对应的页面,不像普通用户会先进入首页再进入目标页面。许多购票网站,用户还没来得及抢,票已经没了,在统计用户流量的时候,爬虫也影响了统计结果。由于当前互联网中出现了大量的爬虫,爬虫对我们的站点产生了很严重的影响,本课题的目标是通过反爬技术将爬虫踢出我们的系统,反爬虫监控平台将对爬虫进行监控与分析、对系统功能运行的监控以及对系统性能的监控。本课题将设计并实现基于OpenResty和Spark的反爬虫监控平台,课题主要实现模块有数据管理模块、实时监控模块、策略管理模块、流程管理模块、规则的管理模块、数据的可视化模块、模块说明如下:数据管理模块分为数据采集和数据处理模块,对于数据采集使用lua脚本,对于数据处理,来自前端页面的不同类型的数据要进行相应的处理,如json格式、xml格式、From格式的数据等。实时监控模块分为系统监控和性能监控,其中系统监控主要监控流量和爬虫。性能监控主要关注数据分析的速度。策略管理模块分为策略配置和规则打分,策略配置主要设置防爬规则的阈值从而过滤得到爬虫ip黑名单,规则打分针对防爬规则打分。流程管理模块包括:查看流程、删除流程、新建流程、修改流程、运行和暂停流程,这些基于Web项目来实现。规则的管理模块进行防爬规则的指定,如:单位时间内的IP段访问量、单位时间内关键页面的访问总量、单位时间内浏览器代理出现的次数、单位时间内关键页面最短的访问间隔以及单位时间内查询不同商品、行程的次数等。数据的可视化模块将统计出来的指标如:转化率、爬虫对系统稳定性的影响、爬虫对爬定比的影响等,将这些个指标以图形的形式体现出来。1.4论文组织结构本文总共分为六章进行阐述,其主要结构和内容安排如下:第一章绪论,首先是向大家归纳讲述本课题的研究背景与意义,并且进行分析关于本课题国内外的研究现状,最后进行概括性描述本课题主要研究的内容和实现的模块。第二章针对反爬虫监控平台系统的分析,首先针对平台系统的可行性分析,接着针对业务流程分析,最后是需求分析,使用用例的方法描述产品需求,为用户提供哪些功能,结合用例图,直观地呈现出来。第三章反爬虫监控平台的总体设计,首先对平台的业务和功能需求进行详细地分析,然后阐述了反爬虫监控平台架构的总体设计方案,介绍反爬虫监控平台逻辑架构的四个层次,及四个层次各个模块的功能设计,接着描述了防爬规则,最后是数据库设计。第四章反爬虫监控平台的详细设计与实现,阐述逻辑架构四个层次,针对逻辑架构四个层次的各模块的具体设计与实现。第五章反爬虫监控平台的系统测试,先阐述测试的环境和测试的目的,然后对反爬虫监控平台进行测试分析,以求从测试结果的分析中继续改善反爬虫监控平台。最后是本课题的总结与致谢,先进行简单的总结概括本文所做的工作以及获得的成果,向帮助过我的朋友、同学和老师表示感谢。2.系统分析2.1可行性分析可行性分析在系统实现之前以评估拟议项目或系统的可行性。可行性分析是项目设计与实现过程中四个重要阶段之一。顾名思义,可行性分析是从实用的角度衡量项目开发产品对组织有益的度量。基于许多目的进行了可行性分析,以分析软件产品设计,实现的工作量以及项目最终实现所获得的收益。可行性分析主要集中在以下五个方面。实施可行性分析、操作可行性分析、经济可行性分析、技术可行性分析及法律可行性分析。2.1.1实施可行性 随着互联网数据源的繁荣,随着电子商务的兴起,爬虫的需求急剧增加,爬虫会消耗已访问系统上的资源,并且经常未经批准就访问站点。订票网站是受到恶意爬虫危害较严重的场所之一,我们可以发现许多订票网站存在大量的非法占座会员及非会员手机号用户。许多购票网站,用户还没来得及抢,票已经没了,当爬虫访问页面时,系统波动、服务器负载和资源虚耗问题就会产生。对于不希望被爬网的公共站点,开发反爬虫监控平台显得格外重要,平台针对订票网站,通过对真实用户和网络爬虫浏览网页的行为进行特征提取,构造并使用规则匹配用户数据特征,对其是否属于爬虫进行判断。该方法对网络爬虫的敏感性高,并具有较低的假阴率。2.1.2操作可行性随着“大数据时代”的兴起,可视化已成为越来越重要的工具,反爬虫监控平台引入了数据可视化前端框架,将属性数据和图形结合起来,方便理解每天生成的数以万计的数据。数据可视化通过将客户关注的数据整理成易于理解的形式,如直观的图表进行展示,突出趋势和异常值,从而改善人机交互体验,良好的可视化效果可以消除数据中的干扰并突出显示有用的信息,实现数据图示化、分析形象化、管理信息化。在部署后将易于操作和维护,将数据进行分类展示,用户可以通过自定义选择配置分类和展示方式,根据不同的配置,系统切换展示不同的图形图表,界面简洁易于上手。2.1.3经济可行性由于当前互联网中出现了大量的爬虫,爬虫对许多订票网站等电子商务网站产生了很严重的影响,一般大型门户网站都会用到反爬虫策略,搭建一个专业的反爬虫平台,来实现反爬虫策略的管理以及个性化的配置,可以节省反爬虫策略反复开发的成本。通过反爬技术限制伪装技术越来越强的爬虫访问和恶意占座行为,确保有良好SEO的同时给用户以良好的用户体验。反爬虫技术方面的投资对于企业维护站点和提高服务的质量至关重要。争取通过良好的设计,提高系统性能、防止数据泄露,可以极大减少将来的维护代价和其他成本。尽管这项研究的实施需要硬件和软件成本以及人工成本,但是比起这些有形成本,爬虫还会带来一些无形隐患,例如商誉损失或运营效率低下。反爬虫监控平台为订票网站等电商系统带来的是长期的收益。2.1.4技术可行性分布式处理平台Spark2.1.0:Spark是用于大数据工作负载的开源分布式处理系统。它利用内存中缓存和优化的查询执行功能,可对任意大小的数据进行快速查询,用于大规模数据处理的快速通用引擎。Spark能够处理实时流数据。与仅处理存储的数据的MapReduce不同,Spark能够处理实时数据。Spark和Hadoop能无缝结合,并且Spark将数据存储在服务器的RAM中,从而可以快速访问,从而加快了分析速度。Spark包含弹性分布式数据集(RDD),可节省读写操作的时间,使其运行速度比Hadoop快十到一百倍。流式处理平台Kafka1.0.0:Kafka是由服务器和客户端组成的分布式系统,服务器和客户端通过高性能TCP网络协议进行通信。它可以部署在内部以及云环境中的虚拟机和容器上。Kafka作为一台或多台服务器的集群运行,可以跨越多个数据中心或云区域。其中一些服务器构成了存储层,称为代理。其他服务器运行KafkaConnect来连续导入和导出数据作为事件流,以将Kafka与现有系统集成在一起。作为中间件,为了实现关键任务用例,Kafka群集提供了一个高可靠性、高吞吐量、持久性高、以及多样化的消费处理模型,可以用来解决数据中生产者和消费者之间的数据传输问题。具有高度的可扩展性和容错能力:如果其任何服务器发生故障,其他服务器将接管其工作以确保连续运行而不会丢失任何数据。实时计算开发语言Scala2.11:Scala较Java语法更丰富,Scala用一种简洁的高级语言将面向对象和函数式编程结合在一起,使代码量比Java减少一个数量级以上。使用Scala能提高项目开发效率。Scala具有与Java相同的编译模型(单独的编译,动态的类加载),Scala和Java都基于JVM运行,JVM和JavaScript运行时可以轻松访问庞大的高质量库生态来构建高性能系统。Scala和Java二者都编译成class文件,Scala的静态类型有助于避免复杂应用程序中的错误,其Scala旨在与流行的JavaRuntimeEnvironment(JRE)良好地互操作。特别是,scala可以随意调用Java实现的类和方法,与主流的面向对象的Java编程语言的交互是几乎无缝的。Scala和Java的混合编程方式不会有兼容性的问题。数据采集脚本Nginx(OpenResty):OpenResty是一个基于Nginx与Lua的高性能Web平台,Nginx是用于Web服务,反向代理,缓存,负载平衡,媒体流等方面的开源软件。它最初是为最大性能和稳定性而设计的Web服务器。除了HTTP服务器功能外,Nginx还可以充当电子邮件的代理服务器(IMAP,POP3和SMTP)以及HTTP,TCP和UDP服务器的反向代理和负载均衡服务器。数据缓存队列脚本Lua(OpenResty):OpenResty内部集成了大量的Lua库、第三方模块以及大多数的依赖项。Lua是一种功能强大,高效,轻量级,可嵌入的脚本语言。它支持过程编程,面向对象的编程,功能编程,数据驱动的编程和数据描述。Lua将简单的过程语法与基于关联数组和可扩展语义的强大数据描述结构结合在一起。Lua是动态类型的,通过使用基于寄存器的虚拟机解释字节码来运行,并具有自动内存管理,使其非常方便配置,脚本编制,适合搭建用于处理超高并发、扩展性强的动态Web应用、Web服务和动态网关。数据库MySQL:数据库被广泛定义为结构化的数据集合。MySQL使用的SQL语言是一种“结构化查询语言”,它是用于访问数据库的最常见的标准化编程语言。MySQL支持最苛刻的Web,电子商务,SaaS和在线事务处理(OLTP)应用程序。它是一个完全集成的事务安全,符合ACID的数据库,具有完整的提交,回滚,崩溃恢复和行级锁定功能。MySQL提供了易用性,可伸缩性和低管理,体积小、速度快、成本低,几乎不需要进行数据库维护。一般中小型网站的开发都选择MySQL作为网站数据库。2.2业务流程分析2.2.1流程描述数据源(网页上的点击日志信息)的获取,方式有很多,本课题的数据管理模块通过OpenResty对数据进行采集和处理配置。OpenResty是集成了Nginx+lua+tomcat的平台,可以作为数据采集工具,通过lua脚本进行数据的采集。将采集到的数据输出到kafka中间件,供实时处理模块消费。实时处理模块使用SparkStreaming对数据进行消费,生成结构化数据。实时监控监控模块通过监控爬虫相关的指标数据,发现异常数据,找到可能的爬虫数据。将爬虫数据过滤出来,存放到redis,供业务端通过lua过滤爬虫。2.3需求分析2.3.1概述用例模型是展示用户如何与系统交互的模型,通过用例的方式描述了用户与系统之间的交互,用例模型描述了用户如何使用系统来实现特定目标。用例图由系统,主要用例和参与者组成,并将它们彼此关联以可视化,将系统功能需求和具体实现完全独立开来,用例模型不考虑功能的具体实现,只关注为用户提供哪些功能,因此,用例是站在用户的角度捕获需求来帮助开发人员确保开发出正确的系统。2.3.2主要用例数据管理实时监控数据可视化策略管理流程管理规则管理2.3.3用例图:数据管理:图2-1数据管理用例图实时监控:图2-2实时监控用例图数据可视化图2-3数据可视化用例图策略管理图2-4策略管理用例图流程管理图2-5流程管理用例图规则管理图2-6规则管理用例图2.4本章小结 本章首先分析了平台系统的可行性,包括实施可行性、操作可行性、经济可行性和技术可行性,接着分析了反爬虫监控平台的业务流程,最后描述了为用户提供哪些功能,结合用例图,直观地呈现出来。3.反爬虫监控平台总体设计 本章节首先对反爬虫监控平台的业务和功能需求进行详细地分析,然后阐述了反爬虫监控平台架构的总体设计方案,再描述反爬虫监控平台的四层架构,及四层架构各个模块的功能设计,接着描述了防爬规则,最后是数据库设计。3.1系统设计3.1.1系统设计结构 反爬虫监控平台使用OpenResty(集成了nginx+lua脚本)+kafka+SparkStreaming+spark架构。采用面向对象的设计。数据采集使用nginx+lua脚本进行采集,数据管理模块对数据进行采集和处理配置(将采集的数据输出到kafka中间件)供实时处理模块使用sparkstreaming进行数据流清洗、消费。实时监控模块通过监控爬虫相关的指标数据,发现异常数据,将爬虫数据过滤出来(存放到redis)供业务端(通过lua)过滤爬虫。3.1.2系统功能模块描述 根据上面章节对反爬虫监控平台的业务需求分析而得出的平台业务需要,可以获得平台中系统的业务功能需求,本平台的主要功能模块及功能描述如下:数据管理模块:实现对数据采集和数据分类的管理和自定义配置,实现对数据各种处理的管理和自定义配置。流程管理模块:实现对流程的定义和可配置管理,并根据监控模块反馈的情况,系统自动执行相应的策略。策略管理模块:实现策略的配置,通过设置防爬规则的阈值从而过滤得到爬虫ip黑名单,设置爬虫和占座行为匹配成功后的系统或人工应对方法,并针对防爬规则打分。规则管理模块:进行防爬规则的制定,实现规则的定义和配置管理,并且支持人工自定义爬虫和占座过滤的规则以及参数阈值。实时监控模块:主要有系统监控和性能监控,其中系统监控主要监控流量和爬虫,实现对系统采集的数据的监控和分析。性能监控主要关注数据分析的速度,并且通过监控系统的稳定性和系统的负载情况,间接地反映出可能的爬虫活动情况。数据可视化管理模块:将数据制定图表,实现图形化,从而方便管理人员发现规律和价值。3.1.3系统非功能需求分析此处描述系统的非功能需求,一般包括系统用户数量、并发量、TPS要求、页面响应速度要求、数据量及IO等要求(前提)。对于非功能的性能指标表现在下面一些方面:功能模块性能要求描述数据管理Kafka缓存队列磁盘要求能处理一天的积压约为50GB的数据量。每天数据占集群的容量是100G。1-2KB。按照每日2700万的数据量计算,2KB*27000000/1024/1024≈50GB。所以Kafka50GB磁盘空间。SparkStreaming每天要处理的数据量约为50GBSparkStreaming将消费Kafka队列中的数据,故每天要处理约50GB的数据量峰值性能要求是100G(实际峰值性能要求是97G)数据库响应Sql查询相应时间<5S对于系统的页面展现的sql查询语句,查询时间不能大于5秒,以免影响前端页面的展示。连接池连接数量有效百分比>80%对于已经配置好的连接池,已经被占用的连接数量不能超过总连接数据的80%,要保证20%的有效连接未被占用。外部接口响应外部接口数据返回时间不超过5S.对于外部接口的调用,其数据返回的整个时间不能超过5S.表3-13.2系统架构设计与系统功能架构设计3.2.1系统架构设计结合对平台业务需求的分析,可以将平台的系统架构划分为数据采集层、数据处理层、实时计算层和数据展现层共四层架构。平台的系统逻辑架构的示意图如下图3-2所示。图3-1平台系统架构3.2.2数据采集层反爬虫监控平台的数据采集层采用OpenResty(nginx+lua)+kafka架构,使用OpenResty的目的也即将lua嵌入到我们的数据采集服务器中,通过lua脚本获取站点的http请求数据,进行数据统计和日志记录,将采集的数据用lua脚本对接发送到kafka消息中间件,供SparkStreaming用direct方式进行消费并清洗。数据采集的流程图如下图所示:图3-2数据采集层流程图3.2.3数据处理层与实时计算层完成数据采集后,将采集的数据用lua脚本对接发送到kafka缓存队列,然后SparkStreaming用direct方式进行消费并清洗实现数据的处理,接着数据流向Spark算法引擎,进行实时的计算和分析,将爬虫数据过滤出来(规则配置信息以及统计分析结果存放到redis)供业务端nginx获取redis黑名单数据进行爬虫的过滤(通过lua脚本)。图3-3数据处理与实时计算3.2.4数据展现层数据展现层将实现数据可视化,非实时数据通过从hdfs读取数据,然后保存到mysql中,前端读取mysql的数据。而对于实时数据的展现,则是从Redis读取数据对接前端。数据可视化通过将属性数据和图形结合起来,突出趋势和异常值,良好的可视化效果可以消除数据中的干扰并突出显示有用的信息。将统计出来的指标如:国内转化率、国际转化率、爬虫对系统稳定性的影响、爬虫查询航线排行等,将这些指标以图形的形式体现出来。图3-4数据展现层流程图3.3防爬规则3.3.1规则制定单位时间内的IP段访问量单位时间内的IP总访问量单位时间内某个IP对关键页面访问总量单位时间内某个IP的UA种类数统计单位时间内某个IP对关键页面最短访问间隔单位时间内某个IP小于最短访问间隔的关键页面查询次数单位时间内某个IP查询不同行程的次数3.3.2爬虫特点爬虫具备持续、不间断、高效等特性。它的爬取是非常快的。在多次爬取数据的过程中相邻两次的爬取时间差都非常小。正常用户的行程基本都是确定的,变化的可能性不大。而爬虫的行程并不是固定的。爬虫会在短时间内多次爬取行程、时间、车次不同的数据,这和普通用户有明显区别。一个普通用户,两次访问关键页面的时间间隔应该不是很短的,因为查询完票的信息要看看合不合适,才会进行下一次查询;爬虫不用思考,它会不断的爬取关键页面的数据信息,所以爬虫对于关键页面的两次查询间隔时间会很短。3.4数据库设计3.4.1数据库E-R图图3-5图3-6图3-7图3-8图3-93.4.2数据库表主要的数据库表:序号表格表说明1REF_USER_ROLE账号角色关联表2system_role角色表3REF_ROLE_PERMISSION角色权限关联表4permission权限表5ACCOUNT账号信息表6USER_INFO用户信息表7nh_crawler_curday_info当天流量统计情况-备份8nh_four_flow_num四类用户流量值9nh_illegal_occ_flight_rank爬虫非法占座航班排行10nh_crawler_query_routes_rank爬虫查询航线排行11system_data_analysis系统数据分析速度12server_status_info服务器监控数据-备份13system_function_info系统功能运行情况14nh_process_info流程信息15dataCollect数据采集16dataHandle结构化数据17nh_model模型18nh_domestic_inter_conversion_rate国内、国际转化率19nh_user_conversion_rate用户转化率20nh_flight_query_conversion_rate爬虫航班转化率21nh_flight_query_rule航班查询爬取规律22nh_flow_query_rate流量查订比23nh_flow_info流量情况24nh_strategy策略25nh_agency_customer_analysis代购客户分析26nh_rule规则27real_time_comput_data实时计算监控数据-备份28nh_link_traffic_information链路流量信息(TPS)--备份29climb_monitor反爬监控30analyzeRule数据处理解析规则配置表31nh_rules_maintenance_table规则维护表32dataCollect_back数据采集_备份33nh_process_num流程维护表34nh_monitor_queryredis反爬数据备份35nh_rule_hit_details规则命中详情36nh_rule_hit规则命中情况37nh_hit_user_detail命中用户详情3.5本章小结本章节首先从反爬虫监控平台的业务和功能需求出发,阐述了反爬虫监控平台架构的总体设计方案,再介绍反爬虫监控平台的四个层次,及四个层次各个模块的功能设计,之后从性能需求对系统的非功能需求进行了分析描述,接着描述了防爬规则,最后是数据库设计。4.反爬虫监控平台详细设计与实现本章节主要从数据采集层、数据处理层、实时计算层和数据展现层这四层架构来阐述详细设计。之后阐述平台各层次中的包含的各个模块是如何设计的。4.1数据采集层的设计与实现4.1.1场景描述Nginx日志是运维网站的重要信息,日志服务支持通过Nginx快速采集Nginx日志并进行多维度分析。每天产生的大量日志非常有价值,对于希望了解其Web服务器的运行状况和性能的开发人员和系统管理员而言,日志文件一直是至关重要的资源,我们需要把nginx日志统一收集汇总起来,收集过程和结果需要满足如下需求:支持不同业务获取数据数据实时性高性能保证4.1.2技术方案 得益于openresty和kafka的高性能,我们可以非常轻量高效的实现当前需求,架构如下:图4-1OpenResty+Kafka架构图4.1.3数据采集字段字段名称说明remote_addr客户端IP地址。remote_user客户端用户名。time_local服务器时间,前后必须加上中括号。request请求的URI和HTTP协议。request_time整个请求的总时间,单位为秒。request_length请求的长度,包括请求行、请求头和请求正文。status请求状态。body_bytes_sent发送给客户端的字节数,不包括响应头的大小。http_refererURL跳转来源。http_user_agent客户端浏览器等信息。表4-14.1.4代码书写Lua集成kafka采集数据时的相关配置Lua文件:GetDataToKafka.lua--启用保护机制(当前活跃连接数小于1000时采集数据,大于1000时停止采集数据)--最大的用户数阈值localmaxUserNumber=1000--获取当前活跃连接数localactiveUserNumber=ngx.var.connections_active--当前活跃连接数与最大的用户数阈值进行对比if(tonumber(activeUserNumber)<tonumber(maxUserNumber))then--导入kafka需要的依赖包localimportkafka=require"ducer"--实例kafka集群local broker_list={{host="37",port=9092},{host="38",port=9092},{host="192.168.2.139",port=9092}}--创建kafka生产者localkafkaproducer=importkafka:new(broker_list)--实例kafkatopicLocaltopic="test01"localtopicpartitions=2--获取ngx共享字典localshareddata=ngx.shared.shared_data--获取数据的编号localdataNumber=shareddata:get("count")ifnotdataNumberthen--若第一次没有值,设置一个值shareddata:set("count",1)--重新获取一次dataNumber=shareddata:get("count")end--kafka topic分区编号localpartitionN=""..(dataNumber%topicpartitions)shareddata:incr("count",1)ngx.say("dataNumber : ",dataNumber)ngx.say("<br>")ngx.say("partitionN : ",partitionN)4.2数据处理层的设计与实现4.2.1场景描述 完成数据采集后,将采集的数据用lua脚本对接发送到kafka缓存队列,然后SparkStreaming用direct方式进行消费并清洗实现数据的处理,接着数据流向Spark算法引擎,进行实时的计算和分析,将爬虫数据过滤出来(规则配置信息以及统计分析结果存放到redis)供业务端nginx获取redis黑名单数据进行爬虫的过滤(通过lua脚本)。4.2.2技术方案数据处理主要是通过SparkStreaming对数据进行分类和处理,实现实时计算和分析,处理流程如下图所示:图4-2数据处理流程图数据的分类:图4-3数据分类流程图首先将需要过滤的规则录入Mysql数据库中,过滤规则如:^.html.$[MathProcessingError],^.*css.*$等,详细信息请到数据库中查询;对源数据中的敏感信息进行脱敏,使用MD5进行加密;其次通过正则表达式的匹配规则过滤掉无用信息;解析有用信息,获取需要统计的字段;表4-2数据处理:按get或post的请求方式解析出请求参数;根据请求参数中日期个数标记单程或往返;构造格式化数据即将原始数据和统计字段使用#CS#作为相邻数据间的分隔符合并为一条数据推送到kafka,以便后续统计分析;4.2.3数据处理时序图图4-4数据处理层时序4.3实时计算层的设计与实现4.3.1场景描述反爬虫统计字段规则有基于IP段的统计和基于IP的统计。基于IP段的统计:单位时间内的IP段访问量(前两位);基于IP的统计:单位时间内IP的访问总量;单位时间内某IP对关键页面访问单位时间内的UA种类数统计;单位时间内访问关键页面的Cookie数单位时间内查询不同行程的次数单位时间内的关键页面最短访问间隔;单位时间内某IP小于最短访问间隔的关键页面查询次数;4.3.2技术方案实时计算层流程分析:图4-5实时计算层流程分析图单位时间内的IP段访问量:图4-6设计:计算5分钟内IP段的访问量,系统内设置了这个指标的阈值。如果数据计算出的结果超过设置的阈值,那么他就很有可能是爬虫。然后我们通过ip段可以判断出该爬虫ip来源于哪个区域。单位时间内的IP总访问量:从格式化数据中按照分隔符分割得到IP;将IP的值作为key,value为1;通过SparkStreaming窗口函数统计单位时间内ip总访问量。 图4-7设计:拿到kafka数据,统计remoteaddress的wordcount;也即计算某个IP在5分钟的访问量,数量越多,它是爬虫的可能性就越大。系统内设置了这个指标的阈值。如果数据计算出的结果超过设置的阈值,那么他很有可能是爬虫。单位时间内某个IP对关键页面访问总量:图4-8普通用户不会在短时间内频繁的访问关键页面,而爬虫会频繁访问关键页面,访问的关键页面次数越多,它是爬虫的可能性就越大。设计:计算5分钟内的关键页面访问总量,系统内设置了这个指标的阈值。如果根据数据计算出的结果(关键页面访问量)超过设置的阈值,那么他很有可能是爬虫。单位时间内某个IP的UA种类数统计:图4-9正常用户(ip)在短时间内是不会切换操作系统和浏览器的,但是,爬虫可能通过伪装User-Agent来逃过反爬虫系统的检测,所以我们要查看某一个ip在5分钟内是否频繁切换了User-Agent,切换了多少个,这个数越多,它是爬虫的可能性就越大。设计:计算5分钟内每个IP的UA出现次数,系统内设置了这个指标的阈值。如果根据数据计算出的结果(IP的UA数量)超过设置的阈值,那么他很有可能是爬虫。单位时间内某个IP对关键页面最短访问间隔:图4-10最小访问时间间隔,也是衡量数据是否是爬虫的很好的指标。爬虫不用思考,它会不断的爬取关键页面的数据信息,所以爬虫对于关键页面的两次查询间隔时间会很短。通过计算每两次查询之间的时间间隔,从而判断一个用户是否可能为爬虫。这个最小间隔越小,它是爬虫的可能性就越大。设计:计算5分钟内的关键页面最短访问间隔,系统内设置了这个指标的阈值。如果根据数据计算出的结果(关键页面访问间隔)小于设置的阈值,那么他很有可能是爬虫。统计单位时间内某个IP小于最短访问间隔的关键页面查询次数:图4-11爬虫具备持续、不间断、高效等特性。它的爬取是非常快的。在多次爬取数据的过程中相邻两次的爬取时间差都非常小。我们可以自定义一个很小的时间,比如2秒,由于爬虫的效率很高,每两次的时间会很短。时间间隔可能小于2秒,也可能大于2秒。我们统计时间间隔小于2秒中的次数,次数越多,它是爬虫的可能性就越大。这个指标可以很灵活的区分爬虫和普通用户,普通用户两个页面之间需要思考、筛选、分析的时间,可能会很久,在两秒钟以内做完的可能性不大。爬虫则不然,爬虫的效率很高大部分可以在两秒内甚至更短的时间完成。设计:计算5分钟内IP小于最短访问间隔的关键页面查询次数,系统内设置了这个自设的最小时间和小于这个时间次数的阈值。如果根据数据计算出的结果(小于自设时间的次数)大于设置的阈值,那么他很有可能是爬虫。统计某个IP在单位时间内查询不同行程的次数:图4-12正常用户的行程基本都是确定的,变化的可能性不大。而爬虫的行程并不是固定的。爬虫会在短时间内多次爬取行程、时间、车次不同的数据,这和普通用户有明显区别。统计一段时间内ip查询不同行程的次数(北京到上海查了10次,作为一次),次数越多,它是爬虫的可能性就越大。设计:计算5分钟内IP查询不同行程的次数,系统内设置了这个指标的阈值。如果根据数据计算出的结果(查询不同行程的次数)超过设置的阈值,那么他很有可能是爬虫。4.4数据展示层的设计与实现随着“大数据时代”的兴起,可视化已成为越来越重要的工具,将属性数据和图形结合起来,可以理解每天生成的数以万计的数据。数据可视化通过将客户关注的数据整理成易于理解的形式,如直观的图表进行展示,突出趋势和异常值,从而改善人机交互体验,良好的可视化效果可以消除数据中的干扰并突出显示有用的信息,实现数据图示化、分析形象化、管理信息化。将数据进行分类展示,用户可以通过自定义选择配置分类和展示方式,根据不同的配置,系统切换展示不同的图形图表。数据展示层将统计出来的指标如:国内转化率、国际转化率、爬虫对系统稳定性的影响、爬虫查询航线排行等,将这些指标以图形的形式体现出来。图4-13Redis数据图图4-14可视化代码4.5本章小结 本章节介绍了反爬虫监控平台的详细设计与实现,阐述逻辑架构四个层次,针对逻辑架构四个层次的各模块的具体设计与实现。5.反爬虫监控平台的系统测试5.1测试环境和测试目的5.1.1测试环境电脑型号:华为,型号HUAWEiMateBookD2018操作系统版本:Centos6.9、Windows105.1.2测试目的 测试反爬虫监控平台
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 种植活动提升幼儿科学探究能力的实践研究-以大班幼儿豆芽培育项目活动为例
- 船舶航行安全管理手册
- 甲状腺功能减退症诊疗全流程及风险管控指南总结2026
- 某化工印染厂厂区安防规范
- xx针织厂染色机清洁规范
- xx针织厂检修记录办法
- 2026年(完整)临床营养科建设与管理指南
- 2026年道路施工渣土运输方案及密闭管理
- 2026年侵犯知识产权刑事案件证据规则题库及答案
- 数字化未来人才培训班工作坊计划
- 干细胞治疗共济失调的联合用药策略
- 金融控股公司并表管理指引
- 食堂超龄用工协议书
- 眩晕培训课件
- 2025制药工艺流程优化技术降本增效与质量管理体系研究
- 校外培训机构消防安全培训课件
- 哈尔滨工业大学概况
- 警察开学安全课件
- 2025年广东省高职院校五年一贯制转段考试文化课测试(数学)
- 2026届新高考生物精准冲刺复习:基因定位
- (必看)2025年3月29日陕西省事业单位联考C类《职测》真题及答案
评论
0/150
提交评论