导航菜单

放下你手里的代码:爬虫技术的善与恶

'把代码放在你手里,小心被抓住'

最近程序员圈子里不乏这样的戏谑。

原因是司法部门最近调查了一些涉及爬虫技术的公司。最近,对51张信用卡进行了检查,揭露了非法使用爬虫技术向太阳抓取暴力收集背后的个人隐私数据的丑恶行为。

那时,“爬虫”成了公众批评的对象。一些公司立即撤下了与爬虫相关的招聘信息,这给大数据风控制和人工智能的从业者带来了一些恐慌,并多了几根头发。

事实上,大多数人听说过爬虫,认为爬虫是那些去别人的网站爬东西和窃取数据的人。有些人甚至认为只要有爬虫,任何数据都可以获得。

今天,我们将打开爬虫的“工具箱”,把涉及到的技术盲点放在灯光下,这样每个人都能看清楚。接下来,本文将从这个角度讨论crawler,一种熟悉和不熟悉的技术。

Crawler的技术原理

搜索引擎收集在线信息的主要手段是网络爬虫(又称网络蜘蛛和网络机器人)。它是一个“自动浏览网络”程序,根据某些规则自动捕获互联网信息,如网页、各种文档、图片、音频、视频等。搜索引擎通过索引技术组织这些信息,并根据用户的查询快速提供搜索结果。

想象一下当我们浏览网页时我们会做什么?

在正常情况下,首先,浏览器将被用来打开一个网站的主页,在页面上搜索感兴趣的内容,然后点击该网站或网页上其他网站的链接,跳转到一个新的网页,阅读内容,等等。如下图所示:

图中的虚线圆角矩形代表一个网站,每个实心矩形代表一个网页。可以看出,每个网站通常以主页为入口,主页链接到几个、数万个甚至数千万个内部页面。同时,这些页面经常链接到许多外部网站。

例如,用户从苏宁金融的网页开始,浏览并找到聚丙烯视频的链接,点击并跳转到聚丙烯视频主页。作为一名体育迷,他在体育频道找到了相关的新浪微博内容,再次点击,并转到微博页面继续阅读,从而形成了一条路径。如果您展示了所有可能的路径,您将看到一个网络结构。

网络爬虫模拟人们浏览网页的行为。它只使用程序来代替人工操作,并在广度和深度上遍历网页。如果互联网上的网页或网站被理解为节点,那么大量的网页或网站通过超链接形成网络结构。

Crawler通过遍历网页上的链接从一个节点跳到下一个节点,就像在一个巨大的网络上爬行一样,但是它比人类更快,跳跃的节点更全面,所以它被形象地称为网络爬虫(web crawler)或网络蜘蛛(web spider)。

爬虫的发展历史

网络爬虫最早的用途是服务于搜索引擎的数据收集,现代搜索引擎的鼻祖是加拿大麦吉尔大学的学生艾伦恩塔格(Alan Emtage)在1990年发明的阿奇。

人们使用文件传输协议服务器共享通信资源,大量文件分散在不同的文件传输协议主机上,很不方便查询。因此,他开发了一个可以根据文件名搜索文件的系统。他可以定期收集和分析文件服务器上的文件名信息,并自动索引这些文件。工作原理非常接近目前的搜索引擎,它依靠脚本程序自动搜索分散在各地FTP主机上的文件,然后用特定的表达式为用户查询相关信息建立索引。

世界上第一个网络爬虫‘网络漫游者’(‘www漫游者’)是麻省理工学院的学生马修格雷在1993年写的。起初,它只是用来计算互联网上服务器的数量。后来,它被开发成能够通过它搜索网站域名。

随着互联网的快速发展,检索所有新出现的网页变得越来越困难。因此,一些程序员在“网络漫游者”的基础上对传统“蜘蛛”程序的工作原理做了一些改进。这个想法是因为所有的网页可能都有到其他网站的链接,所以可以通过跟踪一个网站的链接来检索整个互联网。

此后,众多的搜索引擎使得爬虫的书写越来越复杂,并逐渐向多策略、负载均衡和大规模增量爬行发展。爬虫的工作结果是搜索引擎可以遍历链接的网页,甚至可以通过“网页快照”功能访问被删除的网页。

