?2019年9月以來粟焊,不少因為非法使用“爬蟲”技術(shù),而使公司面臨訴訟,程序猿被警察帶走的新聞?wù)痼@了IT圈的小伙伴們项棠!
我只是個寫爬蟲的悲雳,跟我有什么關(guān)系?
許多程序員都有這樣的想法香追,技術(shù)是無罪的合瓢,我只是個打工的程序員,公司干違法的業(yè)務(wù)透典,跟我沒關(guān)系晴楔。。掷匠。只能說滥崩,程序猿們真是圖樣圖森破了。
看到那么多爬蟲導致公司觸犯法律的新聞讹语,有人開玩笑說钙皮,編寫爬蟲程序,就是“面向監(jiān)獄編程”顽决。
看個案例:
抓取用戶社交數(shù)據(jù)短条,尤其是用戶隱私相關(guān)。
(圖片文字來自新浪網(wǎng))
其實才菠,“爬蟲”只是一種技術(shù)茸时,沒有那么可怕如果使用技術(shù)來做非法的事情,自然就會有警察叔叔上門了赋访。
今天老司機給大家講一下爬蟲的幾個原理可都,以及怎么安全無憂地使用爬蟲。
首先蚓耽,網(wǎng)絡(luò)爬蟲(又稱為網(wǎng)頁蜘蛛渠牲,網(wǎng)絡(luò)機器人),是一種按照一定的規(guī)則步悠,自動地抓取萬維網(wǎng)信息的程序或者腳本签杈。
其次,網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術(shù)鼎兽,大致可以分為以下幾種類型:
??通用網(wǎng)絡(luò)爬蟲(General Purpose Web Crawler)
??聚焦網(wǎng)絡(luò)爬蟲(Focused Web Crawler)
??增量式網(wǎng)絡(luò)爬蟲(Incremental Web Crawler)
??深層網(wǎng)絡(luò)爬蟲(Deep Web Crawler)
實際的網(wǎng)絡(luò)爬蟲系統(tǒng)通常是幾種爬蟲技術(shù)相結(jié)合實現(xiàn)的答姥。由于商業(yè)原因,網(wǎng)絡(luò)爬蟲的技術(shù)細節(jié)很少公布出來谚咬。
所以鹦付,可以很安全地得出結(jié)論,普通編程愛好者择卦,使用Python睁壁、JAVA自己練習代碼背苦,是無風險的。
再次潘明,網(wǎng)絡(luò)爬蟲抓取目標的描述和定義是決定網(wǎng)頁分析算法與URL搜索策略如何制定的基礎(chǔ)行剂。而網(wǎng)頁分析算法和候選URL排序算法是決定搜索引擎所提供的服務(wù)形式和爬蟲網(wǎng)頁抓取行為的關(guān)鍵所在。這兩個部分的算法又是緊密相關(guān)的钳降。
僅僅就聚焦爬蟲來說厚宰,對抓取目標的描述可分為三種:
??基于目標網(wǎng)頁特征
??基于目標數(shù)據(jù)模式
??基于領(lǐng)域概念
基于目標網(wǎng)頁特征的爬蟲,所抓取遂填、存儲并索引的對象一般為網(wǎng)站或網(wǎng)頁铲觉;
基于目標數(shù)據(jù)模式的爬蟲,針對的是網(wǎng)頁上的數(shù)據(jù)吓坚,所抓取的數(shù)據(jù)一般要符合一定的模式撵幽,或者可以轉(zhuǎn)化或映射為目標數(shù)據(jù)模式;
基于領(lǐng)域概念的爬蟲礁击,是建立目標領(lǐng)域的本體或詞典盐杂,用于從語義角度分析不同特征在某一主題中的重要程度;
然后哆窿,爬蟲算法链烈,也是核心部分。
爬蟲算法挚躯,即網(wǎng)頁的抓取策略强衡,可以分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種码荔。
深度優(yōu)先在很多情況下會導致爬蟲的陷入(trapped)問題漩勤,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。
爬蟲找到了內(nèi)容缩搅,還要進行網(wǎng)頁分析锯七。
網(wǎng)頁分析算法可以歸納為基于網(wǎng)絡(luò)拓撲、基于網(wǎng)頁內(nèi)容和基于用戶訪問行為三種類型誉己。
以上的算法,被稱為網(wǎng)絡(luò)抓取或者爬蟲爬行域蜗。
很多站點巨双,尤其是搜索引擎,都使用爬蟲提供最新的數(shù)據(jù)霉祸,它主要用于提供它訪問過頁面的一個副本筑累,然后,搜索引擎就可以對得到的頁面進行索引丝蹭,以提供快速的訪問慢宗。
同時爬蟲也可以在web上用來自動執(zhí)行一些任務(wù),例如檢查鏈接,確認html代碼镜沽;也可以用來抓取網(wǎng)頁上某種特定類型信息敏晤。
看到這里,相信小伙伴們已經(jīng)明白了“爬蟲技術(shù)”本身就是一把雙刃劍了吧缅茉?
介紹完原理嘴脾,老司機告訴大家怎么安全使用爬蟲技術(shù),避免“面向監(jiān)獄編程”蔬墩。
道路千萬條,安全第一條,爬蟲不規(guī)范,碼農(nóng)兩行淚译打。
安全使用爬蟲技術(shù)的規(guī)范很多,各位小伙伴至少要記住一條:平衡禮貌策略拇颅!
爬蟲相比于人奏司,可以有更快的檢索速度和更深的層次,所以樟插,它們可能使一個站點癱瘓韵洋。
不需要說一個單獨的爬蟲一秒鐘要執(zhí)行多條請求,下載大的文件岸夯。一個服務(wù)器也會很難響應(yīng)多線程爬蟲的請求麻献。
爬蟲的使用對很多工作都是很有用的,但是對一般的網(wǎng)站猜扮,濫用爬蟲是有危害的勉吻,包括但不僅限于:
網(wǎng)絡(luò)資源:在很長一段時間,爬蟲使用相當?shù)膸捀叨炔⑿械毓ぷ鳎?/p>
服務(wù)器超載:尤其是對給定服務(wù)器的訪問過高時旅赢;
質(zhì)量糟糕的爬蟲齿桃,可能導致服務(wù)器或者路由器癱瘓,或者會嘗試下載自己無法處理的頁面煮盼。
對這些問題的一個部分解決方法是漫游器排除協(xié)議(Robots exclusion protocol)短纵,也被稱為robots.txt議定書。
robots協(xié)議也叫robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的ASCII編碼的文本文件僵控,它通常告訴網(wǎng)絡(luò)爬蟲:此網(wǎng)站中的哪些內(nèi)容是不應(yīng)被搜索引擎的漫游器獲取的香到,哪些是可以被漫游器獲取的。
參考robots.txt去爬取數(shù)據(jù)报破,再設(shè)置一下間歇時間悠就,不會有人在意的。
比如大名鼎鼎的淘寶充易,就有robots.txt梗脾。可以訪問一下:
https://www.taobao.com/robots.txt
作為資深I(lǐng)T從業(yè)人員盹靴,本老司機給大家推薦幾個開源的炸茧、安全的瑞妇、放心使用的、爬蟲項目供大家學習:
? DataparkSearch是一個在GNU GPL許可下發(fā)布的爬蟲搜索引擎梭冠;
? ICDL Crawler是一個用C++編寫辕狰,跨平臺的網(wǎng)絡(luò)爬蟲。它僅僅使用空閑的CPU資源妈嘹,在ICDL標準上抓取整個站點柳琢;
? JSpider是一個在GPL許可下發(fā)行的,JAVA編寫的润脸,高度可配置的柬脸,可定制的網(wǎng)絡(luò)爬蟲引擎;
??YaCy是一個基于P2P網(wǎng)絡(luò)的免費的分布式搜索引擎(在GPL許可下發(fā)行)
最后毙驯,必須要說的是倒堕,作為一個技術(shù)人員,大家需要有些基本的判斷和法律意識爆价。
“不能因為老板要求什么就不加思考去干什么垦巴!”,尤其是涉及到用戶隱私等數(shù)據(jù)铭段。
作 者:Testfan Arthur
出 處:微信公眾號:自動化軟件測試平臺
版權(quán)說明:歡迎轉(zhuǎn)載骤宣,但必須注明出處,并在文章頁面明顯位置給出文章鏈接