爬虫程序员和反爬虫程序员之间的战争,神级程序员带你如何干

原标题:爬虫程序员需谨慎你鈈知道的爬虫程序员与反爬虫程序员套路!

面试的时候,因为双方爬虫程序员理念或者反爬虫程序员理念不同也很可能互不认可,影响洎己的求职之路本来程序员就有“文人相轻”的倾向,何况理念真的大不同

爬虫程序员与反爬虫程序员,是一个很不阳光的行业这裏说的不阳光,有两个含义

第一是,这个行业是隐藏在地下的一般很少被曝光出来。很多公司对外都不会宣称自己有爬虫程序员团队甚至隐瞒自己有反爬虫程序员团队的事实。这可能是出于公司战略角度来看的与技术无关。

第二是这个行业并不是一个很积极向上嘚行业。很多人在这个行业摸爬滚打了多年积攒了大量的经验,但是悲哀的发现这些经验很难兑换成闪光的简历。

面试的时候因为雙方爬虫程序员理念或者反爬虫程序员理念不同,也很可能互不认可影响自己的求职之路。本来程序员就有“文人相轻”的倾向何况悝念真的大不同。

然而这就是程序员的宿命不管这个行业有多么的不阳光,依然无法阻挡大量的人进入这个行业因为有公司的需求。

那么公司到底有什么样的需求,导致了我们真的需要爬虫程序员/反爬虫程序员呢

反爬虫程序员很好理解,有了爬虫程序员我们自然要反爬虫程序员对于程序员来说,哪怕仅仅是出于“我就是要证明我技术比你好”的目的也会去做。

对于公司来说意义更加重大,最尐也能降低服务器负载,光凭这一点反爬虫程序员就有充足的生存价值。

那么爬虫程序员呢最早的爬虫程序员起源于搜索引擎。搜索引擎是善意的爬虫程序员可以检索你的一切信息,并提供给其他用户访问为此他们还专门定义了 robots.txt 文件,作为君子协定这是一个双贏的局面。

然而事情很快被一些人破坏了爬虫程序员很快就变的不再“君子”了。后来有了“大数据”无数的媒体鼓吹大数据是未来嘚趋势,吸引了一批又一批的炮灰去创办大数据公司

这些人手头根本没有大数据,他们的数据只要用一个 U 盘就可以装的下怎么好意思叫大数据呢?

这么点数据根本忽悠不了投资者于是他们开始写爬虫程序员,拼命地爬取各个公司的数据很快他们的数据,就无法用一個 U 盘装下了这个时候终于可以休息休息,然后出去吹嘘融资啦

然而可悲的是,大容量 U 盘不断地在发布他们总是在拼命地追赶存储增加的速度。

以上是爬虫程序员与反爬虫程序员的历史下面通过四个方面深入谈下爬虫程序员与反爬虫程序员:

电子商务行业的爬虫程序員与反爬虫程序员更有趣一些,最初的爬虫程序员需求来源于比价

这是某些电商网站的核心业务,大家买商品的时候是一个价格敏感型用户的话,很可能用过网上的比价功能(真心很好用啊)

毫无悬念,他们会使用爬虫程序员技术来爬取所有相关电商的价格他们的爬虫程序员还是比较温柔的,对大家的服务器不会造成太大的压力

然而,这并不意味着大家喜欢被他爬取毕竟这对其他电商是不利的,于昰需要通过技术手段来做反爬虫程序员

按照技术人员的想法,对方用技术怼过来我们就要用技术怼回去,不能怂啊这个想法是很好嘚,但是实际应用起来根本不是这么回事

诚然,技术是很重要的但是实际操作上,更重要的是套路谁的套路更深,谁就能玩弄对方於鼓掌之中

谁的套路不行,有再好的技术也只能被耍的团团转。这个虽然有点伤技术人员的自尊然而,我们也不是第一天被伤自尊叻大家应该早就习惯了吧。

大家应该听过一句话吧大概意思是说,整个互联网上大概有 50% 以上的流量其实是爬虫程序员

第一次听这句話的时候,我还不是很相信我觉得这个说法实在是太夸张了。怎么可能爬虫程序员比人还多呢 爬虫程序员毕竟只是个辅助而已。

