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

“放下你手里的代碼”:爬蟲技術(shù)的善與惡、罪與罰

新聞
今天,我們就打開爬蟲這個(gè)“工具箱”,把涉及到的技術(shù)盲區(qū)放到燈光下,讓大家可以清楚地看下。下面,本文就從這個(gè)角度來聊聊爬蟲這個(gè)熟悉而又陌生的技術(shù)。

[[280640]]

“放下你手里的代碼,小心被抓。”

最近程序員圈子不乏這樣的戲謔調(diào)侃。

原因是最近發(fā)生的多起涉及爬蟲技術(shù)的公司被司法部門調(diào)查。近日,51信用卡被查,更是將暴力催收背后非法使用爬蟲技術(shù)爬取個(gè)人隱私數(shù)據(jù)的丑行,暴露在陽光之下。

一時(shí)間,“爬蟲”成為眾矢之的,一些公司緊急下架了爬蟲相關(guān)的招聘信息,給大數(shù)據(jù)風(fēng)控、人工智能從業(yè)者帶來些許恐慌,頭發(fā)又多落了幾根。

實(shí)際上,大部分人都聽說過爬蟲,認(rèn)為爬蟲就是到人家網(wǎng)站上去爬東西、偷數(shù)據(jù),有些人甚至認(rèn)為只要有爬蟲,什么數(shù)據(jù)都可以搞到。

今天,我們就打開爬蟲這個(gè)“工具箱”,把涉及到的技術(shù)盲區(qū)放到燈光下,讓大家可以清楚地看下。下面,本文就從這個(gè)角度來聊聊爬蟲這個(gè)熟悉而又陌生的技術(shù)。

爬蟲的技術(shù)原理

搜索引擎收集網(wǎng)上信息的主要手段就是網(wǎng)絡(luò)爬蟲(也叫網(wǎng)頁蜘蛛、網(wǎng)絡(luò)機(jī)器人)。它是一種“自動(dòng)化瀏覽網(wǎng)絡(luò)”的程序,按照一定的規(guī)則,自動(dòng)抓取互聯(lián)網(wǎng)信息,比如:網(wǎng)頁、各類文檔、圖片、音頻、視頻等。搜索引擎通過索引技術(shù)組織這些信息,根據(jù)用戶的查詢,快速地提供搜索結(jié)果。

設(shè)想一下,我們平時(shí)瀏覽網(wǎng)頁的時(shí)候會(huì)怎么做?

一般情況下,首先,會(huì)用瀏覽器打開一個(gè)網(wǎng)站的主頁,在頁面上尋找感興趣的內(nèi)容,然后點(diǎn)擊本站或其它網(wǎng)站在該網(wǎng)頁上的鏈接,跳轉(zhuǎn)到新的網(wǎng)頁,閱讀內(nèi)容,如此循環(huán)往復(fù)。如下圖所示:

 

圖中的虛線圓角矩形代表一個(gè)網(wǎng)站,每個(gè)實(shí)線矩形表示一個(gè)網(wǎng)頁??梢钥吹?,每個(gè)網(wǎng)站一般以首頁為入口,該首頁鏈接到幾個(gè)、幾萬個(gè)、甚至上千萬個(gè)的內(nèi)部網(wǎng)頁。同時(shí),這些網(wǎng)頁往往又鏈接了很多外部網(wǎng)站。例如,用戶從蘇寧金融的網(wǎng)頁為起點(diǎn),瀏覽發(fā)現(xiàn)了PP視頻的鏈接,點(diǎn)擊后跳轉(zhuǎn)到了PP視頻主頁,作為體育愛好者,在體育頻道中找到了相關(guān)的新浪微博的內(nèi)容,再次點(diǎn)擊后又來到微博的頁面繼續(xù)閱讀,從而形成了一條路徑。如果把所有的可能路徑呈現(xiàn)出來,就會(huì)看到一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)。

網(wǎng)絡(luò)爬蟲模擬了人們?yōu)g覽網(wǎng)頁的行為,只是用程序代替了人類的操作,在廣度和深度上遍歷網(wǎng)頁。如果把互聯(lián)網(wǎng)上的網(wǎng)頁或網(wǎng)站理解為一個(gè)個(gè)節(jié)點(diǎn),大量的網(wǎng)頁或網(wǎng)站通過超鏈接形成網(wǎng)狀結(jié)構(gòu)。爬蟲通過遍歷網(wǎng)頁上的鏈接,從一個(gè)節(jié)點(diǎn)跳轉(zhuǎn)到下一個(gè)節(jié)點(diǎn),就像是在一張巨大的網(wǎng)上爬行,但是比人類的速度更快,跳轉(zhuǎn)的節(jié)點(diǎn)更全面,所以被形象地稱為網(wǎng)絡(luò)爬蟲或網(wǎng)絡(luò)蜘蛛。

