通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

爬虫的起源

爬虫的起源可以追溯到万维网(互联网)诞生之初,一开始互联网还没有搜索。在搜索引擎没有被开发之前,互联网只是文件传输协议(FTP)站点的集合,用户可以在这些站点中导航以找到特定的共享文件。

为了查找和组合互联网上可用的分布式数据,人们创建了一个自动化程序,称为网络爬虫/机器人,可以抓取互联网上的所有网页,然后将所有页面上的内容复制到数据库中制作索引。

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

爬虫的发展

随着互联网的发展,网络上的资源变得日益丰富但却驳杂不堪,信息的获取成本变得更高了。

相应地,也日渐发展出更加智能,且适用性更强的爬虫软件。

它们类似于蜘蛛通过辐射出去的蛛网来获取信息,继而从中捕获到它想要的猎物,所以爬虫也被称为网页蜘蛛,当然相较蛛网而言,爬虫软件更具主动性。另外,爬虫还有一些不常用的名字,像蚂蚁/模拟程序/蠕虫。

爬虫的工作流程大致如下:

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

通常,爬取网页数据时,只需要2个步骤:

打开网页→将具体的数据从网页中复制并导出到表格或资源库中。

简单来说就是,抓取和复制。

爬虫的君子协议

搜索引擎的爬虫是善意的,可以检索你的一切信息,并提供给其他用户访问,为此它们还专门定义了robots.txt文件,作为君子协议。

Robots协议(爬虫协议)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。该协议是国际互联网界通行的道德规范,虽然没有写入法律,但是每一个爬虫都应该遵守这项协议。

以淘宝网的robots.txt为例,

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

以 Allow 项的值开头的 URL 是允许 robot 访问的。例如,Allow:/article 允许百度爬虫引擎访问 /article.htm、/article/http://12345.com 等。

以 Disallow 项为开头的链接是不允许百度爬虫引擎访问的。例如,Disallow:/product/ 不允许百度爬虫引擎访问 /product/http://12345.com 等。

最后一行,Disallow:/ 禁止百度爬虫访问除了 Allow 规定页面外的其他所有页面。

所以你是不能从百度上搜索到淘宝内部的产品信息的。

君子协议虽好,然而事情很快就被一些人破坏了,于是就有了反爬虫

爬虫与反爬虫

爬虫与反爬虫是“矛”与“盾”的攻守关系,有了爬虫自然也就有了反爬虫。

一些企业为了保证服务器的正常运转,降低服务器的运转压力与成本,不得不使出各种各样的手段来阻止爬虫工程师毫无节制地向服务器索取资源,这种行为我们称之为反爬虫

在爬虫与反爬虫的较量上,一些反爬手段常常会让人津津乐道,比如,文本混淆反爬虫、动态渲染反爬虫、信息校验反爬虫、代码混淆反爬虫……等等。

反爬虫技术是如何对爬虫进行防御的,其实现原理是什么?以下就以信息校验反爬为例,请《鹿鼎记》的韦香主给大家做一下演示。

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

假设天地会赤火堂香主派人从京城前往扬州将一封非常重要的密函交给青木堂香主韦小宝,我们可以将这件事抽象为下图:

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

这件事的核心是「帮派成员-甲将重要密函交给帮派成员-乙」。假设甲、乙双方互不相识亦从未有过会面,那「帮派成员-甲」如何判断密函交给了「帮派成员-乙」,而不是给错人——给了其他「帮派成员-丁」呢?

在历史实践中肯定吃过这样的亏,遂天地会采用了接头暗号这种方式来确保甲、乙双方是同一帮派成员,这才有了:

地镇高岗,一派溪山千古秀;
门朝大海,三河合水万年流。

暗号只有帮派成员才知道,且不可外泄。甲、乙双方见面时由「帮派成员-甲」说出「地镇高岗,一派溪山千古秀」,「帮派成员-乙」听到后必须接下一句「门朝大海,三河合水万年流如果「帮派成员-乙」不知道下一句是什么,或者胡说一气,那么「帮派成员-甲」就可以判定他不是接头人,而是冒充的。

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

同样的,「帮派成员-乙」要听到帮派成员-甲说出「地镇高岗,一派溪山千古秀」。否则「帮派成员-甲」就是冒充的,很有可能会将假的密函交给青木堂韦小宝。

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

天地会接头人互相传递消息(密函)很像是我们在开发 WEB 应用时的 Client 和 Server,抽象地看起来像这样:

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

那么问题来了,Client 和 Server 之间需不需要天地会这样的暗号呢?

答案是需要

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

Client 就像「帮派成员-甲」,Server 就像「帮派成员-乙」,而他们的密函很有可能会被其他「帮派成员-丁」拿走或伪造。既然天地会有接头暗号,那么 Client 和 Server 之间用什么来保障传递消息是第一手发出,而不是被拦截伪造的呢?

没错,签名验证!

签名验证是目前 IT 技术领域应用广泛的 API 接口数据保护方式之一,它能够有效防止消息接收端将被篡改或伪造的消息当作正常消息处理。

要注意的是,它的作用是防止消息接收端将被篡改或伪造的消息当作正常消息处理,而不是防止消息接受端接收假消息,事实上接口在收到消息的那一刻无法判断消息的真假。这一点非常重要,千万不要混淆了。

假设 Client 要将「下个月 5 号刺杀鳌拜」这封重要密函交给 Server,抽象图如下:

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

这时候如果发生冒充事件,会带来什么影响:

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