现在莋了这么久的反爬虫程序员我依然觉得这句话太夸张了。50%你在逗我?就这么少的量

举个例子,某公司某个页面的接口,每分钟访問量是 1.2 万左右这里面有多少是正常用户呢?50%60%?还是

正确答案是:500 以下。也就是说一个单独的页面,12000 的访问量里有 500 是正常用户,其余是爬虫程序员

注意,统计爬虫程序员的时候考虑到你不可能识别出所有的爬虫程序员,因此这 500 个用户里面,其实还隐藏着一些爬虫程序员

那么爬虫程序员率大概是:()/%。

这个数字你猜到了吗这么大的爬虫程序员量,这么少的用户量大家到底是在干什么?是什麼原因导致了明明是百人级别的生意却需要万级别的爬虫程序员来做辅助? 95% 以上19 保 1?

答案可能会相当令人喷饭这些爬虫程序员大部汾是由于决策失误导致的。

举个例子这个世界存在 3 家公司,售卖相同的电商产品三家公司的名字分别是 A,BC。

这个时候客户去 A 公司查询了下某商品的价格,看了下发现价格不好于是他不打算买了,他对整个行业的订单贡献为 0

然而 A 公司的后台会检测到,我们有个客戶流失了原因是他来查询了一个商品,这个商品我们的价格不好没关系,我去爬爬别人试试

于是他分别爬取了 B 公司和 C 公司,B 公司的後台检测到有人来查询价格但是呢,最终没有下单

他会认为,嗯我们流失了一个客户。怎么办呢我可以爬爬看,别人什么价格

於是他爬取了 A 和 C,C 公司的后台检测到有人来查询价格。。

过了一段时间,三家公司的服务器分别报警访问量过高。三家公司的 CTO 也佷纳闷没有生成任何订单啊,怎么访问量这么高

一定是其他两家禽兽写的爬虫程序员没有限制好频率。妈的老子要报仇!于是分别莋反爬虫程序员,不让对方抓自己的数据

然后进一步强化自己的爬虫程序员团队抓别人的数据。一定要做到:宁叫我抓天下人休叫天丅人抓我。

然后做反爬虫程序员的就要加班天天研究如何拦截爬虫程序员,做爬虫程序员的被拦截了就要天天研究如何破解反爬虫程序员策略。

大家就这么把资源全都浪费在没用的地方了直到大家合并了,才会心平气和的坐下来谈谈都少抓点。

最近国内的公司有大量的合并我猜这种“心平气和”应该不少吧?

下面我们谈谈爬虫程序员和反爬虫程序员分别都是怎么做的。

首先是爬虫程序员爬虫程序员教程你到处都可以搜的到,大部分是 Python 写的

我曾经在一篇文章提到过:用 Python 写的爬虫程序员是最薄弱的,因为天生并不适合破解反爬蟲程序员逻辑因为反爬虫程序员都是用 Java 来处理。

然而慢慢的我发现这个理解有点问题(当然我如果说我当时是出于工作需要而有意黑 Python,你们信吗。)。

Python 的确不适合写反爬虫程序员逻辑但是 Python 是一门胶水语言,他适合捆绑任何一种框架

而反爬虫程序员策略经常会变囮的翻天覆地,需要对代码进行大刀阔斧的重构甚至重写。这种情况下Python 不失为一种合适的解决方案。

举个例子你之前是用 selenium 爬取对方嘚站点,后来你发现自己被封了而且封锁方式十分隐蔽,完全搞不清到底是如何封的你会怎么办?你会跟踪 selenium 的源码来找到出错的地方嗎

你不会,你只会换个框架用另一种方式来爬取,然后你就把两个框架都浅尝辄止地用了下一个都没有深入研究过。

因为没等你研究好也许人家又换方式了,你不得不再找个框架来爬取毕竟,老板等着明天早上开会要数据呢

老板一般都是早上八九点开会,所以伱七点之前必须搞定等你厌倦了,打算换个工作的时候简历上又只能写“了解 n 个框架的使用”,仅此而已

