當(dāng)然了,最終,所有的反爬蟲策略都逃不脫被破解的命運(yùn)。但是這需要時(shí)間,反爬蟲需要做的就是頻繁發(fā)布,拖垮對(duì)方。如果對(duì)方兩天可以破解你的系統(tǒng),你就一天一發(fā)布,那么你就是安全的。這個(gè)系統(tǒng)甚至可以改名叫做“每天一道反爬題,輕輕松松學(xué)前端”。
4、誤傷,還是誤傷
這又回到了我們開始提到的“誤傷率”的問題了。我們知道,發(fā)布越頻繁,出問題的概率越高。那么,如何在頻繁發(fā)布的情況下,還能做到少出問題呢?
此外還有一個(gè)問題,我們寫了大量的“不可讀代碼”給對(duì)方,的確能給對(duì)方造成大量的壓力,但是,這些代碼我們自己也要維護(hù)啊。如果有一天忽然說,沒人爬我們了,你們把代碼下線掉吧。這個(gè)時(shí)候?qū)懘a的人已經(jīng)不在了,你們?cè)趺粗廊绾蜗戮€這些代碼呢?
這兩個(gè)問題我暫時(shí)不能公布我們的做法,但是大家都是聰明人,應(yīng)該都是有自己的方案的,軟件行業(yè)之所以忙的不得了,無非就是在折騰兩件事,一個(gè)是如何將代碼拆分開,一個(gè)是如何將代碼合并起來。
關(guān)于誤傷率,我只提一個(gè)小的tip:你可以只開啟反爬蟲,但是不攔截,先放著,發(fā)統(tǒng)計(jì)信息給自己,相當(dāng)于模擬演練。等統(tǒng)計(jì)的差不多了,發(fā)現(xiàn)真的開啟了也不會(huì)有什么問題,那就開啟攔截或者開啟造假。
這里就引發(fā)了一個(gè)問題,往往一個(gè)公司的各個(gè)頻道,爬取難度是不一樣的。原因就是,誤傷檢測(cè)這種東西與業(yè)務(wù)相關(guān),公司的基礎(chǔ)部門很難做出通用的。只能各個(gè)部門自己做。甚至有的部門做了有的沒做。因此引發(fā)了爬蟲界一個(gè)奇葩的通用做法:如果PC頁面爬不到, 就去H5試試。如果H5很麻煩,就去PC碰碰運(yùn)氣。
三、爬蟲反爬蟲套路現(xiàn)狀
那么一旦有發(fā)現(xiàn)對(duì)方數(shù)據(jù)造假怎么辦?
早期的時(shí)候,大家都是要抽查數(shù)據(jù),通過數(shù)據(jù)來檢測(cè)對(duì)方是否有造假。這個(gè)需要人工核對(duì),成本非常高??墒悄且呀?jīng)是洪荒時(shí)代的事情了。如果你們公司還在通過這種方式來檢測(cè),說明你們的技術(shù)還比較落伍。
之前我們的競(jìng)爭(zhēng)對(duì)手是這么干的:他們會(huì)抓取我們兩次,一次是他們解密出來key之后,用正經(jīng)方式來抓取,這次的結(jié)果定為A。一次是不帶key,直接來抓,這次的結(jié)果定為B。根據(jù)前文描述,我們可以知道,B一定是錯(cuò)誤的。那么如果A與B相等,說明自己中招了。這個(gè)時(shí)候會(huì)停掉爬蟲,重新破解。
1、不要回應(yīng)
所以之前有一篇關(guān)于爬蟲的文章,說如何破解我們的。一直有人要我回復(fù)下。我一直覺得沒什么可以回復(fù)的。
第一,反爬蟲被破解了是正常的。這個(gè)世界上有個(gè)萬能的爬蟲手段,叫“人肉爬蟲”。假設(shè)我們就是有錢,在印度開個(gè)分公司,每天雇便宜的勞動(dòng)力用鼠標(biāo)直接來點(diǎn),你能拿我怎么辦?第二,我們真正關(guān)心的是后續(xù)的這些套路。而我讀了那篇文章,發(fā)現(xiàn)只是調(diào)用了selenium并且拿到了結(jié)果,就認(rèn)為自己成功了。
我相信你讀到這里,應(yīng)該已經(jīng)明白為什么我不愿意回復(fù)了。我們最重要的是工作,而不是誰打誰的臉。大家如果經(jīng)?;旒夹g(shù)社區(qū)就會(huì)發(fā)現(xiàn),每天熱衷于打別人臉的,一般技術(shù)都不是很好。
當(dāng)然這并不代表我們技術(shù)天下第一什么的。我們每天面對(duì)大量的爬蟲,還是遇到過很多高手的。就如同武俠小說里一樣,高手一般都比較低調(diào),他們默默地拿走數(shù)據(jù),很難被發(fā)現(xiàn),而且頻率極低,不會(huì)影響我們的考評(píng)。你們應(yīng)該明白,這是智商與情商兼具的高手了。
我們還碰到拉走我們js,砍掉無用的部分直接解出key,相當(dāng)高效不拖泥帶水的爬蟲,一點(diǎn)廢請(qǐng)求都沒有(相比某些爬蟲教程,總是教你多訪問寫沒用的url免得被發(fā)現(xiàn),真的不知道高到哪里去了。這樣做除了會(huì)導(dǎo)致機(jī)器報(bào)警,導(dǎo)致對(duì)方加班封鎖以外,對(duì)你自己沒有任何好處)。
而我們能發(fā)現(xiàn)這一點(diǎn)僅僅是是因?yàn)樗驼{(diào)地寫了一篇博客,通篇只介紹技術(shù),沒有提任何沒用的東西。
這里我只是順便發(fā)了點(diǎn)小牢騷,就是希望后續(xù)不要總是有人讓我回應(yīng)一些關(guān)于爬蟲的文章。線下我認(rèn)識(shí)很多爬蟲工程師,水平真的很好,也真的很低調(diào)(不然你以為我是怎么知道如何對(duì)付爬蟲的。。。),大家都是一起混的,不會(huì)產(chǎn)生“一定要互相打臉”的情緒。
順便打個(gè)小廣告,如果你對(duì)這個(gè)行業(yè)有興趣,可以考慮聯(lián)系HR加入我們哦。反爬蟲工程師可以加入攜程,爬蟲工程師可以加入去哪兒。