【爬虫与反爬虫】从技术手段与原理深度分析

这篇具有很好参考价值的文章主要介绍了【爬虫与反爬虫】从技术手段与原理深度分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章

1. 爬虫的基本概念

1.1. 什么是爬虫

  爬虫是获取数据的一种途径。即称之为网页蜘蛛、网络机器人。它是一种按照一定规则自动抓取万维网信息的程序或脚本。利用标准的HTTP协议,根据超级链接及WEB文档检索的方法遍历万维网信息空间的程序。爬虫通俗来说,通过编写代码自动模拟人的行为访问网站并把网页上所呈现能看到的数据信息采集下来

1.2. 爬虫的价值

  对于目前大数据行业而言,数据所带来的价值不言而喻。在如今信息爆炸的时代,互联网上承载着海量的信息。如果合理的利用爬虫技术对这些数据进行挖掘与分析,能够产生极大的商业价值,为企业产品赋能以及创造盈利的价值

1.3. 爬虫的分类

  不同类型的爬虫,实现原理也是各不相同。但这些实现原理中,会存在很多共性,所以爬虫的分类大致可以分为以下三种:

1、通用爬虫
  爬虫系统内重要的组成部分。通过指定初始链接对页面数据进行采集,同时将采集过程中新增的链接加入待采集任务中,如此重复该爬取过程直到停止,如图所
【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

2、聚焦爬虫
  建立在通用爬虫的基础之上, 采集页面中特定局部内容。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接,并将其放入等待抓取的链接队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页链接,并重复上述过程,直到达到系统的某一条件时停止

相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:目标的定义、网页与数据的分析及过滤、链接的搜索策略

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

3、增量式爬虫
  监测网站数据更新的情况,只采集网站中最新更新数据

4、分布式爬虫
  分布在不同区域的多台计算机联合起来完成同一个数据采集任务

3. 爬虫技术原理与实现

  爬虫采集数据的详细流程以及它的主要步骤包括:
【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

1、首先选取指定网页,将网的链接地址作为种子URL
2、将这些种子URL放入到待抓取URL队列中
3、爬虫从待抓取URL队列中依次读取URL,并通过DNS解析URL,把链接地址转换为网站服务器所对应的IP地址
4、然后将IP地址和网页相对路径名称交给网页下载器,网页下载器负责页面内容的下载
5、网页下载器将相应网页的内容下载到本地
6、将下载到本地的网页存储到页面库中,同时将下载过网页的URL放入到已抓取URL队列中,这个队列记载了爬虫系统已经下载过的网页URL,以避免网页的重复抓取
7、将下载的网页,从中抽取出所包含的所有链接信息,并在已抓取URL中检查其是否被抓取过,如果还未被抓取过,则将这个URL放入到待抓取URL队列中
8、下载被放入待抓取URL队列中的URL对应的网页,如此重复3-7,形成循环,直到待抓取URL队列为空

4. 反爬虫基本概念

4.1. 什么是反爬虫

  限制爬虫程序访问服务器资源和获取数据的行为称之为反爬虫,爬虫程序的访问速率和目的与正常用户的访问速率和目的是不同的,大部分爬虫会无节制地对目标应用进行爬取,这给目标应用的服务器带来巨大的压力。爬虫程序发出的网络请求称之为“垃圾流量”。开发者为了保证服务器的正常运转或降低服务器的压力与运营成本,不得不使出各种各样的技术手段来限制爬虫对服务器资源的访问

4.2. 反爬虫的目的

  • 避免浪费服务器资源
      因为爬虫占总PV比例较高。通过程序进行对URL请求去获得数据的成本是非常低的,从而造成大量低质量网页爬虫在网络横行,对目标网站产生大量的访问,导致目标网站的服务器资源大量消耗,轻则影响正常用户的访问速度,重则造成DDOS攻击导致网站服务不可用

  • 尽可能保护数据大量泄露
      虽然所有网站的数据都是共享给用户浏览查阅的,目前市面上很多成熟的爬虫软件可以大批量对一些网站数据进行采集,如果网站不加以施加必要的反爬虫技术手段,竞争对手则可以批量采集网页信息。长时间的积累带给企业的竞争力就会大大增加

4.3. 反什么样的爬虫

1、“新手”爬虫
  此类爬虫多出自于一些处于兴趣爱好的“新手”。此类爬虫通常简单粗暴,不会考虑服务器端面临的压力,加上人数不可预测,很容易带给网站流量压力

2、“失控”爬虫
  目前市面上绝大多数网站或多或少都做了一些相应的反爬虫措施。甚至很多爬虫在初期阶段并不会触碰到反爬禁忌,随着时间的慢慢推移当初的爬虫因为反爬措施的生效已不能正常采集数据或数据是错误的蜜罐数据,但是爬虫一旦不及时停止成为某些服务器上托管的小爬虫不间断的工作仍为造成对网站的影响