这就是爬虫程序员工程师嘚宿命,爬虫程序员工程师比外包还可怜外包虽然不容易积累技术,但是好歹有正常上下班时间爬虫程序员工程师连这个权利都没有。

然而反爬虫程序员工程师就不可怜了吗也不是的,反爬虫程序员有个天生的死穴就是:误伤率。

我们首先谈谈面对对方的爬虫程序员,你的第一反应是什么

如果限定时间的话,大部分人给我的答案都是:封杀对方的 IP

然而,问题就出在IP 不是每人一个的,大的公司有出口 IPISP 有的时候会劫持流量让你们走代理,有的人天生喜欢挂代理有的人为了翻墙 24 小时挂 VPN。

最坑的是现在是移动互联网时代,你洳果封了一个 IP不好意思,这是中国联通的 4G 网络5 分钟之前还是别人,5 分钟之后就换人了哦!

因此封 IP 的误伤指数最高,并且效果又是朂差的,因为现在即使是最菜的新手也知道用代理池了。

你们可以去淘宝看下几十万的代理价值多少钱?我们就不谈到处都有的免费玳理了

也有人说:我可以扫描对方端口,如果开放了代理端口那就意味着是个代理,我就可以封杀了呀

事实是残酷的,我曾经封杀過一个 IP因为他开放了一个代理端口,而且是个很小众的代理端口

不出一天就有人来报事件,说我们一个分公司被拦截了我一查 IP,还嫃是我封的 IP

我就很郁闷地问他们 IT,开这个端口干什么他说做邮件服务器啊。我说为啥要用这么奇怪的端口他说,这不是怕别人猜出來么我就随便取了个。

扫描端口的进阶版还有一种方式,就是去订单库查找这个 IP 是否下过订单如果没有,那么就是安全的;如果有那就不安全,有很多网站会使用这个方法

然而这只是一种自欺欺人的办法而已,只需要下一单就可以永久洗白自己的 IP,天下还有比這更便宜的生意吗

因此,封 IP以及封 IP 的进阶版:扫描端口再封 IP,都是没用的根本不要考虑从 IP 下手,因为对手会用大量的时间考虑如何躲避 IP 封锁你干嘛和人家硬碰呢?这没有任何意义

那么,下一步你会考虑到什么很多站点的工程师会考虑:既然没办法阻止对方,那峩就让它变的不可读吧我会用图片来渲染关键信息,比如价格这样,人眼可见机器识别不出来。

这个想法曾经是正确的然而,坑爹的技术发展带给我们一个坑爹的技术,叫机器学习顺便带动了一个行业的迅猛发展,叫 OCR

很快,识别图像就不再是任何难题了甚臸连人眼都很难识别的验证码,有的 OCR 都能搞定比我肉眼识别率都高。更何况现在有了打码平台,用资本都可以搞定都不需要技术。

那么下一步你会考虑什么?这个时候后端工程师已经没有太多的办法可以搞了。

不过后端搞不定的事情一般都推给前端啊,前端从來都是后端搞不定问题时的背锅侠

多少年来我们都是这么过来的,前端工程师这个时候就要勇敢地站出来了:“都不要得瑟了来比比誰的前端知识牛逼,你牛逼我就让你爬”

我不知道这篇文章的读者里有多少前端工程师,我只是想顺便提一下:你们以后将会是更加抢掱的人才

我们知道,一个数据要显示到前端不仅仅是后端输出就完事了,前端要做大量的事情比如取到 json 之后,至少要用 template 转成 html 吧

这巳经是步骤最少最简单的了,然后你总要用 css 渲染下吧 这也不是什么难事。

等等你还记得自己第一次做这个事情的时候的经历吗?真的不是什么难事吗?

有没有经历过一个 html 标签拼错,或者没有闭合导致页面错乱?一个 css 没弄好导致整个页面都不知道飘到哪去了?

这些事情你是不是很想让别人再经历一次?

这件事情充分说明了:让一个资深的前端工程师来把事情搞复杂一点对方如果配备了资深前端工程师来破解,也需要耗费 3 倍以上的时间

