反爬虫战争进行了十八年,但一切才刚刚开始
在一大堆技术术语里,最为被普通人所熟知的大概就是“爬虫”了。其实爬虫这个名字就已经特别好地表现出了这项技术的作用——像密密麻麻的虫子一样分布在网络上,爬行至每一个角落获取数据;也一定程度上表达了人们对这项技术的情感倾向——虫子或许无害,但总是不受欢迎的。
有关爬虫的功能、益处或危害,此前已经有过很多讨论。因为爬虫技术造成的大量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和移动终端的硬件技术发展,也让生物识别这种更复杂的验证手段有可能加入战斗。双方正在站在同一水平线上,利用技术互相斗法。
可以说爬虫技术和反爬虫技术之间斗争了十几年,可真正的“战争”却从现在才刚刚开始。在彻底制服恶意爬虫之前,对于一切大数据、精准预测之类的“吹嘘”,我们最好保持着三分怀疑。