来我公司写爬虫吗?会坐牢的那种!(一)

144
提问者
2023-03-15 15:52 悬赏 0财富值 阅读 685回答 1

场景:“你交代一下,总共抓了多少数据,在哪些网站抓的,数据干什么用?看看够在里面呆几年。。。”警察语气凝重地对小张说。程序员小张,在一家大数据信用企业公司担任爬

默认分类
登录 后发表回答
1楼 · 2023-03-15 16:04.采纳回答

场景:

“你交代一下,总共抓了多少数据,在哪些网站抓的,数据干什么用?看看够在里面呆几年。。。”警察语气凝重地对小张说。

程序员小张,在一家大数据信用企业公司担任爬虫工程师,曾有段子:爬虫学得好,监狱进得早!


引言:

当然上面举例仅是一个段子,在互联网公司,爬虫工程师一抓一大把,由于对数据需求的存在,互联网界承认爬虫的存在,你爬虫写得好,我反爬写得更好,所谓魔高一尺,道高一丈,这是一个博弈的过程。


站在辩证的角度,爬虫有恶意的,起着消极的作用;也有善意的,能给你带来利益的。所以不能以偏概全,要站在一定高度,透过现象看到本质,抓住第一性原理。


小鸽子同学通过三个问题深度反思来了解爬虫的来龙去脉,以供更多人学习。

(一)什么是爬虫,为什么要用爬虫?

(二)担任爬虫工程师真的触犯法律吗?

(三)针对爬虫常见的技术难点如何解决?




(一)什么是爬虫,为什么要用爬虫?

1)什么是爬虫

简单来讲,爬虫就是一个探测机器,它的基本操作就是模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只虫子在一幢楼里不知疲倦地爬来爬去。

你可以简单地想象:每个爬虫都是你的“分身”。就像孙悟空拔了一撮汗毛,吹出一堆猴子一样。

你每天使用的百度,其实就是利用了这种爬虫技术:每天放出无数爬虫到各个网站,把他们的信息抓回来,然后化好妆排着小队等你来检索;比如,各大ota的机票信息,从各个航空公司官网上爬取数据,整合国内国际机票价格,等你来检索比价,选择自己最满意的航班;再比如,抢票软件,就相当于撒出去无数个分身,每一个分身都帮助你不断刷新12306网站的火车余票。一旦发现有票,就马上拍下来,然后对你喊:土豪快来付款。


2)爬虫也分善恶

像百度这样的搜索引擎爬虫,每隔几天对全网的网页扫一遍,供大家查阅,各个被扫的网站大都很开心。这种就被定义为“善意爬虫”。但是,像抢票软件这样的爬虫,对着12306每秒恨不得撸几万次。铁总并不觉得很开心。这种就被定义为“恶意爬虫”。(注:抢票的你觉得开心没用,被扫描的网站觉得不开心,会增加服务器压力,它就是恶意的。)




这张图里显示的,就是各行各业被爬取的比例,每一个 {MOD}块背后,都是一条真实而强大的利益链条。

接下来,小鸽子给你科普下爬虫为什么存在的背后利益关系。

排名第一的是出行,出行行业中爬虫的占比最高(20.87%)。在出行模块中,有89%的流量都是冲着12306去的。这不意外,全中国买火车票的独此一家。还记得当年12306上线王珞丹和白百合的“史上最坑图片验证码”么?




这些东西不是为了故意刁难老实卖票的人,而恰恰是为了阻止爬虫的点击,刚才说了,爬虫只会简单的机械点击,他不认识白百合,那么面对这么刁难的验证码,抢票软件是如何识别的呢?


有一种东西叫做“打码平台”,可以百度了解下。

打码平台雇佣了很多叔叔阿姨,他们在电脑屏幕前不做别的事情,专门帮人识别验证码,那边抢票软件遇到了验证码,系统会自动把这些验证码推送到叔叔阿姨面前,他们手工选好哪个是白百合哪个是王珞丹,然后再把结果回传过去。总共耗时不过几秒钟。当然,这样的打码平台还有记忆功能,如果叔叔阿姨已经标记了这张图是“电饭煲”,那么下次这张图在出现的时候,系统就直接判断它是“电饭煲”。时间久了,12306系统里的图库就被标记完了,机器自己都能认识,不需要叔叔阿姨了。