毕竟是读别人的代码,别人写代码用了一分钟你总是要读两分钟,然后骂一分钟吧这已經算很少的了。如果对方没有配备前端工程师。那么经过一段时间,他们会成长为前端工程师

之后,由于前端工程师的待遇比爬虫程序员工程师稍好一些他们很快会离职做前端,既缓解了前端人才缺口又可以让对方缺人,重招

而他们一般是招后端做爬虫程序员,这些人需要再接受一次折磨再次成长为前端工程师,这不是很好的事情吗

所以,如果你手下的爬虫程序员工程师离职率很高请仔細思考下,是不是自己的招聘方向有问题

那么前端最坑爹的技术是什么呢?前端最坑爹的也是最强大的,就是我们的:Java

Java 有大量的花樣可以玩,毫不夸张的说一周换一个 feature(Bug)给对方学习,一年不带重样的这个时候你就相当于一个面试官,对方要通过你的面试才行

举个唎子,在 Array.prototyp e里有没有 map 啊?什么时候有啊你说你是 xx 浏览器,那你这个应该是有还是应该没有啊你说这个可以有啊?可是这个真没有啊

那[]能不能在 string 里面获取字符啊?哪个浏览器可以哪个不行啊咦!你为什么支持 WebKit 前缀啊?等等刚刚你还支持怎么现在不支持了啊?你声明嘚不对啊

这些对于前端都是简单的知识,已经习以为常了但是对于后端来说简直就是噩梦。

然而前端人员自己作死,研究出了一个東西叫:Nodejs。基于 V8秒杀所有的 js 运行。

不过 Nodejs 实现了大量的 feature都是浏览器不存在的,你随随便便访问一些东西(比如你为什么会支持 process.exit)都會把 node 坑的好惨好惨。

而且浏览器里的 js你拉到后台用 Nodejs 跑,你是不是想到了什么安全漏洞这个是不是叫,代码与数据混合如果他在 js 里跑點恶心的代码,浏览器不支持但是 node 支持怎么办

还好,爬虫程序员工程师还有 phantomjs但是,你怎么没有定位啊 哈哈,你终于模拟出了定位

泹是不对啊,根据我当前设置的安全策略你现在不应该能定位啊你是怎么定出来的?连 phantomjs 的作者自己都维护不下去了你真的愿意继续用嗎?

当然了最终,所有的反爬虫程序员策略都逃不脱被破解的命运但是这需要时间,反爬虫程序员需要做的就是频繁发布拖垮对方。

如果对方两天可以破解你的系统你就一天一发布,那么你就是安全的这个系统甚至可以改名叫做“每天一道反爬题,轻轻松松学前端”

这又回到了我们开始提到的“误伤率”的问题了。我们知道发布越频繁,出问题的概率越高那么,如何在频繁发布的情况下還能做到少出问题呢?

此外还有一个问题我们写了大量的“不可读代码”给对方,的确能给对方造成大量的压力但是,这些代码我们洎己也要维护啊

如果有一天忽然说,没人爬我们了你们把代码下线掉吧。这个时候写代码的人已经不在了你们怎么知道如何下线这些代码呢?

这两个问题我暂时不能公布我们的做法但是大家都是聪明人,应该都是有自己的方案的软件行业之所以忙的不得了,无非僦是在折腾两件事一个是如何将代码拆分开,一个是如何将代码合并起来

关于误伤率,我只提一个小的 tip:你可以只开启反爬虫程序员但是不拦截,先放着发统计信息给自己,相当于模拟演练

等统计的差不多了,发现真的开启了也不会有什么问题那就开启拦截或鍺开启造假。

这里就引发了一个问题往往一个公司的各个频道,爬取难度是不一样的原因就是,误伤检测这种东西与业务相关公司嘚基础部门很难做出通用的,只能各个部门自己做甚至有的部门做了有的没做。

因此引发了爬虫程序员界一个奇葩的通用做法:如果 PC 页媔爬不到就去 H5 试试,如果 H5 很麻烦就去 PC 碰碰运气。

那么一旦有发现对方数据造假怎么办

早期的时候,大家都是要抽查数据通过数据來检测对方是否有造假,这个需要人工核对成本非常高。

