爬虫这个领域,就快要被玩坏了

版权声明:所有博客文章除特殊声明外均为原创,允许转载,但要求注明出处。

最近知乎上有几个邀请我的关于网络爬虫的问题。我看到了,但是并没有心情去回答。说实话,我的心情挺糟糕的。爬网站 -》 反爬 -》 反反爬......一直是爬虫界生生不息的主题,但是现在的反爬手段已经变态到这种程度,足以说明:爬虫这个行当,快要被某些人玩坏了。

爬虫原本应该是一个挺有意思的话题。它门槛不高,但对大多数人来说是一个相当实用的技能,因为互联网信息浩如烟海,完全靠人工阅读效率确实太低。最早的爬虫应该是用 Java 实现的,但 Java 对于没有没有编程背景的普通人来说门槛还是有点过高了。Python 由于平易近人的风格和广泛的库后来居上,慢慢成为这个领域的领头羊。今天,爬虫的话题似乎已经在某些地方——包括知乎在内——有点泛滥的趋势,也开始招致部分人的反感。有的批评虽然不便明说,但不难看出作者的意思:没有太多技术含量的爬虫文章是“低端话题”,是不能登大雅之堂的。(嗯,是不是想起来最近闹的沸沸扬扬的低端人口问题?)

我个人对技术含量不高的爬虫文章并没有什么特别的意见。技术无高下,达到目标就好。爬虫这个领域,真正需要深奥的技术内容的毕竟还是少数,大部分还是普通的网站内容抓取,面向的对象也大多是非专科出身的普通人。普通人爬网站的方法当然是简单粗暴,你不可能要求他们都像专业程序员那样追求优雅,这就是现实,最好的做法是平心静气的接受,没有必要像某些有洁癖的人士那样,看到“低端内容”就觉得是污了自己的眼睛。

但是话也要分开来讲。爬虫低端没有什么问题,但是某些爬虫制造者的手段实在是过于暴力了,而且毫无道德观念。我曾不止一次看到过有人在文章里得意洋洋的宣称自己一天抓取了数十万网页,还引以为荣。但是你们难道没有想过,你们的爬虫占用的流量带宽、以及服务器费用,都是网站的主人花真金白银去维护的,这样毫无节制的占用服务器资源,还妨碍了其他正常用户的使用,对于站长来说却毫无任何好处可言。这样的局面能长久维持下去吗?你们在寻找各种办法突破网站的限制,就没有想过为什么人家会用这么激烈的手段来限制你吗?

像谷歌这样的搜索引擎也是爬虫(而且是规模巨大的爬虫),为什么站长不但不反感,反而很欢迎?最主要的原因当然是因为这是一种互惠互利的关系。谷歌爬虫爬网站的结果是将网站内容收录到搜索引擎中,网站能够有机会面向更广大的潜在用户,这样的爬虫即便占用一些服务器资源也是完全合理的。并且谷歌的爬虫也很有操守:它不伪装(不会把自己假扮成某个浏览器);尊重站长的要求(robots 协议);爬内容也是非常有节制的(不会疯狂的一天之内把一个网站爬几十万次)。绝大多数人自己制作的爬虫则除了消耗服务器资源之外,对网站没有任何益处,甚至还直接破坏了网站的生存模式(例如广告)。这样的爬虫被网站限制也是毫不意外的事情了。而很多爬虫作者对此毫无自觉。当你发现网站限制你爬取内容,这已经是人家在明确发出“非请勿入”的信号了,而你还要换UA,换IP,换代理,死皮赖脸一定要爬进去,这种行为硬闯私宅又有什么分别?

看到有一些文章总结爬虫和反爬虫的各种策略,通过IP和行为判断已经是小儿科,还有各种匪夷所思的方法,包括添加奇特的HTML元素、用颜色和透明度遮盖、CSS变换、甚至webfont还要随机变换内容,不一而足。围观群众大多表示脑洞大开,而我看到这些东西的时候,心里是悲凉的。能写出网站的人,能写出爬虫的人,都已经算是这个社会上非常聪明的人了。而这些聪明人耗费的无数精力,不是用在如何让这个社会变得更好,而是彼此之间玩这些猫捉老鼠的把戏,这值得吗?爬虫越来越疯狂,反爬手段也越来越变态,这是我们希望看到的网络世界吗?写反爬代码也是需要耗费大量时间和成本的,站长们之所以宁愿花额外的成本去做这件事,只能说明爬虫的肆虐已经让他们忍无可忍了,但是这些成本又是谁来买单呢?爬虫制造者们知道身后有余忘缩手,眼前无路想回头的道理吗?

我不知道。对于我自己,我准备不再回答任何关于爬虫的问题。知乎上邀请我的那几位朋友,如果你们会来看我的博客的话,那么对不起了,这篇文章就是我的回答。