3、“成型”爬虫
  数据作为很多创业公司甚至成型商业对手的产品依托,此类爬虫拥有成熟的体系方案(包括不限于:资金、技术…),这个时候任何反制措施都不能彻底抵制爬虫对数据的采集,只能通过不断升级遏制爬虫的效率跟增加爬虫所要付出的“代价”从而提高数据获取的成本

5. 由浅到深的反爬虫技术手段

5.1. 主动常见型反爬虫

5.1.1. 基于爬虫行为

基于请求频率或总请求量进行反爬,因为爬虫的行为与普通用户有着明显区别,爬虫的请求频率与请求次数一般高于普通用户

1、通过请求IP/账号单位时间内总请求数量进行反爬

反爬原理: 正常浏览器请求网站,速度不会太快,同一IP/账号如果产生大量请求,将会判定识别为爬虫行为

2、通过同IP/账号请求之间的间隔时间分析进行反爬

反爬原理: 正常用户在操作浏览器浏览网站,请求之间的时间间隔是随机的,而爬虫前后两个请求之间时间间隔通常比较固定,同时时间间隔比较短,因此可以用来做反爬

3、通过蜜罐(陷阱)进行反爬

反爬原理:在爬虫获取链接进行请求的过程中,爬虫会根据正则、XPATH或CSS等方式进行后续链接的抽取,此时服务端可以设置一个陷阱URL,会被提取规则捕获提取,但我们的正常用户无法获取,能有效区分爬虫和正常用户

4、根据爬取行为触发深层次连环反制措施

反爬原理:服务器通过分析识别一旦判定该行为是爬虫行为将采用更为严厉的反制措施

另外还有如下多种情况:

  • 推送目标假数据,向爬虫返回的响应中添加假数据污染目标数据库,通常假数据不会被正常用户所看到
  • 阻塞目标任务队列,通过生成大量垃圾链接,从而阻塞任务队列,降低爬虫的实际工作效率
  • 阻塞网络IO,在爬虫获取响应的实际下载过程中,往目标任务队列混入一个大文件链接,当爬虫在进行该请求时将会占用网络IO,如果目标采用的是多线程则会占用线程
  • 运维平台综合审计,通过对运维平台的综合管理,通常采用复合型反爬策略,结合多种手段同时进行反制

5.1.2. 基于身份识别

1、通过headers字段反爬

反爬原理: 因headers中有很多字段组成,其中的某些字段可以用来进行判断对方的行为是否是爬虫

cookies: 通过检查cookies来查看发起请求的用户是否
具备相应的权限,以此来进行反爬

referer: 爬虫默认情况下不会待referer字段,服务器端可以通过判断请求发起的源头,以此判断请求是否合法

user-agent: 爬虫默认情况下是没有带user-agent这个字段的

2、通过请求参数反爬

反爬原理: 服务器在接受客户端请求时,需携带请求相应的参数,由此服务器端可以通过校验请求参数是否正确来判断是否为爬虫

通过JS生成请求参数,以此来增加分析、获取参数难度。
通过发送请求生成请求参数,以此来增加获取参数难度
在html静态文件中放置参数数据,以此来增加获取请求参数难度

6. 被动防御型反爬虫

6.1. 数据防护

  采用多种技术手段来防护网站数据资产以及对响应中含有的数据进行特殊化处理,截止目前市面上常见的一些反爬虫手段涵盖但不限于:文本混淆、页面动态渲染、请求签名校验、验证码、js混淆等

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

其中文本混淆包含css偏移、图片伪装文本、自定义字体

1、CSS偏移反爬

反爬原理:源码数据不为真正数据,需要通过CSS位移才能产生真正数据。利用CSS来将浏览器中显示的文字,在HTML中以乱序的方式存储,从而来限制爬虫。利用CSS样式将乱序的文字排版成人类正常阅读顺序的反爬虫手段

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

2、图片伪装反爬

反爬原理:用图片替换原来文本内容,从而让爬虫程序无法直接正常获取数据

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

3、自定义字体反爬

反爬原理:使用@font-face为网页指定字体。将自定义字体文件放在Web服务器上,并在CSS样式中使用它。面对爬虫程序时,没有相应的字体映射关系,是无法直接获取到有效数据的

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

4、页面动态渲染反爬

反爬原理:页面内容由JS渲染而成,真数据则通过 Ajax接口等形式获取的,通过获取网页源代码,无法直接获取效数据信息

5、页面动态渲染反爬

反爬原理:目前几乎所有的应用程序在涉及到用户信息安全的操作时,都会弹出验证码让用户进行识别。以确保该操作为正常用户行为

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

4、请求签名校验反爬虫

反爬原理:签名验证是防止服务器被恶意链接和篡改数据的有效方式之一,也是目前后端API最常用的防护方式之一。签名是一个根据数据源进行计算或者加密的过程,用户经过签名后会一个具有一致性和唯一性的字符串,从而可以有效的避免服务器端,将伪造的数据或被篡改的数据当成正常数据处理,爬虫则需要破解该参数的加密方法,这无疑进一步提升了爬虫采集的难度

【爬虫与反爬虫】从技术手段与原理深度分析,Python,爬虫,python,安全