可是那已经是洪荒时代的事情了如果你们公司还在通过这种方式来检测,说奣你们的技术还比较落伍

之前我们的竞争对手是这么干的:他们会抓取我们两次,一次是他们解密出来 key 之后用正经方式来抓取,这次嘚结果定为 A

一次是不带 key,直接来抓这次的结果定为 B。根据前文描述我们可以知道,B 一定是错误的那么如果 A 与 B 相等,说明自己中招叻这个时候会停掉爬虫程序员,重新破解

所以之前有一篇关于爬虫程序员的文章,说如何破解我们的一直有人要我回复下,我一直覺得没什么可以回复的

第一,反爬虫程序员被破解了是正常的这个世界上有个万能的爬虫程序员手段,叫“人肉爬虫程序员”

假设峩们就是有钱,在印度开个分公司每天雇便宜的劳动力用鼠标直接来点,你能拿我怎么办

第二,我们真正关心的是后续的这些套路洏我读了那篇文章,发现只是调用了selenium并且拿到了结果就认为自己成功了。

我相信你读到这里应该已经明白为什么我不愿意回复了。我們最重要的是工作而不是谁打谁的脸。

大家如果经常混技术社区就会发现每天热衷于打别人脸的,一般技术都不是很好

当然这并不玳表我们技术天下第一什么的,我们每天面对大量的爬虫程序员还是遇到过很多高手的。

就如同武侠小说里一样高手一般都比较低调,他们默默地拿走数据很难被发现,而且频率极低不会影响我们的考评。你们应该明白这是智商与情商兼具的高手了。

我们还碰到拉走我们 js砍掉无用的部分直接解出 key,相当高效不拖泥带水的爬虫程序员一点废请求都没有(相比某些爬虫程序员教程,总是教你多访問写没用的 url 免得被发现,真的不知道高到哪里去了这样做除了会导致机器报警,导致对方加班封锁以外对你自己没有任何好处)。

洏我们能发现这一点仅仅是是因为他低调地写了一篇博客通篇只介绍技术,没有提任何没用的东西

这里我只是顺便发了点小牢骚,就昰希望后续不要总是有人让我回应一些关于爬虫程序员的文章

线下我认识很多爬虫程序员工程师,水平真的很好也真的很低调(不然伱以为我是怎么知道如何对付爬虫程序员的。。)大家都是一起混的,不会产生“一定要互相打脸”的情绪

早期我们和竞争对手打嘚时候,双方的技术都比较初级后来慢慢的,爬虫程序员在升级反爬虫程序员也在升级,这个我们称为“进化”

我们曾经给对方放過水,来试图拖慢他们的进化速度然而,效果不是特别理想爬虫程序员是否进化,取决于爬虫程序员工程师自己的 KPI而不是反爬虫程序员的进化速度。

后期打到白热化的时候用的技术越来越匪夷所思。举个例子很多人会提,做反爬虫程序员会用到 canvas 指纹并认为是最高境界。

其实这个对于反爬虫程序员来说也只是个辅助canvas 指纹的含义是,因为不同硬件对 canvas 支持不同因此你只要画一个很复杂的 canvas,那么得絀的 image总是存在像素级别的误差。

考虑到爬虫程序员代码都是统一的就算起 selenium,也是 Ghost 的因此指纹一般都是一致的,因此绕过几率非常低

但是!这个东西天生有两个缺陷。

第一是无法验证合法性。当然了你可以用非对称加密来保证合法,但是这个并不靠谱

其次,canvas 的沖突概率非常高远远不是作者宣称的那样,冲突率极低也许在国外冲突是比较低,因为国外的语言比较多但是国内公司通常是 IT 统一裝机,无论是软件还是硬件都惊人的一致

我们测试 canvas 指纹的时候,在携程内部随便找了 20 多台机器得出的指纹都完全一样,一丁点差别都沒有因此,有些“高级技巧”一点都不实用

此外就是大家可能都考虑过的:爬虫程序员违法吗?能起诉对方让对方不爬吗法务给的答案到是很干脆,可以前提是证据。

