自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

開(kāi)發(fā) 前端
爬蟲(chóng)的起源可以追溯到萬(wàn)維網(wǎng)(互聯(lián)網(wǎng))誕生之初,一開(kāi)始互聯(lián)網(wǎng)還沒(méi)有搜索。在搜索引擎沒(méi)有被開(kāi)發(fā)之前,互聯(lián)網(wǎng)只是文件傳輸協(xié)議(FTP)站點(diǎn)的集合,用戶可以在這些站點(diǎn)中導(dǎo)航以找到特定的共享文件。

爬蟲(chóng)的起源

爬蟲(chóng)的起源可以追溯到萬(wàn)維網(wǎng)(互聯(lián)網(wǎng))誕生之初,一開(kāi)始互聯(lián)網(wǎng)還沒(méi)有搜索。在搜索引擎沒(méi)有被開(kāi)發(fā)之前,互聯(lián)網(wǎng)只是文件傳輸協(xié)議(FTP)站點(diǎn)的集合,用戶可以在這些站點(diǎn)中導(dǎo)航以找到特定的共享文件。

為了查找和組合互聯(lián)網(wǎng)上可用的分布式數(shù)據(jù),人們創(chuàng)建了一個(gè)自動(dòng)化程序,稱為網(wǎng)絡(luò)爬蟲(chóng)/機(jī)器人,可以抓取互聯(lián)網(wǎng)上的所有網(wǎng)頁(yè),然后將所有頁(yè)面上的內(nèi)容復(fù)制到數(shù)據(jù)庫(kù)中制作索引。

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

爬蟲(chóng)的發(fā)展

隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)上的資源變得日益豐富但卻駁雜不堪,信息的獲取成本變得更高了。

相應(yīng)地,也日漸發(fā)展出更加智能,且適用性更強(qiáng)的爬蟲(chóng)軟件。

它們類似于蜘蛛通過(guò)輻射出去的蛛網(wǎng)來(lái)獲取信息,繼而從中捕獲到它想要的獵物,所以爬蟲(chóng)也被稱為網(wǎng)頁(yè)蜘蛛,當(dāng)然相較蛛網(wǎng)而言,爬蟲(chóng)軟件更具主動(dòng)性。另外,爬蟲(chóng)還有一些不常用的名字,像螞蟻/模擬程序/蠕蟲(chóng)。

爬蟲(chóng)的工作流程大致如下:

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

通常,爬取網(wǎng)頁(yè)數(shù)據(jù)時(shí),只需要2個(gè)步驟:

打開(kāi)網(wǎng)頁(yè)→將具體的數(shù)據(jù)從網(wǎng)頁(yè)中復(fù)制并導(dǎo)出到表格或資源庫(kù)中。

簡(jiǎn)單來(lái)說(shuō)就是,抓取和復(fù)制。

爬蟲(chóng)的君子協(xié)議

搜索引擎的爬蟲(chóng)是善意的,可以檢索你的一切信息,并提供給其他用戶訪問(wèn),為此它們還專門(mén)定義了robots.txt文件,作為君子協(xié)議。

Robots協(xié)議(爬蟲(chóng)協(xié)議)的全稱是“網(wǎng)絡(luò)爬蟲(chóng)排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol),網(wǎng)站通過(guò)Robots協(xié)議告訴搜索引擎哪些頁(yè)面可以抓取,哪些頁(yè)面不能抓取。該協(xié)議是國(guó)際互聯(lián)網(wǎng)界通行的道德規(guī)范,雖然沒(méi)有寫(xiě)入法律,但是每一個(gè)爬蟲(chóng)都應(yīng)該遵守這項(xiàng)協(xié)議。

以淘寶網(wǎng)的robots.txt為例,

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

以 Allow 項(xiàng)的值開(kāi)頭的 URL 是允許 robot 訪問(wèn)的。例如,Allow:/article 允許百度爬蟲(chóng)引擎訪問(wèn) /article.htm、/article/http://12345.com 等。

以 Disallow 項(xiàng)為開(kāi)頭的鏈接是不允許百度爬蟲(chóng)引擎訪問(wèn)的。例如,Disallow:/product/ 不允許百度爬蟲(chóng)引擎訪問(wèn) /product/http://12345.com 等。

最后一行,Disallow:/ 禁止百度爬蟲(chóng)訪問(wèn)除了 Allow 規(guī)定頁(yè)面外的其他所有頁(yè)面。

所以你是不能從百度上搜索到淘寶內(nèi)部的產(chǎn)品信息的。

君子協(xié)議雖好,然而事情很快就被一些人破壞了,于是就有了反爬蟲(chóng)。

爬蟲(chóng)與反爬蟲(chóng)

爬蟲(chóng)與反爬蟲(chóng)是“矛”與“盾”的攻守關(guān)系,有了爬蟲(chóng)自然也就有了反爬蟲(chóng)。

一些企業(yè)為了保證服務(wù)器的正常運(yùn)轉(zhuǎn),降低服務(wù)器的運(yùn)轉(zhuǎn)壓力與成本,不得不使出各種各樣的手段來(lái)阻止爬蟲(chóng)工程師毫無(wú)節(jié)制地向服務(wù)器索取資源,這種行為我們稱之為反爬蟲(chóng)。

在爬蟲(chóng)與反爬蟲(chóng)的較量上,一些反爬手段常常會(huì)讓人津津樂(lè)道,比如,文本混淆反爬蟲(chóng)、動(dòng)態(tài)渲染反爬蟲(chóng)、信息校驗(yàn)反爬蟲(chóng)、代碼混淆反爬蟲(chóng)……等等。