网络爬虫的礼仪

礼仪1: robots.txt文件

每个行业都有自己的行为准则,成为行为准则或行为准则。例如,如果你是某个协会的成员,你必须遵守该协会的行为准则。如果你违反了行为准则,你将被开除。

最简单的例子是,在您加入的许多微信群中,群的所有者通常要求您未经许可不得发布广告。如果你未经允许发布广告,你将立即被踢出这个团体,但给红包也没关系。这是行为准则。

爬虫也有行为准则。早在1994年,搜索引擎技术就刚刚出现。当时,AltaVista和DogPile等初创搜索引擎公司利用爬虫技术从整个互联网收集资源,并与雅虎等资源分类网站展开激烈竞争。随着互联网搜索规模的增长和爬虫收集信息能力的快速进化,网站开始考虑限制搜索引擎对信息的抓取。robots.txt应运而生,并成为爬虫界的“君子协定”。Txt文件是行业中常见的做法,不是强制性的约束。Txt采用以下形式:

在上面的机器人示例中,禁止所有爬虫访问网站上的任何内容。但是谷歌的爬行机器人可以访问除私人位置以外的所有东西。如果网站上没有robots.txt,爬行器抓取所有信息被认为是默许。如果robots.txt已经做出了访问限制,但是爬虫没有遵守它们,那么它就不是技术实现这样简单的事情。

礼仪2:爬行吞吐量的控制

曾经有一个案例,一个伪装成谷歌搜索引擎的爬虫攻击了一个有分布式拒绝服务的网站并瘫痪了该网站。近年来,恶意爬虫引起的DDoS攻击有增无减,给大数据行业蒙上了阴影。因为他们背后的恶意攻击者通常拥有更复杂和专业的技术,并且可以绕过各种防御机制,使得阻止此类攻击更加困难。

礼节3:做一个优雅的爬行动物

在一个优雅的爬行动物后面,必须有一个文明的人或者一个文明的团队。他们将考虑他们编写的爬虫是否符合robots.txt协议,是否会影响被爬行网站的性能,以及他们如何不侵犯知识产权所有者的权益和非常重要的个人隐私数据。

由于能力的不同,并不是每个爬虫团队都能考虑这些问题。2018年,欧洲联盟发布了《General Data Protection Regulation》(通用数据保护条例),对数据保护做出了严格的指示。2019年5月28日,国家互联网信息办公室发布了《数据安全管理办法》(征求意见稿),对爬虫和个人信息安全做出了非常严格的规定。例如:

(1)第十六条网络经营者应当使用自动化手段获取和收集网站数据,不得妨碍网站的正常运行;这种行为严重影响了网站的运行。如果自动访问收集流量超过网站日平均流量的三分之一,网站在请求停止自动访问收集时应当停止。

(2)第二十七条网络经营者在向他人提供个人信息前,应当评估可能存在的安全风险,并征得个人信息主体的同意。

事实上,2017年6月1日生效的《中华人民共和国网络安全法》第4章第41条和第44条已经对个人隐私信息数据的收集和使用做出了明确规定,这些数据也与爬行动物直接相关。

法律制度的引入已经明确界定了技术的界限。技术的天真不能作为技术实施者的借口。爬行动物在满足自身需求的同时,必须严格遵守行为准则和法律法规。

各种反爬虫技术介绍

为了保护自己的合法权益免受恶意侵害,许多网站和应用程序都应用了大量的防爬技术。这使得反爬虫技术衍生自爬虫技术,如各种滑动谜题、文本点击、图标点击等验证码破解,相互促进、相互发展、相互伤害。

反爬网程序的关键是防止爬网程序成批爬网网站内容。反爬虫技术的核心是不断改变规则和变换各种验证方法。

这种技术的发展甚至让人如痴如醉,比DOTA战争更让人兴奋。程序员的头发似乎可以在波形文本验证码的伪装色中看到。

1。图片/闪存

这是一种常见的反爬行方法。它将关键数据转换成图片并添加水印。即使使用光学字符识别(OCR),它也不能被识别,所以爬行器在获取图片时不能获得信息。这种方法早期经常出现在一些电子商务公司的价格标签上。

