近日,北京连续遭遇强降雨,人员出行困难。
我和哥哥坐在床边的窗边喝茶,他望着窗外的雾霾,回忆着伤心的往事。
每年总有那么几天,弟弟会心急如焚,腰膝酸软,大汗淋漓,因为他又要准备抢火车票回家了。
姚戈家在距离北京几千公里外的湖南,他是家中独子,每年按时买火车票到家是他的“义务”。
这两年他的救命稻草是一款名为“智能火车票”的抢票软件。
趁着打折的时候买了会员,据说会员有特权,哪怕只能抢一张票,也会优先抢。(至少耀哥是这样安慰自己的。)
从技术角度来说,姚哥的救命稻草并不是抢票软件,而是抢票软件背后那些无数被称为“爬虫”的东西。
说到这,就不得不向大家介绍今天的新朋友:爬虫。
等等,图片不对,应该是这样的爬虫:
爬虫是一种检测机器,它的基本操作是模拟人类的行为,访问各种网站、点击按钮、检查数据或者背诵它看到的信息,就像一只虫子在建筑物里不知疲倦地爬行一样。
你可以简单想象每个爬虫都是你的“头像”,就像孙悟空拔一把头发,吹出一堆猴子一样。
你每天使用的百度,实际上就利用了这种爬虫技术:它每天向各个网站释放无数的爬虫,检索他们的信息,然后化上淡妆排队等着你去搜索。
抢票软件就像是铺开了无数个克隆体,每一个都帮你不断刷新12306网站上的火车票剩余数量,一旦你发现有票,就会立刻抢购一空,然后对你喊:快来付钱吧,有钱人。
就在上周末,黑客朋友余峰神秘地给我发了一份《中国爬虫图集》。这家伙主要负责腾讯云顶实验室的加班工作,和同事们开发了不少黑科技。比如搭建了一个威胁情报系统,号称能探测到世界各地的“爬虫”在干什么。
我一边吹着口哨一边打开了这本图画书,但一分钟后,我就感到恶心了。
我看到了另一个“平行世界”:
我们身边的互联网已经密布着各式各样的网络爬虫,它们或善或恶,各有各的意图,越是贴近大家的利益,爬虫就越多。
读到最后我才发现,这并不是一本《中国爬行动物图谱》,分明是一本《中国焦虑症图谱》!
今天我们要讨论的是与这些应用相关的
1.爬虫的“花式操作”
爬行动物有善恶之分。
像 Google 这样的搜索引擎爬虫每隔几天就会扫描整个网络供大家检查,大多数被扫描的网站都非常高兴。这被定义为“善意的爬虫”。
但像抢票软件这样的爬虫,每秒要上万次的去扫12306,中国铁路局感觉很不爽,这就被定义为“恶意爬虫”。(注意,你抢票时感觉开心也没用,被扫的网站不开心,就是恶意的。)
这是一张图片:
分布图
这张图是被爬虫“骚扰”过的行业占比。(注意,这张图是全球,不是全中国。)每一个色块背后,都是真实而强大的利益链条。
接下来我就给大家简单介绍一下其中的酷炫操作。
1. 旅游排名第一
其中,旅游行业爬虫占比最高(20.87%)。
在旅游爬虫中,89.02%的流量都流向12306,这并不奇怪,因为它是国内唯一一个卖火车票的爬虫。
还记得王珞丹、白百何在12306推出的“史上最刁钻图片验证码”吗?
一口陈旧血液
这些东西不是为了故意刁难老实卖票的人,而是为了防止爬虫(也就是抢票软件)的点击,刚才也说了,爬虫只会机械的点击,又不认识白百何,所以很大一部分爬虫就被挡在了门口。
你可能会说,不对啊,我还能用抢票软件抢票啊。
没错,抢票软件不是好惹的,他们这是在跟铁路总公司“对抗”。
有个东西叫“编码平台”,你可以了解一下。
编码平台雇佣了很多坐在电脑屏幕前什么都不干的叔叔阿姨,专门帮人识别验证码!
当抢票软件遇到验证码时,系统会自动将验证码发送给大叔大妈们,由他们手动选择哪个是白百何、哪个是王珞丹,再将结果发回来,整个过程只需要几秒钟。
当然这样的打码平台还具备记忆功能,如果大叔或者阿姨已经把这张图片标注为“铲子”,那么下次再出现这张图时,系统就会直接判定为“铲子”。
过了好久,12306系统里的图片全部都标记好了,机器自己就能识别了,叔叔阿姨们就可以坐在一旁玩斗地主了。
你可能会问:12306怎么这么抠门?大方的让爬虫自由爬取,它难道会死掉吗?
答案:你会死。
你知道每年春节前的12306会发生什么事情吗?
公开数据显示:“高峰时,单日页面访问量达813.4亿次,最高一小时点击量达59.3亿次,平均每秒164.8万次。”
这是加上验证码防护之后的数据,你可以想象外面被挡了多少爬虫。
另外,这里没有讨论像我们父母这样不懂抢票的人,票被抢票软件抢走是否公平?
铁路遭到爬行车辆“入侵”已经够糟糕了,但还有一个受害者:航空。
航空公司中,受损最严重的不是国航、海航,也不是东航。
是亞航!
空中爬行动物分布比例
很多人可能没有乘坐过亚航。
这是马来西亚的一家廉价航空,航线基本都是从中国各地飞往东南亚旅游胜地,连飞机上的矿泉水都要自费购买,是穷困潦倒者度假的首选。
为什么爬虫这么青睐亚航呢?因为便宜。更确切地说,是因为它经常推出廉价机票。
本来亚航的本意只是随机推出一些廉价机票来吸引游客,但黄牛在这里有利可图。
据我了解,他们是这么玩的:
科技黄牛利用爬虫不断刷新亚航的售票界面,一旦出现便宜的机票,他们就会毫不犹豫地买下。
亚航有个规定,下订单后如果半小时内(具体时间我不记得了)没有付款,机票就会自动回到票池继续出售。
但黄牛在爬虫脚本里写了准确的时间,半个小时一分一秒都没差,就又拍了一张票,如此循环,直到有人从黄牛手里订了票,黄牛就用程序在亚航系统中把票让出去,然后0.00001秒后,就用你的名义帮你订票。
“我是中间人,我来赚差价!”这一步走的很完美。
2. 社交媒体排名第二
社交爬虫的多发区就是大家最爱看的微博。
这是一张图片:
这是爬虫经常访问的微博地址。
这里的代码其实指向的是微博的一个接口,可以用来获取某人的微博列表,微博状态,指数等。
你可以用它们来做什么有趣的事情?
想想看,如果我可以随心所欲地指挥一群机器人,打开某人的微博,然后看到某条帖子,然后疯狂地关注、点赞或者留言,这不就是僵尸粉上班的标准流程吗……
其实,僵尸粉只是爬虫的常规操作,更离谱的还来了:
1、我就是一个普通人,我的微博没人关注,我利用大量爬虫给自己圈了十万僵尸粉,一群僵尸给我的微博点赞评论,玩得很开心。
2、我去找一个游戏厂商,跟他说:我这么多粉丝,你为什么不在我这里打广告呢?我给你发一个游戏注册链接,每有一个人通过我的链接注册游戏,你就给我10美分。广告商说,好啊,那我们就做吧。
3. 我发送了注册链接,但是没有人点击。。。
4.不要慌张,我会让几十万个爬虫继续点击注册链接,自动完成注册过程。
5. 我躺在床上,数着自己挣到的一万美元。
(以上数据可能与实际并不一致,只是展示一个逻辑,具体操作也会比较复杂。)
还有更令人兴奋的事情吗?有。
你偶像不是经常在微博发红包吗,好,我带领十万僵尸粉去抢。
我靠自己的能力拿到了红包,这有什么不对?
3. 电子商务排名第三
如果你还记得的话,有几种叫做“价格比较平台”、“电子商务聚合”和“返利平台”的东西。
它们基本上都遵循相同的原则:
当你搜索商品的时候,这类聚合平台会自动把各个电商平台的商品放在你面前供你选择,包括淘宝、京东、唯品会、苏宁易购等。
这就是爬虫的工作。
他们到淘宝上,抓取所有杜蕾斯连裤袜的图片和价格,然后将其展示在自己的网站上。
原理跟Google差不多,只是展示的是商品,而不是网页。不过淘宝和京东拒绝一起比价。。。
但由于机器爬虫模拟的是人的点击,电商很难杜绝此类事情发生,就连12306也不能学,因为购买流程越简单越好。
当然,电商还有另外一种对抗爬虫的方法,那就是“Web应用防火墙”,简称WAF。
稍后我们会单独讨论这个问题。
讲到这有童鞋就会有一个疑问:
那些聚合平台自己写爬虫然后帮淘宝、京东卖商品,他们的名字叫雷锋吗?
同学们醒醒,雷锋叔叔已经走了好多年了,我给大家讲一下这个聚合电商平台的盈利模式:
1、假设有几家商店都卖杜蕾斯,但是当用户在我的网站上搜索“杜蕾斯”时,我有权决定谁的商店排在前,哪家商店排在后。
谁付的钱多,我就把谁放在搜索结果的最前面。@百度,这是真的吗?(注意,各个店铺和淘宝平台并不是一致行动的。淘宝平台不希望自己的内容被聚合平台抓取,但各个店铺都乐意多一个渠道帮自己卖东西。)
2. 如果你对使用付费排名感到愧疚,你也可以使用更简单的方法——在网页上展示独立广告。访问你网站的用户可能会点击页面上的广告。每次点击你都可以赚钱。
3、你还可以充当中间人,收点代理费。我帮你店铺卖货,你就得给我点钱。你除了给我点钱,还要给来买东西的用户点钱。这个套路就是“返利网”这类平台的玩法。
4. 接下来是O2O和搜索引擎
你还记得我在上车前问过你一个问题吗?
你在大众点评上看到的信息真的是吃货们点评出来的吗?
答:大多数情况下是的,但有时则不是。
这里的影响因素依然是爬虫。
余峰告诉我,这些爬虫很可能用来做两件事:
1、大众点评毕竟是最好的点评网站,很多网站都会爬取大众点评的数据来丰富自己的信息。
2、很多刚上架评论网站的商家信誉度不高,可以用爬虫模拟留言、点赞等方式增加信誉度。
所以从理论上来说,一旦大众点评放松对这些爬虫的打击,一些黑店就会被“刷”到上面。
与此类似的是爬虫对搜索引擎的攻击。
您可能知道,搜索引擎用来决定哪个网页排名更高的主要指标之一(除了广告之外)是哪个搜索结果的点击次数最多。
在这种情况下,我会派出一个爬虫来搜索特定的“关键词”。
然后拼命的点击结果中的一个链接,这个网站的权重在搜索引擎中自然就会上升。
这个过程称为 SEO(搜索引擎优化)。
例如:
我随意搜索了一个关键词。
排名靠前的 URL 很可能是经过 SEO 处理的。
作为任何搜索引擎,它当然不允许外人篡改它的搜索结果,否则就失去了它的公共性质。他们会不时地调整算法来对抗SEO。
特别是很多赌博、色情的网站,如果搜索引擎敢收广告费把它们放到最前面,它们就濒临破产了。
因此,黄赌毒网站只能通过黑SEO强行将自己推到前面,直到被搜索引擎发现并迅速“降级”。
不过,余峰算了一下,这些色情网站如果能在首页排名上呆上一两个小时,他们赚到的钱将远远超过SEO的费用。
这也解释了为什么有时我们“众里寻他千百度”,回头一看却发现“有人脱了裤子”。
5. 最后我们来谈谈政府部门
你看这个图,都是爬虫在爬取政府信息。
第二名,北京统一预约挂号平台。
毫无疑问,票贩子将会为此承担责任。
其他的比如法院公告,信用中国,信用安徽,爬虫为什么要爬取这些信息呢?
因为有些信息只有政府部门才知道。
比如,谁被起诉了,哪个企业受到行政处罚了,哪些人被列入了失信名单,这些信息结合起来就可以形成一个企业或者个人的信用记录。
我尝试打开排名第四的《信用中国》。
在这个平台上,只需要输入身份证号或者手机号,就可以查询一个人的信用状况。
拉到最下面一看,这个网站确实来源良好。
企业若想提供外部信用数据库服务,必须先将中国信用信息下载到自己的数据库中,然后才能与其他数据进行综合计算。
这样一来,就很容易解释为什么中国信用会被爬取了。
但上表中,四川省住房和城乡建设厅却排在第七位,这是个什么鬼把戏?
据余峰猜测,这很有可能是某些公司提供的“特殊服务”:
他们汇总了四川省内各个地区的竞价信息,然后实时提醒房企:别再睡觉了,快起来竞价。
2. 爬虫战争
说了这么多,我猜你会有几个疑问。
疑问一:爬虫能做这么多事,违法吗?
这个问题确实不简单。
我打开中国第一部网络安全重磅法律《网络安全法》,仔细看了半个小时,也没发现里面有“爬取互联网上公开信息的行为视为违法”的条款。
于是我继续搜索,发现了几条司法解释:
未经授权抓取用户手机通讯录50条以上记录;未经授权抓取用户淘宝交易记录500条以上记录;未经授权读取用户运营商网站通话记录500条以上记录;未经授权读取用户公积金、社保记录5万条以上记录。以上情形均可受到法律制裁。
但仔细想想,如果我只是用机器代替人手点击鼠标、敲击键盘,接触到的都是公开信息,并不违反这些司法解释。(这只是我简单查询的结果,不代表任何官方意见)
但对于企业来说手机识别身份证软件,爬虫真的是害人不浅,有句话说“自救者天佑”,企业不得不组织“民兵”来保卫自己。
问题二:谁将赢得爬虫之战?
爬虫与被爬取的业务越来越不相容。
说白了,他们的对抗就是为了堵住对方的金融路,所以打击还是比较大的。
企业之间对抗的经典方式大概有以下几种:
图片验证码、滑块验证、IP封锁、给访客添加一些加密解密操作、消耗爬虫程序资源等等。。。
此图来自吉研验证的滑块验证技术
除了上面提到的小模块,企业还可以使用WAF(Web应用防火墙)来进行防护,WAF的作用是通过设置一些规则来拦截那些不符合规则的请求。
但是爬虫的请求和真人请求太相似了!
我认为这场战争的一个生动的比喻就是抗击癌症。
癌细胞的目标是逃避免疫细胞的识别,而免疫细胞的目标是区分哪些是好细胞,哪些是癌细胞。
我认为,这场针对爬虫的常规战争,即将升级为“智能战争”,战线将转移到云端。
比如最近听说腾讯云的WAF会用到人工智能来识别爬虫,这里就不宣传了,很多其他云安全厂商也开始推广反爬虫技术。
然而,正如人类难以根除癌症一样,企业也难以彻底消灭爬虫。但我相信这条战线会在对抗中达到微妙的平衡。这条战线的每一步前进都需要安全研究人员的辛勤努力。
3. 中国焦虑地图集
最后,钟哥帮你拿到了秘表。
这是监测到的被爬虫入侵最严重的前50个网站。(抽样数据,仅供参考)
这份名单里手机识别身份证软件,除了Google、Youtube、Ask、AirAsia,其余全部都是中国企业(或机构),从这些名字里,我感受到很多人的辛酸与焦虑。
爬虫是逐利的,它永远会爬向有利润的地方。而爬虫认为有利润的地方,往往是我们不忍提及的隐痛。
看,第一号“中铁客服中心”
像姚哥一样,在远离家乡的城市打拼,为了让家人过上更幸福的生活的流浪者不计其数,正是他们买不起春节回家的车票,才让12306登上了爬虫榜的榜首。
瞧,排名第8的《最高人民法院公告查询》
在中国,我们的信用体系仍然非常不完善,骗子和失信者仍然会欺骗新来者。这就是为什么爬虫被创造出来收集法院通知并形成私人信用记录的原因。
看看,排名第15位的“北京预约挂号统一平台”
我们的医疗改革在进行,但像你我这样的普通百姓仍然面临看病难、看病贵的问题,便宜又好的医疗资源是需要争取的,所以才出现预约难的问题,所以才有黄牛用爬虫来拼命抢预约。
毋庸置疑,这些虚假广告、排名和流量操纵的背后都有爬虫的存在。
有人说科技有罪,有人说科技无罪。
我不知道科技是否有罪,我只知道,盘踞在我们辽阔疆土上的这数十亿个爬虫,时刻在提醒我们:
抱怨不会让世界变得更美好,你想生活在什么样的世界,都要靠自己的双手去创造。