這里有三個(gè)問題:
1. 你以為你在大眾點(diǎn)評上找到的館子,真的是幾百個(gè)人給了好評,然后才出現(xiàn)在你的推薦里的嗎?
2. 你以為你在百度上搜索到的信息,真的是百度想讓你看到的嗎?(注意體會這句話的意思,不是日常黑百度)
3. 你以為在微博上看到的熱搜話題大 V 互動(dòng),真的都是真實(shí)發(fā)生的嗎?
每年總有那么幾天,幺哥會心情焦慮,坐立不安。那是因?yàn)?,他又要?zhǔn)備搶回家的火車票了。幺哥家在湖南,離北京上千公里。他是家里的獨(dú)子,每年買到火車票準(zhǔn)時(shí)出現(xiàn)在家門口是他的 " 義務(wù) "。
這兩年,他的救命稻草是一個(gè)叫做 " 智行火車票 " 的搶票軟件。他在打折的時(shí)候買了會員。據(jù)說會員是有特權(quán)的:哪怕只搶到一張票,都會優(yōu)先給他。(起碼幺哥是這樣安慰自己的。)
從技術(shù)上說,幺哥的救命稻草不是搶票軟件,而是搶票軟件背后,無數(shù)個(gè)叫做 " 爬蟲 " 的東西。
爬蟲就是一個(gè)探測機(jī)器,它的基本操作就是模擬人的行為去各個(gè)網(wǎng)站溜達(dá),點(diǎn)點(diǎn)按鈕,查查數(shù)據(jù),或者把看到的信息背回來。就像一只蟲子在一幢樓里不知疲倦地爬來爬去。
你每天使用的百度,其實(shí)就是利用了這種爬蟲技術(shù):每天放出無數(shù)爬蟲到各個(gè)網(wǎng)站,把他們的信息抓回來,然后化好淡妝排著小隊(duì)等你來檢索;搶票軟件,也相當(dāng)于撒出去無數(shù)個(gè)分身,每一個(gè)分身都幫助你不斷刷新 12306 網(wǎng)站的火車余票。
正好在上周末,一位黑客盆友御風(fēng)神秘兮兮地給我發(fā)來一份《中國爬蟲圖鑒》,這哥們在某安全實(shí)驗(yàn)室主要負(fù)責(zé)加班,順便和同事們開發(fā)了很多黑科技。比如他們搞了一個(gè)威脅情報(bào)系統(tǒng),號稱能探測到全世界的 " 爬蟲 " 都在做什么。
我打開《圖鑒》,一分鐘以后,我整個(gè)人都不好了。我看到了另一個(gè) " 平行世界 ":
就在我們身邊的網(wǎng)絡(luò)上,已經(jīng)密密麻麻爬滿了各種網(wǎng)絡(luò)爬蟲,它們善惡不同,各懷心思。而越是每個(gè)人切身利益所在的地方,就越是爬滿了爬蟲。看到最后,我發(fā)現(xiàn)這哪里是《中國爬蟲圖鑒》,這分明是一份《中國焦慮圖鑒》。
我們今天要說的,就和這些 App 有關(guān)。
一、爬蟲的 " 騷操作 "
爬蟲也分善惡。
像谷歌這樣的搜索引擎爬蟲,每隔幾天對全網(wǎng)的網(wǎng)頁掃一遍,供大家查閱,各個(gè)被掃的網(wǎng)站大都很開心。這種就被定義為 " 善意爬蟲 "。
但是,像搶票軟件這樣的爬蟲,對著 12306 每秒鐘恨不得擼幾萬次,鐵總并不覺得很開心。這種就被定義為 " 惡意爬蟲 "。(注意,搶票的你覺得開心沒用,被掃描的網(wǎng)站覺得不開心,它就是惡意的。)
給你看一張圖:
這張圖里顯示的,就是各行各業(yè)被爬 " 叨擾 " 的比例。(這張圖顯示是全世界,不是全中國。)而每一個(gè)色塊背后,都是一條真實(shí)而強(qiáng)大的利益鏈條。
1. 排名第一的是出行
出行行業(yè)中爬蟲的占比最高(20.87%)。在出行的爬蟲中,有 89.02% 的流量都是沖著 12306 去的。這不意外,全中國賣火車票的獨(dú)此一家別無分號。
你還記得當(dāng)年 12306 上線王珞丹和白百何的 " 史上最坑圖片驗(yàn)證碼 " 么?
這些東西不是為了故意難為老老實(shí)實(shí)賣票的人的,而恰恰是為了阻止爬蟲(也就是搶票軟件)的點(diǎn)擊。剛才說了,爬蟲只會簡單的機(jī)械點(diǎn)擊,它不認(rèn)識白百何,所以很大一部分爬蟲就被擋在了門外。
你可能會說,不對啊,我現(xiàn)在還可以用搶票軟件搶到票啊。
沒錯(cuò)。搶票軟件也不是吃素的。它們在和鐵總搞 " 對抗 "。有一種東西叫做 " 打碼平臺 ",你可以了解一下。
打碼平臺雇傭了很多叔叔阿姨,他們在電腦屏幕前不做別的事情,專門幫人識別驗(yàn)證碼。那邊搶票軟件遇到了驗(yàn)證碼,系統(tǒng)就會自動(dòng)把這些驗(yàn)證碼傳到叔叔阿姨面前,他們手工選好哪個(gè)是白百何哪個(gè)是王珞丹,然后再把結(jié)果傳回去??偣驳倪^程用不了幾秒時(shí)間。
這樣的打碼平臺還有記憶功能。如果叔叔阿姨已經(jīng)標(biāo)記了這張圖是 " 鍋鏟 ",那么下次這張圖片再出現(xiàn)的時(shí)候,系統(tǒng)就直接判斷它是 " 鍋鏟 "。時(shí)間一長,12306 系統(tǒng)里的圖片就被標(biāo)記完了,機(jī)器自己都能認(rèn)識。
你可能會問:為什么 12306 這么 " 摳 " 呢?它大方地讓爬蟲隨意爬會死嗎?
會死。
你知道每年過年之前,12306 被點(diǎn)成什么樣了嗎?公開數(shù)據(jù)是這么說的:" 最高峰時(shí) 1 天內(nèi)頁面瀏覽量達(dá) 813.4 億次,1 小時(shí)最高點(diǎn)擊量 59.3 億次,平均每秒 164.8 萬次。" 這還是加上驗(yàn)證碼防護(hù)之后的數(shù)據(jù)??上攵粩r截在外面的爬蟲還有多少。
鐵路被爬蟲 " 點(diǎn)雞 " 成這樣已經(jīng)夠慘了,但它還有個(gè)難兄難弟,就是航空。航空軟件里,被搞得最慘的不是國航,不是海航也不是東航,而是亞航。
航空類爬蟲的分布比例
很多人可能都沒坐過亞洲航空。這是一家馬來西亞的廉價(jià)航空公司,航線基本都是從中國各地飛往東南亞的旅游勝地,飛機(jī)上連礦泉水都得自費(fèi)買,是屌絲度假之首選。
為什么爬蟲這么青睞亞航呢?因?yàn)樗阋?。確切地說,因?yàn)樗?jīng)常放出便宜的票。本來,亞航的初衷只是隨機(jī)放出一些便宜的票來吸引游客,但這里面黃牛黨是有利可圖的。
據(jù)我所知,他們是這樣玩的:
技術(shù)宅黃牛黨們利用爬蟲,不斷刷新亞航的票務(wù)接口,一旦出現(xiàn)便宜的票,不管三七二十一先拍下來再說。
亞航有規(guī)定,你拍下來半小時(shí)(具體時(shí)間記不清了)不付款票就自動(dòng)回到票池,繼續(xù)賣。但是黃牛黨們在爬蟲腳本里寫好了精確的時(shí)間,到了半小時(shí),一毫秒都不多,他又把票拍下來,如此循環(huán)。直到有人從黃牛黨這里定了這個(gè)票,黃牛黨就接著利用程序,在亞航系統(tǒng)里放棄這張票,然后 0.00001 秒之后,就幫你用你的名字預(yù)定了這張票。
2. 排名第二的是社交
社交的爬蟲重災(zāi)區(qū),就是你們喜聞樂見的微博。
給你看張圖:
爬蟲經(jīng)常光顧的微博地址
這里的代碼其實(shí)指向了微博的一個(gè)接口。它可以用來獲取某個(gè)人的微博列表、微博的狀態(tài)、索引等等。
獲得這些,能搞出什么騷操作呢?
你想想看,如果我能隨心所欲地指揮一幫機(jī)器人,打開某人的微博,然后刷到某一條,然后瘋狂關(guān)注、點(diǎn)贊或者留言,這不就是標(biāo)準(zhǔn)的僵尸粉工作的流程么 ......
其實(shí),僵尸粉都只是爬蟲的常規(guī)操作,更騷的來了:
1)我是一個(gè)路人甲,我的微博沒人關(guān)注,我用大量的爬蟲,給自己做了十萬人的僵尸粉,一群僵尸在我的微博下面點(diǎn)贊評論;
2)我去找一個(gè)游戲廠商,讓他在我這投廣告吧。我發(fā)一條游戲的注冊鏈接,每有一個(gè)人通過我的鏈接注冊了游戲,游戲廠商就給我一毛錢;
3)十萬爬蟲繼續(xù)前赴后繼地點(diǎn)擊注冊鏈接,然后自動(dòng)去完成注冊動(dòng)作。
(以上數(shù)據(jù)不一定和現(xiàn)實(shí)吻合,只是展現(xiàn)一個(gè)邏輯。具體操作也會更復(fù)雜。)
同樣的,十萬僵尸粉去搶你家愛豆在微博上發(fā)的紅包,都是一樣的道理。
3. 排名第三的是電商
你回憶一下,有幾種東西叫做 " 比價(jià)平臺 "" 聚合電商 " 和 " 返利平臺 "。他們大體都是一個(gè)原理:
你搜索一樣商品,這類聚合平臺就會自動(dòng)把各個(gè)電商的商品都放在你面前供你選擇。有淘寶、京東,還有唯品會蘇寧易購。
這就是爬蟲的功勞。它們?nèi)ヌ詫毶希巡煌W(wǎng)站的產(chǎn)品的圖片和價(jià)格統(tǒng)統(tǒng)扒下來,然后在自己這里展示。
這個(gè)原理和谷歌差不多。只不過他們展示的不是網(wǎng)頁而是商品。但是被放在一起比價(jià),淘寶是拒絕的,京東也是拒絕的啊 ......
然而,由于機(jī)器爬蟲模擬的是人的點(diǎn)擊,電商很難阻止這類事情發(fā)生。他們甚至都不能向 12306 學(xué)習(xí)。你想想看,如果你每點(diǎn)開一個(gè)商品詳情,淘寶都讓你先分辨一次白百何和王珞丹,你肯定沒心情剁手了。
當(dāng)然,電商對抗爬蟲有另外的方法,那就是 "web 應(yīng)用防火墻 ",簡稱 WAF。這個(gè)我們后面再單獨(dú)說。
說到這,有人會有個(gè)疑問:那些聚合平臺,自己寫爬蟲,然后幫助淘寶京東賣貨,他們的名字叫雷鋒么?
醒醒啊同學(xué),這里隨便給你說一下這種聚合電商平臺的盈利模式:
1)假設(shè)幾家店鋪都賣杜蕾斯,但是用戶在我這里搜索 " 杜蕾斯 " 的時(shí)候,我是有權(quán)利決定誰的店鋪在前面誰在后面。誰給的錢多,我就讓誰在搜索的前面。(注意,每個(gè)店鋪和淘寶平臺可不是一致行動(dòng)人。淘寶平臺不希望自己的內(nèi)容被聚合平臺抓取,但每個(gè)店鋪可是很樂意多一個(gè)渠道幫他們賣貨的。)
2)如果你覺得搞競價(jià)排名良心會痛,也可以用更簡單的方式——在網(wǎng)頁上展示獨(dú)立的廣告。訪問你網(wǎng)站的用戶,看到頁面上的廣告,也有可能會點(diǎn)擊。每點(diǎn)擊一次,你就賺一次錢。
3)你還可以作為中間商,收點(diǎn)中介費(fèi)。你幫店家賣貨,店家會進(jìn)行返利。這種套路,就是 " 返利網(wǎng) " 這類平臺的玩法。
4. 接下來是 O2O 和搜索引擎
還記得開頭我問的幾個(gè)問題:你在大眾點(diǎn)評上看到的信息,真是吃貨們點(diǎn)評的嗎?
答:大部分時(shí)候是,但有時(shí)候不是。這里面的影響因素還是爬蟲。
御風(fēng)告訴我,這些爬蟲很可能被用來做兩件事:
1)大眾點(diǎn)評是點(diǎn)評網(wǎng)站,內(nèi)容比較全面,很多網(wǎng)站都會爬取大眾點(diǎn)評的數(shù)據(jù),用來豐富自己的信息。
2)很多剛上點(diǎn)評的商戶,信譽(yù)值不高,可以用爬蟲來模擬留言、點(diǎn)贊,刷高自己的信譽(yù)值。
所以,理論上講一旦大眾點(diǎn)評對這些爬蟲對抗出現(xiàn)松懈,就會有一些并不怎么樣的店鋪被 " 刷 " 到頂部。
與之相似的,是爬蟲針對搜索引擎的進(jìn)攻。
你可能了解,搜索引擎決定哪個(gè)網(wǎng)頁排名靠前,(除了廣告以外)主要一個(gè)指標(biāo)就是看哪個(gè)搜索結(jié)果被人點(diǎn)擊的次數(shù)更多。
既然這樣,那么我就派出爬蟲,搜索某個(gè)特定的 " 關(guān)鍵詞 ",然后在結(jié)果里拼命地點(diǎn)擊某個(gè)鏈接,那么這個(gè)網(wǎng)站在搜索引擎的權(quán)重里自然就會上升。這個(gè)過程就叫做 SEO(搜索引擎優(yōu)化)。
舉個(gè)例子:我隨意搜索一個(gè)關(guān)鍵詞。
它排在前面的網(wǎng)址,有可能就是經(jīng)過 SEO 的。作為任何一個(gè)搜索引擎,都肯定不允許外人對于自己的搜索結(jié)果動(dòng)手動(dòng)腳,否則就會喪失公立性。它們會通過不定期調(diào)整算法來對抗 SEO。
尤其是很多賭博、黃色網(wǎng)站,搜索引擎如果敢收廣告費(fèi)讓他們排到前面,那就離倒閉不遠(yuǎn)了。所以黃賭毒網(wǎng)站只能利用黑色 SEO,強(qiáng)行把自己刷到前面。直到被搜索引擎發(fā)現(xiàn),趕緊對它們 " 降權(quán) " 處理。不過御風(fēng)算了算,這些黃色網(wǎng)站如果能把自己刷到前幾位一兩個(gè)小時(shí),賺來的錢就遠(yuǎn)遠(yuǎn)超過 SEO 的費(fèi)用。
5. 最后是政府部門網(wǎng)站
你看這張圖,全是爬蟲針對政府信息的爬取。
第二名,北京市預(yù)約掛號統(tǒng)一平臺。這個(gè)鍋,板上釘釘要號販子來背。
其他的,例如法院公告、信用中國、信用安徽,為什么爬蟲要爬這些信息呢?因?yàn)橛行┬畔ⅲ侵挥姓块T才掌握的。
比如,誰被告過,哪家公司曾經(jīng)被行政處罰,哪個(gè)人曾經(jīng)進(jìn)入了失信名單。這些信息綜合起來,可以用來做一個(gè)公司或者個(gè)人的信譽(yù)記錄。
我試著打開了一下排名第四位的 " 信用中國 "。
在這個(gè)平臺上,你只要輸入一個(gè)身份證號或者手機(jī)號,就可以查詢到一個(gè)人的信用情況。而這個(gè)網(wǎng)站正是屬于政府機(jī)構(gòu)的。
如果一家公司要對外做信譽(yù)庫的服務(wù),它必須先把信用中國的信息下載到自己的庫里,然后才能和其他數(shù)據(jù)進(jìn)行綜合運(yùn)算。如此,信用中國被爬,也就很容易解釋了。
剛才那張表格里,排名第七的是四川住建廳。根據(jù)御風(fēng)的推測,這很可能是某些公司提供的一項(xiàng) " 特殊服務(wù) ":他們把四川省各個(gè)地區(qū)的招標(biāo)情況匯總起來,然后實(shí)時(shí)提醒那些房地產(chǎn)公司 " 別睡了,起來投標(biāo)了 "。
二、爬蟲戰(zhàn)爭
說了這么多,我猜你會有幾個(gè)疑問。
1. 爬蟲搞出這么多姿勢,它究竟是不是違法呢?
我打開中國網(wǎng)安第一大法《網(wǎng)絡(luò)安全法》仔細(xì)看了半小時(shí),在里面沒有發(fā)現(xiàn) " 爬取網(wǎng)絡(luò)公開信息被認(rèn)定為違法 " 的條款。
繼續(xù)搜索,我又發(fā)現(xiàn)了幾條司法解釋:
未經(jīng)授權(quán)爬取用戶手機(jī)通訊錄超過 50 條記錄;未經(jīng)授權(quán)抓取用戶淘寶交易記錄超過 500 條;未經(jīng)授權(quán)讀取用戶運(yùn)營商網(wǎng)站通話記錄超過 500 條;未經(jīng)授權(quán)讀取用戶公積金社保記錄的超過 50000 條的。以上這些情況可以入刑。
但是仔細(xì)看看,如果我只是用機(jī)器代替了人的手點(diǎn)擊鼠標(biāo)敲擊鍵盤,接觸的都是公開信息,并不觸犯這些司法解釋。(這只是我簡單查詢后的結(jié)果,不代表任何官方意見)
但是,對企業(yè)來說,爬蟲卻著實(shí)傷害了自己。有句話說:" 主救自救者。" 他們得組織 " 民兵 " 自己保衛(wèi)自己。
2. 爬蟲戰(zhàn)爭誰會贏?
爬蟲和被爬企業(yè)越來越勢不兩立。說白了,他們的對抗都是在阻擋對方的財(cái)路。所以下手都挺重。
企業(yè)經(jīng)典的對抗方式,大概有幾種:圖片驗(yàn)證碼、滑塊驗(yàn)證、封禁 IP、給訪問者增加一些加解密運(yùn)算,耗費(fèi)爬蟲的程序資源等等。
極驗(yàn)驗(yàn)證的滑塊驗(yàn)證技術(shù)
除了剛才這些小模塊,企業(yè)還可以通過 WAF(Web 應(yīng)用防火墻)來防護(hù),WAF 的功能就是通過設(shè)置一些規(guī)則,攔截掉那些不符合規(guī)則的請求。
但是,爬蟲的請求,和真人的請求太像了。
我覺得,對這種戰(zhàn)爭一個(gè)形象的比喻就是抗癌。癌細(xì)胞的目的就是拼命躲過免疫細(xì)胞的識別,而免疫細(xì)胞的目標(biāo)就是拼命分辨哪個(gè)是好細(xì)胞哪個(gè)是癌細(xì)胞。
在我看來,這場對抗爬蟲的常規(guī)戰(zhàn)眼看就要升級為 " 智能戰(zhàn) ",而且戰(zhàn)線會向云端轉(zhuǎn)移。最近一些云安全廠商,已經(jīng)在計(jì)劃通過人工智能的方法來識別爬蟲,主推反爬蟲的技術(shù)。
不過,就像人類目前難以消滅癌癥一樣,企業(yè)也難以完全消滅爬蟲。但是我相信,在對抗中這條戰(zhàn)線會達(dá)到一個(gè)精妙的平衡。這個(gè)戰(zhàn)線每向前推進(jìn)一步,都需要安全研究員付出艱辛的努力。
三、《中國焦慮圖鑒》
最后,中哥幫你搞到了一張表格。這是被監(jiān)測到的受爬蟲侵?jǐn)_最多的 Top50。(采樣數(shù)據(jù),僅供參考)
這張表里,除了 google、Youtube、ask、亞洲航空這四家企業(yè)之外,應(yīng)該全是中國企業(yè)(或機(jī)關(guān))。正是從這些名字背后,我體會到了很多人的辛酸和焦慮。
爬蟲是趨利的,它們永遠(yuǎn)會向有利益的地方爬行。而爬蟲覺得有利益的地方,往往是我們不忍提及的隱痛。
排名第 1 的是 " 中國鐵路路客戶服務(wù)中心 "。無數(shù)像幺哥一樣的游子,他們奮斗在一個(gè)遠(yuǎn)離家鄉(xiāng)的城市,為了讓家人有更幸福的生活。正是他們難以買到過年回家車票的事實(shí),才把 12306 推上了爬蟲榜的第一名。
排名第 8 的是 " 最高人民法院公告查詢 "。在中國,我們的信用體系還很不完善,騙子和老賴還可以繼續(xù)蒙騙新人。所以才催生了爬蟲收集法院公告,形成民間信用記錄的服務(wù)。
排名第 15 的是 "北京市預(yù)約掛號統(tǒng)一平臺 "。我們的醫(yī)療改革在進(jìn)行,但像你我一樣的普通人仍然看病難。又便宜又好的醫(yī)療資源需要爭奪,這才有了 " 一號難求 " 的現(xiàn)實(shí),才有了黃牛用爬蟲拼命搶號的現(xiàn)象。
自不用說那些神坑的虛假廣告,沖榜刷量,背后都有爬蟲的影子。
有人說技術(shù)有罪,有人說技術(shù)無罪。
我不知道技術(shù)是否有罪,我只知道,這些盤踞在我們廣袤版圖上數(shù)以十億計(jì)的爬蟲,無時(shí)無刻不在提醒著我們:抱怨不會讓這個(gè)世界變得更好,你想生活在一個(gè)怎樣的世界,就要用自己的雙手去創(chuàng)造它。
【來源:虎嗅APP】