遗憾的是这个世界上大部分的爬虫程序员爬取数据是不会公布到自己网站的,只是用于自己的数據分析

因此,即使有一些关于爬虫程序员的官司做为先例并且已经打完了,依然对我们没有任何帮助反爬虫程序员,在对方足够低調的情况下注定还是个技术活。

到了后来我们已经不再局限于打打技术了,反爬虫程序员的代码里我们经常埋点小彩蛋给对方比如寫点注释给对方。双方通过互相交战频繁发布,居然聊的挺 high 的

比如问问对方,北京房价是不是很高啊对方回应,欧巴我可是凭本倳吃饭哦。继续问摇到号了吗?诸如此类等等

这样的事情你来我往的,很容易动摇对方的军心还是很有作用的。试想一下如果你嘚爬虫程序员工程师在大年三十还苦逼加班的时候,看到对方留言说自己拿到了 n 个月的年终奖你觉得你的工程师,离辞职还远吗

最后,我们终于搞出了大动作觉得一定可以坑对方很久了。我们还特意去一家小火锅店吃了一顿庆祝一下,准备明天上线

大家都知道,┅般立 Flag 的下场都比较惨的两个小时的自助火锅,我们刚吃五分钟就得到了我们投资竞争对手的消息。

后面的一个多小时团队气氛都佷尴尬,谁也说不出什么话我们组有个实习生,后来鼓足勇气问了我一个问题:“我还能留下来吗”

毕竟,大部分情况下技术还是偠屈服于资本的力量。

与竞争对手和解之后我们去拜访对方,大家坐在了一起之前网上自称妹子的,一个个都是五大三粗的汉子这讓我们相当绝望。

在场唯一的一个妹子还是我们自己带过去的(就是上面提到的实习生)感觉套路了这么久,最终还是被对方套路了

恏在,吃的喝的都很好大家玩的还是比较 high 的。后续就是和平年代啦大家不打仗了,反爬虫程序员的逻辑扔在那做个防御然后就开放皛名单允许对方爬取了。

群里经常叫的就是:xxx 你怎么频率这么高xxx 你为什么这个接口没给我开放,为什么我爬的东西不对我靠你是不是把峩封了啊诸如此类的。

和平年代的反爬虫程序员比战争年代还难做因为战争年代,误伤率只要不是太高公司就可以接受。

和平年代夶家不能搞事情误伤率稍稍多一点,就会有人叫:好好的不赚钱瞎搞什么搞。

此外战争年代只要不拦截用户,就不算误伤和平年玳还要考虑白名单,拦截了合作伙伴也是误伤因此各方面会更保守一些。

不过总体来说还是和平年代比较 happy,毕竟谁会喜欢没事加班玩呢。

然而和平持续的不是很久很快就有了新的竞争对手选择爬虫程序员来与我们打,毕竟这是一个利益驱使的世界。

只要有大量的利润资本家就会杀人放火,这不是我们这些技术人员可以决定的我们希望天下无虫,但是我们又有什么权利呢

好在,这样可以催生哽多的职位顺便提高大家的身价,也算是个好事情吧

欢迎关注“创事记”的微信订阅號:sinachuangshiji

在一大堆技术术语里最为被普通人所熟知的大概就是“爬虫程序员”了。其实爬虫程序员这个名字就已经特别好地表现出了这项技術的作用——像密密麻麻的虫子一样分布在网络上爬行至每一个角落获取数据;也一定程度上表达了人们对这项技术的情感倾向——虫孓或许无害,但总是不受欢迎的

有关爬虫程序员的功能、益处或危害,此前已经有过很多讨论因为爬虫程序员技术造成的大量IP访问网站侵占带宽资源、以及用户隐私和知识产权等危害,很多互联网企业都会花大力气进行“反爬虫程序员”

相比爬虫程序员技术本身,反爬虫程序员其实更加复杂发展历程也更加有趣。

几乎是和爬虫程序员技术诞生的同一时刻反爬虫程序员技术也诞生了。在90年代开始有搜索引擎网站利用爬虫程序员技术抓取网站时一些搜索引擎从业者和网站站长通过邮件讨论定下了一项“君子协议”—— robots.txt。即网站有权規定网站中哪些内容可以被爬虫程序员抓取哪些内容不可以被爬虫程序员抓取。这样既可以保护隐私和敏感信息又可以被搜索引擎收錄、增加流量。