这是利益链条之一,打码平台是个第三方平台,典型的比如:若快,抢票软件为了获取12306的火车票数据,会接入若快,识别一张验证码按照0.2元计算给若快,那些注册了若快账号的叔叔阿姨,会接受到推送过来的验证码,若快按照0.1元结算给叔叔阿姨,这已然形成了一条巨大的利益链条。当然若快是根据叔叔阿姨识别的正确率,速度,体量等几个方面,来选择推送,有些叔叔阿姨做得好的,一天入账600没问题。

也许你会问,抢票软件怎么赚钱呢,这里面变现的方式太多了,其中之一,作为买票者,可以掏钱预订某时段的火车票,一旦发现有票,抢票软件立马抢到,除了收你的预订费,还会附加保险等,或者直达没有,可以联程等。


你可能会问:为什么12306这么抠呢?它大方地让爬虫随意爬会死吗?答:会死。你知道每年过年之前,12306被点成什么样了吗?公开数据是这么说的:“最高峰时1天内页面浏览量达813.4亿次,1小时最高点击量59.3亿次,平均每秒164.8万次。”这还是加上验证码防护之后的数据,可想而知被拦截在外面的爬虫还有多少。这也是为什么每逢春节,你去12306上抢票,第一秒看到的还是有票,第二秒就没票了。这也是为什么铁总会邀请阿里做技术顾问的原因。

同样和铁总一样惨烈的难兄难弟,就是航空。国内四大航空,国东南海,均有被爬取的烦恼,当然最惨的是国际航空亚航。




很多人可能都没做过亚洲航空,这是一家马来西亚的廉价航空公司,航线基本都是从中国各地飞往东南亚的旅游胜地,飞机上连矿泉水都得自费买,是穷屌丝首选。

为什么爬虫这么青睐亚航呢,因为它便宜,确切的说,因为它经常放出便宜的票。本来亚航的初衷只是随机放出一些便宜的票来吸引游客,但这里面黄牛党是有利可图的。

技术黄牛党利用爬虫,不断刷新亚航的票务接口,一旦出现便宜的票,不管三七二十一先拍下来。亚航有规定,你拍下来半小时(具体时间记不清了)不付款就自动回到票池,继续卖。但黄牛党在爬虫脚本里写好了精确的时间,到了半小时,一毫秒都不多,他又把票拍下来,如此循环。直到有人从黄牛这里定了这个票,黄牛党就接着利用程序,在亚航系统里放弃这张票,然后0.0001秒之后,就帮你用你的名字预订了这张票。

“我是中间商,我就要赚差价!”这波操作,堪称完美。

当然有些航司也愿意让你去爬取,特别是那些不知名的小航司,本来网站流量不大,知名度不高,经过你的爬虫程序,反而可以提高他的影响力,这些都需要辩证对待。

小鸽子同学曾经也爬取过国内国际各大航司的票价数据,以及值机数据,如果ota和航司关系好的话,可以直接拿到航司接口,要么就是爬取官网数据,渠道丰富多彩,包括公众号,小程序,app,pc官网,以及web页面。

任何有利可图的角角落落,都有可能存在爬虫的影子。


总结:

爬虫是趋利的,它们永远会向有利益的地方爬行。而爬虫觉得有利益的地方,往往是我们不忍提及的隐痛。有人说技术有罪,有人说技术无罪。不管有罪无罪,我们需要合理善用爬虫。抱怨这个世界没用,唯有用双手去行动,合理善用技术手段,创造美好世界才是正道。


注:本主题共三讲,本篇只做第一讲,后续敬请期待。


我是鸽子,一名互联网的从业者,现任阿里巴巴集团,新零售技术事业群,技术专家,如果你也有意愿想来阿里闯一下的话,不妨私信我,甩个简历过来,我们共同学习,共同进步。邮箱:chenge.wcg@alibaba-inc.com微信号:wangchengewcg

今天最好的表现,是明天最低的要求。

欢迎关注公众号:架构漫谈

博主是一名非科班出身的互联网技术从业者。爱学习爱分享,立志践行终身学习者。此公号主要分享管理&技术&成长&认知&产品&相关干货。关注不迷路。