爬蟲的發(fā)展歷史

網(wǎng)絡(luò)爬蟲最早的用途是服務(wù)于搜索引擎的數(shù)據(jù)收集,而現(xiàn)代意義上的搜索引擎的鼻祖是1990年由加拿大麥吉爾大學(xué)(University of McGill)學(xué)生Alan Emtage發(fā)明的的Archie。

人們使用FTP服務(wù)器共享交流資源,大量的文件散布在各個(gè)FTP主機(jī)上,查詢起來非常不方便。因此,他開發(fā)了一個(gè)可以按照文件名查找文件的系統(tǒng),能定期搜集并分析FTP服務(wù)器上的文件名信息,自動(dòng)索引這些文件。工作原理與現(xiàn)在的搜索引擎已經(jīng)非常接近,依靠腳本程序自動(dòng)搜索分散在各處FTP主機(jī)中的文件,然后對有關(guān)信息進(jìn)行索引,供使用者以一定的表達(dá)式查詢。

世界上第一個(gè)網(wǎng)絡(luò)爬蟲“互聯(lián)網(wǎng)漫游者”(“www wanderer”)是由麻省理工學(xué)院(MIT)的學(xué)生馬休·格雷(Matthew Gray)在 1993 年寫成。剛開始,它只用來統(tǒng)計(jì)互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,后來則發(fā)展為能夠通過它檢索網(wǎng)站域名。

隨著互聯(lián)網(wǎng)的迅速發(fā)展,使得檢索所有新出現(xiàn)的網(wǎng)頁變得越來越困難,因此,在“互聯(lián)網(wǎng)漫游者”基礎(chǔ)上,一些編程者將傳統(tǒng)的“蜘蛛”程序工作原理作了些改進(jìn)。其設(shè)想是,既然所有網(wǎng)頁都可能有連向其他網(wǎng)站的鏈接,那么從跟蹤一個(gè)網(wǎng)站的鏈接開始,就有可能檢索整個(gè)互聯(lián)網(wǎng)。

其后,無數(shù)的搜索引擎促使了爬蟲越寫越復(fù)雜,并逐漸向多策略、負(fù)載均衡及大規(guī)模增量抓取等方向發(fā)展。爬蟲的工作成果是搜索引擎能夠遍歷鏈接的網(wǎng)頁,甚至被刪除的網(wǎng)頁也可以通過“網(wǎng)頁快照”的功能訪問。

網(wǎng)絡(luò)爬蟲的禮儀 禮儀一:robots.txt文件

每個(gè)行業(yè)都有其Code of Conduct,成為行為準(zhǔn)則或行為規(guī)范。比如,你是某個(gè)協(xié)會(huì)中的成員,那就必須遵守這個(gè)協(xié)會(huì)的行為準(zhǔn)則,破壞了行為準(zhǔn)則是要被踢出去的。

最簡單的例子,你加入的很多微信群,一般群主都會(huì)要求不可以私自發(fā)廣告,如果未經(jīng)允許發(fā)了廣告,會(huì)被立刻踢出群,但是發(fā)紅包就沒事,這就是行為準(zhǔn)則。

爬蟲也有行為準(zhǔn)則。早在1994年,搜索引擎技術(shù)剛剛興起。那時(shí)的初創(chuàng)搜索引擎公司,比如AltaVista和DogPile,通過爬蟲技術(shù)來采集整個(gè)互聯(lián)網(wǎng)的資源,與Yahoo這樣的資源分類網(wǎng)站激烈競爭。隨著互聯(lián)網(wǎng)搜索規(guī)模的增長,爬蟲收集信息的能力快速進(jìn)化,網(wǎng)站開始考慮對于搜索引擎爬取信息做出限制,于是robots.txt應(yīng)運(yùn)而生,成為爬蟲界的“君子協(xié)定”。

robots.txt文件是業(yè)內(nèi)慣用做法,不是強(qiáng)制性的約束。robots.txt的形式如下:

 