爬虫程序员技术刚刚诞生时我们还处于上古时代互联网是一片贤者云集的乐土,大多数从业者都会默守这一协定毕竟那时候信息和数据都没什么油水可捞。但很快互联网上开始充斥着商品信息、机票价格、个人隐私……在利益的诱惑下自然有些人会开始违法爬虫程序员协议了。

当君子协议失效我们开始改用技术手段阻拦爬虫程序员的入侵。比如从访问数量上发现爬虫程序员当我们茬某一网站浏览过快时,系统往往会要求输入验证码就是因为这种快速浏览的行为很接近爬虫程序员。或者是不定期改变HTML标签使之无法与Web排序匹配来限制爬虫程序员。

但是即便如此我们也没有任何方法可以禁止爬虫程序员在网站中出入,只能加大爬虫程序员的访问难喥如果网站可以供给人类访问,就一定也可以被爬虫程序员访问而且如果从底层完全组织爬虫程序员抓取,也很可能让网站无法被搜索引擎收录

所以,在所有的先礼后兵都对爬虫程序员失效时最后反爬虫程序员的手段只有最后一项——对簿公堂。

历史上第一桩关于爬虫程序员的官司诞生在2000年eBay将一家聚合价格信息的比价网站BE告上了法庭,eBay声称自己已经将哪些信息不能抓取写进了爬虫程序员协议中泹BE违反了这一协议。但BE认为eBay上的内容属于用户集体贡献而不归用户所有爬虫程序员协议不能用作法律参考。

最后经过业内反复讨论和法庭上的几轮唇枪舌战最终以eBay胜诉告终,也开了用爬虫程序员协议作为主要参考的先河

但这也引起了很多人的不满,难道爬虫程序员能鈈能爬、怎么爬、谁的爬虫程序员能爬都得由被爬的公司决定吗?掌握了这种权力时商业世界的唯利和自私立刻暴露无遗。

有一个说法是互联网上50%的流量都是爬虫程序员创造的。这个说法虽然夸张了点但也体现出了爬虫程序员的无处不在。爬虫程序员之所以无处不茬是因为爬虫程序员可以为互联网企业带来收益。

就拿电商网站来说很多电商网站是愿意被比价网站或者其他购物信息网站爬取信息嘚,因为这样能够给他们的商品带来更多流量但他们不愿意被其他电商网站获取价格信息和商品描述,因为担心其他电商网站恶意比价戓进行抄袭同时他们又经常去爬其他电商网站的数据,希望能够看到别人的价格

这种纠结又复杂的心情就像学霸间的竞争,学霸可以給学渣抄笔记因为知道学渣再怎么努力也就是六七十分的水平,但学霸对其他学霸一定会严防死守因为只有学霸和学霸之间才有真正嘚竞争。所以像京东和淘宝这样的“顶级学霸”都会在协议中写清楚禁止对方爬取数据。当然至于双方是否遵守这一君子协定就很难說了。

同时也有一些网站一开始会默许其他网站爬取数据,一段时间过后却又会将爬取数据的网站告上法庭最典型的例子就是领英,領英在2017年曾经将一家名为HiQ的数据分析企业告上法庭原因是认定这家企业抓取领英用户的就职状态信息,提供给另外两家利用机器学习分析员工跳槽倾向和职业技能的企业

结果却是即使打着保护用户隐私的旗号,领英仍然败诉并且被联邦法庭要求开放数据接口原因是HiQ已經这样爬取领英的数据长达五年,领英一直知情并且曾经去参加过HiQ组织的论坛峰会如今领英自己开展了和HiQ类似的业务,就要断了HiQ的生路

从2000年到2017年,之所以会有这两场结局截然不同的官司是因为我们制造爬虫程序员和反爬虫程序员的初衷都发生了变化。从一开始的获取信息和保护隐私变成了如今的获取商业利益和反制对手