2,JavaScript混淆技术

这是爬虫程序员遇到的最常见的反爬行方法之一。简而言之,这实际上是一种掩饰,本质上是一种加密技术。许多网页中的数据是使用JavaScript程序动态加载的。抓取器需要知道网页在捕获这些网页数据时是如何加载数据的。这个过程叫做逆向工程。为了防止逆向工程,使用了JavaScript混淆技术,并添加了JavaScript代码进行加密,以便其他人无法理解。然而,这种方法属于相对简单的防爬方法,属于履带工程师培训的初级阶段。

3。验证码

验证码是一个公共的全自动程序,用来区分用户是计算机还是人。这也是我们经常遇到的一种网站访问认证方法。主要分为以下几种类型:

(1)输入验证码

这是最常见的类型,由用户输入的图片中的字母、数字、男人等字符来验证。

图表中验证码的全名是(全自动公共图灵测试来区分计算机和人类),这就转化为:完全自动区分计算机和人类的图灵测试。实现这一点的方法非常简单,就是问一个计算机不能回答但人类不能回答的问题。然而,当前的爬行器经常使用深度学习技术来破解这种验证码,并且这种图灵测试已经失败。

(2)滑块验证码

鉴于输入的图形验证码的缺点,它很容易被破解,有时人类无法识别。滑块验证码是凭空产生的。该验证码操作简单,不易破解。它很快变得流行起来。破解滑块验证码有两个主要困难:首先,需要知道图形间隙在哪里,即滑块在哪里滑动;第二是模仿人类的滑动手势。这种验证码增加了一定的难度,也给爬行动物社区增加了很多乐趣。当时,大量破解滑块验证码的技术出现了。

(3)点击式图形验证和图标选择

图形验证通过提醒用户点击图中同一单词的位置来验证。

图标选择是给出一组图片,并根据需要单击其中的一个或多个。

这两个原则相似,但只是给定的文本。点击图片中的文本。一个给出图片并指出与内容匹配的图片。这两种方法的共同点是经验不足,这受到了广泛的批评。

(4)手机验证码

为了获取一些重要的敏感信息,网站或应用终端通常会要求填写手机验证码。手机将接受网站发送的验证码以供进一步访问,这是保护数据隐私的更好方式。

4。使用帐户密码登录

网站可以通过帐户登录来限制爬网程序的访问权限。个人在使用许多网站服务时需要注册一个账户。使用网站时,他们需要通过帐户密码登录才能继续使用该服务。网站可以使用用户浏览器的Cookie来识别用户身份,并通过将加密的Cookie数据存储在用户的本地浏览器中来跟踪用户的访问会话。这通常被用作以前防攀爬方法的补充。

爬虫技术的发展方向

传统网络爬虫最大的应用场景是搜索引擎,普通企业大多在做网站或应用。后来,随着网络数据分析的需要和网络舆情事件的层出不穷,对网络爬虫的需求也越来越大,收集的对象主要是新闻信息。

近年来,由于大数据处理和数据挖掘技术的发展,数据资产价值的概念深深植根于人们的心中。履带技术得到了更加广泛和深入的发展。集合对象也更加丰富,高性能和并发性的技术指标也更高。

关于网络爬虫合法性的讨论仍然存在,情况也很复杂。在目前的趋势下,许多法律问题仍然处于模糊的领域,往往取决于具体案件的影响。然而,可以肯定的是,只要有互联网,就会有网络爬虫。只有网络爬虫才能使大规模的互联网变得可搜索,互联网的爆炸式增长更容易访问和获取。在可预见的未来,网络爬虫技术将继续发展。

作为人类历史上最大的知识库,互联网是非结构化的或非标准化的。互联网上收集了大量的数据,如文本、图片和多媒体。虽然内容很有价值,但知识提取的难度仍然很大。语义互联网和知识共享的概念越来越流行。真正的语义互联网将成为网络爬虫的目标。此外,物联网技术的发展将是互联网的升级形式和爬虫技术未来的发展方向。

来源:苏宁金融学院