在上面這個(gè)robots.txt例子中,所有的爬蟲都被禁止訪問網(wǎng)站的任意內(nèi)容。但是Google的爬蟲機(jī)器人,可以訪問除了private位置的所有內(nèi)容。如果一個(gè)網(wǎng)站上沒有robots.txt,是被認(rèn)為默許爬蟲爬取所有信息。如果robots.txt做了訪問的限制,但是爬蟲卻沒有遵守,那就不是技術(shù)實(shí)現(xiàn)這么簡單的事情了。

禮儀二:爬取吞吐量的控制

曾經(jīng)出現(xiàn)假冒Google搜索引擎的爬蟲去對網(wǎng)站進(jìn)行DDoS攻擊,讓網(wǎng)站癱瘓的事情。近年來,惡意爬蟲造成的DDoS攻擊行為有增無減,給大數(shù)據(jù)行業(yè)蒙上了爬蟲的陰影。因?yàn)槠浔澈蟮膼阂夤粽?,往往具備更為?fù)雜和專業(yè)的技術(shù),能繞過各種防御機(jī)制,讓防范這樣攻擊行為難上加難。

禮儀三:做一個(gè)優(yōu)雅的爬蟲

優(yōu)雅的爬蟲背后,一定站著一個(gè)文明人或者一個(gè)文明團(tuán)隊(duì)。他們會(huì)考慮自己寫的爬蟲程序是否符合robots.txt協(xié)議,是否會(huì)對被爬網(wǎng)站的性能造成影響,如何才能不侵害知識(shí)產(chǎn)權(quán)所有者的權(quán)益以及非常重要的個(gè)人隱私數(shù)據(jù)等問題。

出于能力的差別,并不是每個(gè)爬蟲團(tuán)隊(duì)都能考慮到這些問題。2018年,歐盟出臺(tái)的《General Data Protection Regulation》(通用數(shù)據(jù)保護(hù)條例)中對數(shù)據(jù)的保護(hù)做出了嚴(yán)格的說明。2019年5月28日,國家互聯(lián)網(wǎng)信息辦公室發(fā)布的《數(shù)據(jù)安全管理辦法》(征求意見稿)對爬蟲和個(gè)人信息安全做出了非常嚴(yán)格的規(guī)定。比如:

  • (1)第十六條 網(wǎng)絡(luò)運(yùn)營者采取自動(dòng)化手段訪問收集網(wǎng)站數(shù)據(jù),不得妨礙網(wǎng)站正常運(yùn)行;此類行為嚴(yán)重影響網(wǎng)站運(yùn)行,如自動(dòng)化訪問收集流量超過網(wǎng)站日均流量三分之一,網(wǎng)站要求停止自動(dòng)化訪問收集時(shí),應(yīng)當(dāng)停止。
  • (2)第二十七條 網(wǎng)絡(luò)運(yùn)營者向他人提供個(gè)人信息前,應(yīng)當(dāng)評估可能帶來的安全風(fēng)險(xiǎn),并征得個(gè)人信息主體同意。

其實(shí),我國2017年6月1日施行的《中華人民共和國網(wǎng)絡(luò)安全法》第四章第四十一條和四十四條就已經(jīng)對個(gè)人隱私信息數(shù)據(jù)的收集和使用做出明文規(guī)定,這也與爬蟲直接相關(guān)。

 

 

法律制度的出臺(tái),給技術(shù)的邊界做出了明確的限定,技術(shù)無罪并不能作為技術(shù)實(shí)施者為自己開脫的理由。爬蟲在實(shí)現(xiàn)自己需求的同時(shí),必須做到嚴(yán)格遵守行為準(zhǔn)則和法律條例。

各類反爬蟲技術(shù)介紹

為了保護(hù)自己合法權(quán)益不被惡意侵害,不少網(wǎng)站和應(yīng)用APP應(yīng)用了大量的反爬技術(shù)。這使得爬蟲技術(shù)中又衍生出反反爬蟲技術(shù),比如各類滑動(dòng)拼圖、文字點(diǎn)選、圖標(biāo)點(diǎn)選等驗(yàn)證碼的破解,它們相互促進(jìn)、相互發(fā)展、相互傷害著。

反爬蟲的關(guān)鍵在于阻止被爬蟲批量爬取網(wǎng)站內(nèi)容,反爬蟲技術(shù)的核心在于不斷變更規(guī)則,變換各類驗(yàn)證手段。