7. 组合升级型反爬虫(智能风控)

  云计算成为趋势、AI技术不断突破,同时爬虫另有花样技术的层出不穷。很多企业逐渐选择加入第三方势力,云计算厂商可直接为企业提供云端反爬能力,将曾经传统的战局从反爬虫与爬虫的1v1演变成了企业+云厂商与爬虫的2v1模式,助力企业的反爬能力。一些厂商的智能风控系统防护针对爬虫来说面临着极大的挑战。如:网易的易盾、数美验证码、瑞数全新一代WAF、白云山科技Baishan Canvas平台以及Cloudflare Bot Managent

  好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章文章来源地址https://www.toymoban.com/news/detail-753354.html

到了这里,关于【爬虫与反爬虫】从技术手段与原理深度分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux系统进阶详解】Linux核心命令深度实战实现原理详解和每个命令使用场景以及实例分析

    在Linux系统中, find 、 xargs 、 sed 、 grep 、正则表达式和通配符是非常常用的命令和技巧。它们可以结合使用,实现更复杂的文件查找、过滤和操作。下面将详细介绍它们的实现原理和使用场景。 find命令 ``find`命令通过遍历指定目录及其子目录来查找符合条件的文件或目录。

    2024年02月08日
    浏览(225)
  • 浅谈非内存对抗类和AI自瞄类FPS作弊程序原理及常用反反作弊措施与反作弊应对手段(中)

    往期文章: 浅谈非内存对抗类和AI自瞄类FPS作弊程序原理及常用反反作弊措施与反作弊应对手段(上)         Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于

    2024年04月13日
    浏览(39)
  • 第七篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读数据分析数据挖掘的几个重要算法为代表的核心技术

    在对大学生数据分析和数据挖掘时,会接触到许多重要的算法,这些算法代表了数据分析和数据挖掘领域中的一些核心技术,大学生可以通过学习和实践这些算法为代表的核心技术来提升自己的数据分析能力和数据挖掘探索分析能力。深入理解这些算法为代表的核心技术的原

    2024年03月19日
    浏览(55)
  • 离线分析fsimage文件进行数据深度分析

      FsImage文件时HDFS存放在NameNode中的镜像文件,里面包括了整个HDFS集群的目录和文件信息,(类似于一个索引目录+部分数据的文件),而且HDFS提供了命令可以将FsImage文件转成CSV文件,可以用它在Hive上进行分析。目前fsiamge一般都是几十g的级别。    FsImage字段一览 字段名 中

    2024年02月11日
    浏览(42)
  • 深度学习架构的对比分析

    深度学习的概念源于人工神经网络的研究,含有多个隐藏层的多层感知器是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示,以表征数据的类别或特征。它能够发现数据的分布式特征表示。深度学习是机器学习的一种,而机器学习是实现人工智能的必

    2024年02月04日
    浏览(53)
  • 深度分析:如何轻松掌握文件大小管理

    大家好,今天我要与大家分享一个实用至极的脚本。简单易用,但效果却让人惊艳。它可以在几秒钟内完成文件大小的统计,并生成一份统计信息。 功能概览 完整性分析: 一次性告诉你不同大小区间的文件分布,让你一目了然。 速度超快: 忘掉繁琐的手动查找和统计,这

    2024年02月10日
    浏览(34)
  • 使用深度学习模型进行情感分析

    在本篇文章中,我们将介绍如何使用深度学习模型进行情感分析。具体来说,我们将使用卷积神经网络(Convolutional Neural Network,CNN)对 IMDB 数据集进行情感分类。 1. 数据集介绍 IMDB 数据集是一个常用的自然语言处理数据集,包含了 50000 条电影评论。其中,25000 条评论用于训

    2023年04月15日
    浏览(47)
  • 深度学习之CSPNet网络分析

    CSPNet:Cross Stage Partial Network,跨阶段局部网络 作用:从网络设计角度来缓解以前推理时需要很大计算量的问题 推理计算过高的原因:由于网络优化中的梯度信息重复导致的! cspnet解决方式:通过将梯度的变化从头到尾地集成到特征图中,在减少了计算量的同时可以保证准确

    2023年04月13日
    浏览(39)
  • 安索夫矩阵:案例深度分析与应用价值

    安索夫矩阵,也称为产品/市场方格,是20世纪50年代由伊戈尔·安索夫提出的战略管理工具。它为企业提供了一个直观、实用的框架,帮助企业确定其产品或服务在市场中的位置,以及潜在的增长机会。通过对安索夫矩阵的深度分析,并结合实际案例,我们可以更好地理解这一

    2024年04月14日
    浏览(44)
  • Cuba勒索软件深度分析及防护建议

    从2022年5月上旬开始,Unit 42观察到攻击者使用新工具和技术部署Cuba勒索软件。使用Unit42的命名模式,他们将Cuba勒索软件命名为Tropical Scorpius。 Cuba勒索软件家族于2019年12月首次浮出水面。此后,该勒索软件家族背后的攻击者改变了策略和工具,成为2022年成为更普遍的威胁。该

    2024年02月07日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包