爬蟲(chóng)與反爬蟲(chóng),是一個(gè)很不陽(yáng)光的行業(yè)。
這里說(shuō)的不陽(yáng)光,有兩個(gè)含義。
第一是,這個(gè)行業(yè)是隱藏在地下的,一般很少被曝光出來(lái)。很多公司對(duì)外都不會(huì)宣稱(chēng)自己有爬蟲(chóng)團(tuán)隊(duì),甚至隱瞞自己有反爬蟲(chóng)團(tuán)隊(duì)的事實(shí)。這可能是出于公司戰(zhàn)略角度來(lái)看的,與技術(shù)無(wú)關(guān)。
第二是,這個(gè)行業(yè)并不是一個(gè)很積極向上的行業(yè)。很多人在這個(gè)行業(yè)摸爬滾打了多年,積攢了大量的經(jīng)驗(yàn),但是悲哀的發(fā)現(xiàn),這些經(jīng)驗(yàn)很難兌換成閃光的簡(jiǎn)歷。面試的時(shí)候,因?yàn)殡p方爬蟲(chóng)理念或者反爬蟲(chóng)理念不同,也很可能互不認(rèn)可,影響自己的求職之路。本來(lái)程序員就有“文人相輕”的傾向,何況理念真的大不同。
然而這就是程序員的宿命。不管這個(gè)行業(yè)有多么的不陽(yáng)光,依然無(wú)法阻擋大量的人進(jìn)入這個(gè)行業(yè),因?yàn)橛泄镜男枨蟆?/p>
那么,公司到底有什么樣的需求,導(dǎo)致了我們真的需要爬蟲(chóng)/反爬蟲(chóng)呢?
反爬蟲(chóng)很好理解,有了爬蟲(chóng)我們自然要反爬蟲(chóng)。對(duì)于程序員來(lái)說(shuō),哪怕僅僅是出于“我就是要證明我技術(shù)比你好”的目的,也會(huì)去做。對(duì)于公司來(lái)說(shuō),意義更加重大,最少,也能降低服務(wù)器負(fù)載,光憑這一點(diǎn),反爬蟲(chóng)就有充足的生存價(jià)值。
那么爬蟲(chóng)呢?
最早的爬蟲(chóng)起源于搜索引擎。搜索引擎是善意的爬蟲(chóng),可以檢索你的一切信息,并提供給其他用戶(hù)訪(fǎng)問(wèn)。為此他們還專(zhuān)門(mén)定義了robots.txt文件,作為君子協(xié)定,這是一個(gè)雙贏(yíng)的局面。
然而事情很快被一些人破壞了。爬蟲(chóng)很快就變的不再“君子”了。
后來(lái)有了“大數(shù)據(jù)”。無(wú)數(shù)的媒體鼓吹大數(shù)據(jù)是未來(lái)的趨勢(shì),吸引了一批又一批的炮灰去創(chuàng)辦大數(shù)據(jù)公司。這些人手頭根本沒(méi)有大數(shù)據(jù),他們的數(shù)據(jù)只要用一個(gè)U盤(pán)就可以裝的下,怎么好意思叫大數(shù)據(jù)呢?這么點(diǎn)數(shù)據(jù)根本忽悠不了投資者。于是他們開(kāi)始寫(xiě)爬蟲(chóng),拼命地爬取各個(gè)公司的數(shù)據(jù)。很快他們的數(shù)據(jù),就無(wú)法用一個(gè)U盤(pán)裝下了。這個(gè)時(shí)候終于可以休息休息,然后出去吹噓融資啦。
然而可悲的是,大容量U盤(pán)不斷地在發(fā)布。他們總是在拼命地追趕存儲(chǔ)增加的速度。L
以上是爬蟲(chóng)與反爬蟲(chóng)的歷史。
一、爬蟲(chóng)反爬蟲(chóng)運(yùn)行現(xiàn)狀
電子商務(wù)行業(yè)的爬蟲(chóng)與反爬蟲(chóng)更有趣一些,最初的爬蟲(chóng)需求來(lái)源于比價(jià)。
這是某些電商網(wǎng)站的核心業(yè)務(wù)。大家如果買(mǎi)商品的時(shí)候,是一個(gè)價(jià)格敏感型用戶(hù)的話(huà),很可能用過(guò)網(wǎng)上的比價(jià)功能(真心很好用啊)。毫無(wú)懸念,他們會(huì)使用爬蟲(chóng)技術(shù)來(lái)爬取所有相關(guān)電商的價(jià)格。他們的爬蟲(chóng)還是比較溫柔的,對(duì)大家的服務(wù)器不會(huì)造成太大的壓力。
然而,這并不意味著大家喜歡被他爬取。畢竟這對(duì)其他電商是不利的。于是需要通過(guò)技術(shù)手段來(lái)做反爬蟲(chóng)。
按照技術(shù)人員的想法,對(duì)方用技術(shù)懟過(guò)來(lái),我們就要用技術(shù)懟回去,不能慫啊。這個(gè)想法是很好的,但是實(shí)際應(yīng)用起來(lái)根本不是這么回事。
誠(chéng)然,技術(shù)是很重要的,但是實(shí)際操作上,更重要的是套路。誰(shuí)的套路更深,誰(shuí)就能玩弄對(duì)方于鼓掌之中。誰(shuí)的套路不行,有再好的技術(shù),也只能被耍的團(tuán)團(tuán)轉(zhuǎn)。這個(gè)雖然有點(diǎn)傷技術(shù)人員的自尊,然而,我們也不是第一天被傷自尊了。大家應(yīng)該早就習(xí)慣了吧。
1、真實(shí)世界的爬蟲(chóng)比例
大家應(yīng)該聽(tīng)過(guò)一句話(huà)吧,大概意思是說(shuō),整個(gè)互聯(lián)網(wǎng)上大概有50%以上的流量其實(shí)是爬蟲(chóng)
。第一次聽(tīng)這句話(huà)的時(shí)候,我還不是很相信,我覺(jué)得這個(gè)說(shuō)法實(shí)在是太夸張了。怎么可能爬蟲(chóng)比人還多呢? 爬蟲(chóng)畢竟只是個(gè)輔助而已。
現(xiàn)在做了這么久的反爬蟲(chóng),我依然覺(jué)得這句話(huà)太夸張了。50%?你在逗我?就這么少的量?
舉個(gè)例子,某公司,某個(gè)頁(yè)面的接口,每分鐘訪(fǎng)問(wèn)量是1.2萬(wàn)左右。這里面有多少是正常用戶(hù)呢?
50%?60%?還是?
正確答案是:500以下。
也就是說(shuō),一個(gè)單獨(dú)的頁(yè)面,12000的訪(fǎng)問(wèn)量里,有500是正常用戶(hù),其余是爬蟲(chóng)。
注意,統(tǒng)計(jì)爬蟲(chóng)的時(shí)候,考慮到你不可能識(shí)別出所有的爬蟲(chóng),因此,這500個(gè)用戶(hù)里面,其實(shí)還隱藏著一些爬蟲(chóng)。那么爬蟲(chóng)率大概是:
(12000-500)/12000=95.8%
這個(gè)數(shù)字你猜到了嗎?
這么大的爬蟲(chóng)量,這么少的用戶(hù)量,大家到底是在干什么?是什么原因?qū)е铝嗣髅魇前偃思?jí)別的生意,卻需要萬(wàn)級(jí)別的爬蟲(chóng)來(lái)做輔助? 95%以上,19保1?
答案可能會(huì)相當(dāng)令人噴飯。這些爬蟲(chóng)大部分是由于決策失誤導(dǎo)致的。