這類技術(shù)的發(fā)展甚至讓人癡迷,比DOTA對戰(zhàn)還讓人熱血沸騰。從那晃動(dòng)如波浪的文字驗(yàn)證碼圖形的偽裝色里彷佛都能看得見程序員的頭發(fā)。

1、圖片/Flash

這是比較常見的反爬手段,將關(guān)鍵數(shù)據(jù)轉(zhuǎn)為圖片,并添加上水印,即使使用了OCR(Optical Character Recognition,文字識(shí)別)也無法識(shí)別出來,讓爬蟲端獲取了圖片也得不到信息。早期一些電商的價(jià)格標(biāo)簽中經(jīng)常見到這種方式。

2、JavaScript混淆技術(shù)

這是爬蟲程序員遇到最多的一種反爬方式,簡單來說其實(shí)就是一種障眼法,本質(zhì)上還是一種加密技術(shù)。很多網(wǎng)頁中的數(shù)據(jù)是使用JavaScript程序來動(dòng)態(tài)加載的,爬蟲在抓取這樣的網(wǎng)頁數(shù)據(jù)時(shí),需要了解網(wǎng)頁是如何加載該數(shù)據(jù)的,這個(gè)過程被稱為逆向工程。為了防止被逆向工程,就用到JavaScript混淆技術(shù),加JavaScript代碼進(jìn)行加密,讓別人看不懂。不過這種方式屬于比較簡單的反爬方式,屬于爬蟲工程師練級的初級階段。

3、驗(yàn)證碼

驗(yàn)證碼是一種區(qū)分用戶是計(jì)算機(jī)還是人的公共全自動(dòng)程序,也是我們經(jīng)常遇到的一種網(wǎng)站訪問驗(yàn)證方式,主要分為以下幾種:

(1)輸入式驗(yàn)證碼

這是最最常見的,通過用戶輸入圖片中的字母、數(shù)字、漢子等字符進(jìn)行驗(yàn)證。

 

[[280642]]

圖中CAPTCHA 的全名是(Completely Automated Public Turing test to tell Computers and Humans Apart),中文翻譯為:全自動(dòng)區(qū)分計(jì)算機(jī)與人類的圖靈測試。實(shí)現(xiàn)的方式很簡單,就是問一個(gè)電腦答不出來但人類答得出來的問題。不過,現(xiàn)在的爬蟲往往會(huì)用深度學(xué)習(xí)技術(shù)對這樣的驗(yàn)證碼進(jìn)行破解,這樣的圖靈測試已經(jīng)失效。

(2)滑塊式驗(yàn)證碼

鑒于輸入式的圖形驗(yàn)證碼的缺點(diǎn),容易被破解,而且有時(shí)候人類都識(shí)別不了。滑塊驗(yàn)證碼橫空出世,這種驗(yàn)證碼操作簡便,破解難度大,很快就流行起來了。破解滑塊驗(yàn)證碼存在兩大難點(diǎn):一是必須知道圖形缺口在哪里,也就是得知道滑塊滑到哪;二是要模仿出人類滑動(dòng)的手勢。這樣的驗(yàn)證碼增加了一定的難度,也給爬蟲界增加了很多樂趣,一時(shí)間大量破解滑塊驗(yàn)證碼的技術(shù)出現(xiàn)。

 

[[280643]]

(3)點(diǎn)擊式的圖文驗(yàn)證和圖標(biāo)選擇

圖文驗(yàn)證,是通過文字提醒用戶點(diǎn)擊圖中相同字的位置進(jìn)行驗(yàn)證。

 

[[280644]]

圖標(biāo)選擇,是給出一組圖片,按要求點(diǎn)擊其中一張或者多張。

 

[[280645]]

這兩種原理相似,只不過是一個(gè)給出文字,點(diǎn)擊圖片中的文字;一個(gè)給出圖片,點(diǎn)出符合內(nèi)容的圖片。這兩種方法的共同點(diǎn)就是體驗(yàn)差,被廣為詬病。

(4)手機(jī)驗(yàn)證碼

對于一些重要的敏感信息訪問,網(wǎng)站或APP端一般會(huì)提供填寫手機(jī)驗(yàn)證碼的要求,通過手機(jī)接受網(wǎng)站發(fā)送的驗(yàn)證碼來進(jìn)一步訪問,這種方式對于數(shù)據(jù)隱私的保護(hù)比較好。

4、賬號(hào)密碼登陸