其他「帮派成员-丁」从 Client 那里获得消息后进行了伪造,将刺杀鳌拜的时间从 5 号改为 6号,导致 Server 收到的刺杀时间是 6 号。这么一来,里应外合刺杀鳌拜的事就会变成一方延迟动手,这次谋划已久的刺杀行动大概率会失败,而且会造成不小的损失。

我们使用签名验证来改善这个消息传递和验证的事。这里可以简单将签名验证理解为在原消息的基础上进行一定规则的运算和加密,最终将加密结果放到消息中一并发送,消息接收者拿到消息后按照相同的规则进行运算和加密,将自己运算得到的加密值和传递过来的加密值进行比对,如果两值相同则代表消息没有被拦截伪造,反之可以判定消息被拦截伪造。

签名验证被广泛应用,例如下载操作系统镜像文件时官方网站会提供文件的 MD5 值、阿里巴巴/腾讯/华为等企业对外开放的接口中鉴权部分的 sign 值等。

以上反爬方法选自《Python3 反爬虫原理与绕过实战》

通俗的讲,网络爬虫到底是什么?(网络爬虫是什么东西)

《Python 3 反爬虫原理与绕过实战》 韦世东 著

这本书是爬虫领域第一本专门介绍反爬虫的书,被誉为爬虫工程师不可错过的“武功秘籍”,腾讯、马蜂窝工程师倾力推荐。

知其然,知其所以然,文武兼备,本书从攻防两个角度进行解读,描述了爬虫技术与反爬虫技术的对抗过程,并详细介绍了这其中的原理和具体实现方法。

从本书中你将了解到以上文中提到的签名验证以及文本混淆、动态渲染、加密解密、代码混淆和行为验证码等反爬虫技术的成因和绕过方法。

爬虫技术是一把双刃剑,希望大家可以将学到的技术用于防护,提高应用防护等级,以剑养剑,攻守兼备才能够在技术的江湖上任逍遥~

写在最后

爬虫本身并未违反法律。但程序运行过程中可能对他人经营网站造成破坏,爬取的数据有可能涉及隐私或机密,数据本身也可能产生法律纠纷。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年3月29日 下午12:06
下一篇 2024年3月29日 下午12:18

相关推荐

  • 美国科研项目概况

    美国科研项目概况 美国是世界上最富有和最先进的国家之一,拥有众多杰出的科学家和研究人员。为了推动科学的发展,美国每年投入大量的资金用于科研项目,这些项目涉及许多不同的领域,包括物理…

    科研百科 2025年3月28日
    1
  • 激励参加科研项目

    参加科研项目是一项重要且有意义的活动,不仅可以提高个人技能和知识,还可以为未来的职业发展打下基础。在这篇文章中,我想分享一些激励参加科研项目的原因和建议,希望可以帮助你更好地投入这…

    科研百科 2025年2月10日
    0
  • 县水务局“三个严格”规范工会经费使用(加强工会经费管理,确保使用规范)

    为加强水务系统工会经费收支规范化管理,杜绝违规违纪,真正做到工会经费科学管理好、合理使用好。今年以来,县水务局多措并举严格规范工会经费使用,结合工会财务实际情况,完善工会财务管理制…

    科研百科 2022年12月23日
    517
  • 招投标与合同管理课程(招投标与合同管理实务)

    招投标与合同管理实务 招投标与合同管理是建设工程项目中非常重要的两个环节。在招标过程中,需要确定项目的招标范围、招标方式、招标标准、评标标准等内容,并对潜在的供应商进行筛选和评估。…

    科研百科 2024年6月6日
    73
  • 疫情背景下线上教学+实训的探索与实践——以“Java”课程为例(疫情下线上教学设计与实施策略)

    在全国上下共同与新冠肺炎战斗的背景下,为了保障教学任务的顺利实施,各高校积极开展在线教学,贯彻落实教育部“停课不停教、停课不停学”的通知精神。 学校开设“java语言程序设计”课程…

    科研百科 2022年11月1日
    432
  • 科研项目开发与设计论文

    科研项目开发与设计论文 随着科技的不断发展,科研项目开发与设计已经成为了现代社会中不可或缺的一部分。在科研项目开发与设计的过程中,设计师们需要不断地探索新的技术,创造出更加优秀的作…

    科研百科 2025年5月13日
    1
  • 外汇管理局资本项目系统

    外汇管理局资本项目系统: 外汇管理新途径 随着全球化的不断推进,国家之间的贸易和投资活动日益频繁,外汇管理局资本项目系统成为了一个重要的管理工具。这个系统为外汇管理局提供了一种全面…

    科研百科 2025年1月26日
    2
  • 阿里云物联网应用开发工具IoT Studio用户数突破10万 低代码开发获追捧

    2月2日,阿里云AIoT宣布其物联网应用开发工具IoT Studio用户数已经突破10万。IoT Studio是阿里云在应用开发领域打造的一站式、低成本、高稳定、易定制的物联网生产…

    科研百科 2024年5月17日
    53
  • 科研项目绩效目标的设定

    科研项目绩效目标的的设定是确保项目成功的关键因素之一。设定合理的绩效目标可以帮助项目团队更好地了解项目进展情况,从而更好地协调工作、改进工作流程和提高项目质量。本文将介绍如何设定科…

    科研百科 2024年10月10日
    47
  • 政府合同管理规定

    政府合同管理规定 一、适用范围 本管理规定适用于各级政府及其部门之间的合同管理。 二、合同种类 本管理规定所称合同,是指政府及其部门因履行行政管理职责而与之对方签订的具有法律效力的…

    科研百科 2024年8月30日
    24