网络爬虫是什么(爬虫怎么学)

2022-06-16 16:05:12 发布:网友投稿
热度:70

什么是网络爬虫(如何学习爬虫)

爬行动物的起源

爬行动物的起源可以追溯到万维网(Internet)的诞生,在它诞生之初,互联网上还没有搜索。在搜索引擎开发出来之前,互联网只是FTP站点的集合,用户可以在其中导航找到特定的共享文件。

为了找到并组合互联网上可用的分布式数据,人们创造了一个名为Web crawler/robot的自动化程序,它可以抓取互联网上的所有网页,然后将所有网页的内容复制到数据库中进行索引。

爬行动物的发展

随着互联网的发展,互联网上的资源变得越来越丰富但又极其复杂,获取信息的成本也变得更高。

相应地,更智能、更适用的爬虫软件也日益发展起来。

它们类似于蜘蛛,通过辐射的蜘蛛网获取信息,然后捕捉自己想要的猎物,所以爬虫也被称为网蜘蛛。当然,与蜘蛛网相比,爬虫软件更加活跃。此外,爬行动物还有一些不常见的名字,比如蚂蚁/模拟器/蠕虫。

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

一般来说,在抓取网页数据时,只需要两个步骤:

打开网页→从网页中复制特定数据并导出到表格或资源库。

简单来说,抓取并复制。

爬行动物的君子协定

搜索引擎的爬虫是善意的,他们可以检索你的所有信息,并提供给其他用户访问。为此,他们还特意将robots.txt文件定义为君子协定。

机器人协议(爬虫协议)的全称是“机器人排除协议”。该网站通过机器人协议告诉搜索引擎哪些页面可以取,哪些页面不能取。这个协议是国际互联网界共同的道德标准。虽然没有写进法律,但是每个爬虫都应该遵守这个约定。

以淘宝的robots.txt为例。

机器人可以访问以“允许”项的值开头的网址。比如allow:/article允许百度爬虫引擎访问/article.htm、/article/http://12345.com等。

百度爬虫引擎不允许访问以“不允许”项目开头的链接。比如不允许:/product/不允许百度爬虫引擎访问/product/http://12345.com等。

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

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

虽然君子协定不错,但是事情很快就被一些人破坏了,于是就有了反爬虫。

爬行动物和反爬行动物

爬行动物和反爬行动物是“矛”和“盾”的攻防关系。有了爬行动物,自然会有反爬行动物。

为了保证服务器的正常运行,降低服务器的运行压力和成本,一些企业不得不使用各种手段来阻止爬虫工程师无限制地向服务器索要资源。这种行为叫做反爬虫。

在爬虫与反爬虫的较量中,经常会谈到一些反爬虫的方法,比如文本混淆反爬虫、动态渲染反爬虫、信息验证反爬虫、代码混淆反爬虫等等。

反爬虫技术如何防御爬虫,其实现原理是什么?我们以信息验证的反爬为例,请鹿山公爵魏翔勋爵给大家演示一下。

假设天地会黄飞鸿之英雄有梦堂香师从北京派人到扬州给青木堂香师韦小宝送去一封非常重要的密函,我们可以将此事抽象为下图:

这件事的核心是“帮派成员-A给帮派成员-B一封重要的密函”。假设甲、乙双方互不认识,从未见过面,“帮会成员-A”如何判断密函是给“帮会成员-B”而不是给错人-其他“帮会成员-D”的?

在历史实践中,我一定遭受过这样的损失。因此,天地将采用联合密码,以确保甲乙双方是同一团伙的成员。这就是为什么:

镇高岗,一派山水秀千古;门面朝大海,三江并流千年。

只有帮派成员知道密码,不能泄露。在和甲乙见面时,帮会成员——A说:“小镇在高岗,一群河山展现千古。”帮会成员-B听后,一定要接受下面这句话:“门对海,三江并流千年。”如果“帮派成员-B”不知道下一句话是什么,或者胡说八道,那么“帮派成员-A”就可以判断他不是联系人,而是冒名顶替者。

同样,“帮会成员-B”也想听帮会成员-A说“高岗镇,一群流山流秀千古”。否则“帮会成员-A”就是假的,很有可能假的密函会交给穆青会馆的韦小宝。

天上地下的人传递的消息(密函)和我们开发WEB应用时的Client和Server非常相似,抽象看起来是这样的:

那么,问题是,在客户机和服务器之间,你需要这样一个秘密信号吗?

答案是肯定的!

客户端就像“帮会成员-A”,服务器就像“帮会成员-B”,他们的密信很可能被其他帮会成员-D拿走或者伪造,既然会有一个天地联合码,那么客户端和服务器之间可以用什么来保证消息是第一手发送的,而不是被拦截伪造的呢?

没错,签名验证!

签名验证是目前IT领域广泛使用的API接口数据保护方法之一,可以有效防止消息接收方将篡改或伪造的消息视为正常消息。

需要注意的是,它的作用是防止消息接收者将篡改或伪造的消息视为正常消息,而不是防止消息接收者接收虚假消息。事实上,界面在接收消息的瞬间无法判断消息的真假。这个很重要,不要搞混了。

假设客户想把重要的密函“下月5日鳌拜遇刺”交给服务器。抽象图如下:

此时,如果出现冒名事件,会带来什么影响:

其他团伙成员——丁从客户端收到信息后伪造,将遇刺时间从5日改为6日,导致服务器收到的暗杀时间为6日。这样一来,从内部暗杀鳌拜就会成为一种拖延,而蓄谋已久的暗杀行动很大概率会失败,并且会造成很大的损失。

我们使用签名验证来改进这种消息传递和验证。在这里,签名验证可以简单理解为在原始消息的基础上对某些规则进行操作和加密,最后将加密结果一起发送到消息中。消息接收者得到消息后,按照相同的规则进行运算和加密,将自己计算的加密值与发送的加密值进行比较。如果两个值相同,则表示消息没有被截获和伪造;否则,可以判断该消息已被拦截和伪造。

签名验证应用广泛,比如下载操作系统镜像文件时,官网会提供文件的MD5值,以及阿里巴巴/腾讯/华为等企业界面中认证部分的Sign值。

以上防爬方法选自Python3防爬原理和旁路实战。

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

这本书是爬行动物领域第一本介绍反爬行动物的书。被誉为爬行类工程师不容错过的“武功秘籍”。腾讯和马蜂巢工程师强烈推荐。

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

从这本书里,你会了解到上面提到的签名验证和反爬虫技术的成因和绕过方法,比如文本混淆、动态渲染、加解密、代码混淆和行为验证码。

爬虫技术是一把双刃剑。希望你能用学到的技术进行保护,提高应用保护水平,用剑修炼剑,在技术的江湖中,攻守兼备~

写在最后

爬行动物本身并没有违反法律。但是在运行程序的过程中,可能会对别人的网站造成损害。取的数据可能涉及隐私或保密,数据本身也可能引起法律纠纷。

下一篇:花简笔画图片大全(简笔画好看的花朵有哪些)
上一篇:qq飞车快速拉车头(qq飞车端游怎么拉车头)