反爬蟲(chóng)技術(shù)是如何對(duì)爬蟲(chóng)進(jìn)行防御的,其實(shí)現(xiàn)原理是什么?以下就以信息校驗(yàn)反爬為例,請(qǐng)《鹿鼎記》的韋香主給大家做一下演示。

 

[[322647]]

假設(shè)天地會(huì)赤火堂香主派人從京城前往揚(yáng)州將一封非常重要的密函交給青木堂香主韋小寶,我們可以將這件事抽象為下圖:

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

這件事的核心是「幫派成員-甲將重要密函交給幫派成員-乙」。假設(shè)甲、乙雙方互不相識(shí)亦從未有過(guò)會(huì)面,那「幫派成員-甲」如何判斷密函交給了「幫派成員-乙」,而不是給錯(cuò)人——給了其他「幫派成員-丁」呢?

在歷史實(shí)踐中肯定吃過(guò)這樣的虧,遂天地會(huì)采用了接頭暗號(hào)這種方式來(lái)確保甲、乙雙方是同一幫派成員,這才有了:

  • 地鎮(zhèn)高崗,一派溪山千古秀;
  • 門(mén)朝大海,三河合水萬(wàn)年流。

暗號(hào)只有幫派成員才知道,且不可外泄。甲、乙雙方見(jiàn)面時(shí)由「幫派成員-甲」說(shuō)出「地鎮(zhèn)高崗,一派溪山千古秀」,「幫派成員-乙」聽(tīng)到后必須接下一句「門(mén)朝大海,三河合水萬(wàn)年流」。如果「幫派成員-乙」不知道下一句是什么,或者胡說(shuō)一氣,那么「幫派成員-甲」就可以判定他不是接頭人,而是冒充的。

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

同樣的,「幫派成員-乙」要聽(tīng)到幫派成員-甲說(shuō)出「地鎮(zhèn)高崗,一派溪山千古秀」。否則「幫派成員-甲」就是冒充的,很有可能會(huì)將假的密函交給青木堂韋小寶。

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

天地會(huì)接頭人互相傳遞消息(密函)很像是我們?cè)陂_(kāi)發(fā) WEB 應(yīng)用時(shí)的 Client 和 Server,抽象地看起來(lái)像這樣:

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

那么問(wèn)題來(lái)了,Client 和 Server 之間需不需要天地會(huì)這樣的暗號(hào)呢?

答案是需要!

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

Client 就像「幫派成員-甲」,Server 就像「幫派成員-乙」,而他們的密函很有可能會(huì)被其他「幫派成員-丁」拿走或偽造。既然天地會(huì)有接頭暗號(hào),那么 Client 和 Server 之間用什么來(lái)保障傳遞消息是第一手發(fā)出,而不是被攔截偽造的呢?

沒(méi)錯(cuò),簽名驗(yàn)證!

簽名驗(yàn)證是目前 IT 技術(shù)領(lǐng)域應(yīng)用廣泛的 API 接口數(shù)據(jù)保護(hù)方式之一,它能夠有效防止消息接收端將被篡改或偽造的消息當(dāng)作正常消息處理。

要注意的是,它的作用是防止消息接收端將被篡改或偽造的消息當(dāng)作正常消息處理,而不是防止消息接受端接收假消息,事實(shí)上接口在收到消息的那一刻無(wú)法判斷消息的真假。這一點(diǎn)非常重要,千萬(wàn)不要混淆了。

假設(shè) Client 要將「下個(gè)月 5 號(hào)刺殺鰲拜」這封重要密函交給 Server,抽象圖如下:

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

這時(shí)候如果發(fā)生冒充事件,會(huì)帶來(lái)什么影響:

 

通俗的講,網(wǎng)絡(luò)爬蟲(chóng)到底是什么?

其他「幫派成員-丁」從 Client 那里獲得消息后進(jìn)行了偽造,將刺殺鰲拜的時(shí)間從 5 號(hào)改為 6號(hào),導(dǎo)致 Server 收到的刺殺時(shí)間是 6 號(hào)。這么一來(lái),里應(yīng)外合刺殺鰲拜的事就會(huì)變成一方延遲動(dòng)手,這次謀劃已久的刺殺行動(dòng)大概率會(huì)失敗,而且會(huì)造成不小的損失。

我們使用簽名驗(yàn)證來(lái)改善這個(gè)消息傳遞和驗(yàn)證的事。這里可以簡(jiǎn)單將簽名驗(yàn)證理解為在原消息的基礎(chǔ)上進(jìn)行一定規(guī)則的運(yùn)算和加密,最終將加密結(jié)果放到消息中一并發(fā)送,消息接收者拿到消息后按照相同的規(guī)則進(jìn)行運(yùn)算和加密,將自己運(yùn)算得到的加密值和傳遞過(guò)來(lái)的加密值進(jìn)行比對(duì),如果兩值相同則代表消息沒(méi)有被攔截偽造,反之可以判定消息被攔截偽造。

簽名驗(yàn)證被廣泛應(yīng)用,例如下載操作系統(tǒng)鏡像文件時(shí)官方網(wǎng)站會(huì)提供文件的 MD5 值、阿里巴巴/騰訊/華為等企業(yè)對(duì)外開(kāi)放的接口中鑒權(quán)部分的 sign 值等。

以上反爬方法選自《Python3 反爬蟲(chóng)原理與繞過(guò)實(shí)戰(zhàn)》

寫(xiě)在最后

爬蟲(chóng)本身并未違反法律。但程序運(yùn)行過(guò)程中可能對(duì)他人經(jīng)營(yíng)網(wǎng)站造成破壞,爬取的數(shù)據(jù)有可能涉及隱私或機(jī)密,數(shù)據(jù)本身也可能產(chǎn)生法律糾紛。

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)