網(wǎng)站可以通過賬號(hào)登陸來限制爬蟲的訪問權(quán)限,個(gè)人在使用很多網(wǎng)站服務(wù)的時(shí)候一般是需要進(jìn)行賬號(hào)注冊的,使用的時(shí)候需要通過賬號(hào)密碼登陸才能繼續(xù)使用服務(wù)。網(wǎng)站可以利用用戶瀏覽器的Cookie來對用戶的身份進(jìn)行識(shí)別,通過保存在用戶本地瀏覽器中加密的Cookie數(shù)據(jù)來進(jìn)行用戶訪問會(huì)話的跟蹤。這一般作為前面幾種反爬方式的補(bǔ)充。

爬蟲技術(shù)的發(fā)展方向

傳統(tǒng)網(wǎng)絡(luò)爬蟲最大的應(yīng)用場景是搜索引擎,普通的企業(yè)更多是做網(wǎng)站或應(yīng)用。后來隨著網(wǎng)絡(luò)數(shù)據(jù)分析的需要,以及互聯(lián)網(wǎng)上的輿情事件層出不窮,針對網(wǎng)絡(luò)爬蟲有了大量的需求,采集的對象主要是些新聞資訊。

近些年,由于大數(shù)據(jù)處理和數(shù)據(jù)挖掘技術(shù)的發(fā)展,數(shù)據(jù)資產(chǎn)價(jià)值的概念深入人心,爬蟲技術(shù)得到更加廣泛和深入的發(fā)展,采集對象也更豐富,高性能、并發(fā)式的技術(shù)指標(biāo)也更高。

圍繞網(wǎng)絡(luò)爬蟲合法性的討論仍然存在,情況也比較復(fù)雜。目前的趨勢下,許多法律問題還處于模糊地帶,往往取決于具體的案例影響。然而,可以肯定的是,只要有互聯(lián)網(wǎng),就會(huì)有網(wǎng)絡(luò)爬蟲。只有網(wǎng)絡(luò)爬蟲讓體量巨大的互聯(lián)網(wǎng)變得可以搜索,使爆炸式增長的互聯(lián)網(wǎng)變得更加容易訪問和獲取,在可預(yù)見的未來,互聯(lián)網(wǎng)爬蟲技術(shù)將繼續(xù)得到發(fā)展。

互聯(lián)網(wǎng)作為人類歷史最大的知識(shí)倉庫,是非結(jié)構(gòu)化或非標(biāo)準(zhǔn)化的?;ヂ?lián)網(wǎng)上聚集了大量的文本、圖片、多媒體等數(shù)據(jù),內(nèi)容雖然非常有價(jià)值,但是知識(shí)提取的難度仍然非常巨大。語義互聯(lián)網(wǎng)、知識(shí)共享等概念越來越普及,真正語義上的互聯(lián)網(wǎng)將是網(wǎng)絡(luò)爬蟲的目標(biāo)。此外,物聯(lián)網(wǎng)技術(shù)的發(fā)展,將是互聯(lián)網(wǎng)的升級形式,也將是爬蟲技術(shù)未來發(fā)展的方向。

責(zé)任編輯:未麗燕 來源: 品途商業(yè)評論
相關(guān)推薦

2019-10-30 09:40:52

代碼程序員爬蟲

2018-01-23 22:38:09

2022-11-24 10:24:32

2009-01-11 09:29:00

網(wǎng)絡(luò)鄰居故障

2022-09-14 23:06:45

2018-01-29 09:28:44

2019-04-28 14:14:48

爬蟲網(wǎng)絡(luò)特價(jià)機(jī)票

2022-09-20 07:02:20

網(wǎng)絡(luò)爬蟲反爬蟲

2019-09-19 17:02:36

2018-08-31 21:59:53

2012-09-10 10:44:30

天天記事華為

2013-05-16 09:31:43

代碼代碼編寫語言工具

2020-04-09 11:00:38

Python編程語言代碼

2013-05-17 13:22:17

iOS移動(dòng)開發(fā)代碼

2015-10-30 15:11:53

2019-06-18 10:49:41

Python技術(shù)web

2019-07-09 08:44:00

DeepfakeGAN人工智能

2023-06-26 08:06:39

重構(gòu)代碼冗余

2014-03-06 22:38:32

代碼女神女程序員技術(shù)

2018-05-30 16:55:47

阿里Java多線程
點(diǎn)贊
收藏

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