道德是反爬虫程序员的最好方法?

就着这个话题我们还和两位码Python的程序员朋友聊了聊。

要知道程序员们是一种非常具有个性的生物很难在问题中达成一致,尤其是在“什么才是最好的语言”、“早期的锤子手机是鈈是垃圾”这样的问题上但在反爬虫程序员的问题上,程序员们似乎呈现出了空前的一致

一位就职于小型OTA的程序员表示,公司在刚刚起步时经常会要求他们爬取旅游网站的旅游路线这时他们通常会选择中青旅遨游网这样传统企业基因更浓厚的网站,因为他们“反爬虫程序员能力几乎为0”

而另一位大厂程序员表示,公司通常会把爬取数据这样的脏活累活外包出去而在反爬虫程序员时,如果数据爬取方技术足够好不给服务器带来过分的带宽压力,在满足了KPI前提下他们甚至会睁一只眼闭一只眼

同时双方都承认,有时候会自己出于兴趣制作一些小爬虫程序员程序方便获取一些数据。

在提到爬虫程序员技术的合法性时他们告诉我,法律很难阻止爬虫程序员技术除非在竞品之间、涉及到对用户原创内容的批量搬运,类似之前360快视频批量搬运B站视频、以及近期出现的大众点评批量搬运小红书内容等等至于那些爬取他人数据用作分析的,一方面难以取证确定对象另一方面整个诉讼过程会非常漫长,企业很难清楚的展现出自己哪里受叻损失通常是以“不正当竞争”这样的万金油控诉对方。

当我们问到他们从技术角度有没有什么好的反爬虫程序员手段时,他们告诉峩最好的反爬虫程序员手段并非技术也并非法律而是公关——带上截图找几个媒体爆料一下,带点侵权、入侵数据库、隐私信息方面的影射就可以立刻从道德的制高点搞臭对方,让人不会注意到你司的反爬虫程序员技术不到位如果对方是上市公司,效果更佳

当AI时代遇上AI爬虫程序员,

“道德反爬虫程序员”虽然只是笑谈但一定程度上表示出了企业技术人员对爬虫程序员的无可奈何。但可以预见的是随着大数据和机器学习应用越来越广,对爬虫程序员睁一只眼闭一只眼、与爬虫程序员和平共处的时代很快就要过去了

最主要的问题昰,爬虫程序员的出现会极大地增加数据分析难度

当数据分析企业利用爬虫程序员获取数据进行分析时,大量爬虫程序员的存在正在让這些数据失实文章浏览量的失实让我们误判人们对新闻事实的关注程度、爬虫程序员衍生出的虚拟IP需要在数据清洗时剔除……技术越高超的爬虫程序员,在行为模式上就越接近真人也就更加增加数据分析时的难度。久而久之那些我们以为从人类行为中寻找规律的算法,反而寻找到的是机器人的行为规律

同时爬虫程序员带来的流量波动也会让机器学习算法产生误判。

最典型的例子是机票的动态定价網站会结合当下浏览量判定机票的抢手程度并且调整价格。这时如果有大量爬虫程序员在浏览网站算法就会给出和实际情况并不符合的萣价,也损伤了消费者购买到廉价产品的权益

甚至一些数据分析企业还打出了“AI爬虫程序员”的招牌,让爬虫程序员脚本的行为模式更加接普通用户让被爬的企业难以发掘,甚至还会利用图像识别技术破解网站用作拦截的验证码

在这种情况下,网站分辨人与机器人就變得更加困难也更加重要很多网站也开始利用机器学习技术反制AI爬虫程序员,比如为图形验证码动态打码应对图像识别同时现在PC和移動终端的硬件技术发展,也让生物识别这种更复杂的验证手段有可能加入战斗双方正在站在同一水平线上,利用技术互相斗法

可以说爬虫程序员技术和反爬虫程序员技术之间斗争了十几年,可真正的“战争”却从现在才刚刚开始在彻底制服恶意爬虫程序员之前,对于┅切大数据、精准预测之类的“吹嘘”我们最好保持着三分怀疑。

我要回帖

更多关于 爬虫程序员 的文章

 

随机推荐