常見的反爬蟲urllib技術(shù)分享
爬蟲和反爬的對抗一直在進(jìn)行著…為了幫助更好的進(jìn)行爬蟲行為以及反爬,今天就來介紹一下網(wǎng)頁開發(fā)者常用的反爬手段。
通過robots.txt來限制爬蟲:
爬蟲都遵守著一個(gè)協(xié)議:robots.txt
robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的ASCII編碼的文本文件,它通常告訴網(wǎng)絡(luò)搜索引擎的漫游器(又稱網(wǎng)絡(luò)蜘蛛),此網(wǎng)站中的哪些內(nèi)容是不應(yīng)被搜索引擎的漫游器獲取的,哪些是可以被漫游器獲取的。因?yàn)橐恍┫到y(tǒng)中的URL是大小寫敏感的,所以robots.txt的文件名應(yīng)統(tǒng)一為小寫。
robots.txt應(yīng)放置于網(wǎng)站的根目錄下。
如果想單獨(dú)定義搜索引擎的漫游器訪問子目錄時(shí)的行為,那么可以將自定的設(shè)置合并到根目錄下的robots.txt,或者使用robots元數(shù)據(jù)(Metadata,又稱元數(shù)據(jù))。
robots.txt協(xié)議并不是一個(gè)規(guī)范,而只是約定俗成的,所以并不能保證網(wǎng)站的隱私。
注意robots.txt是用字符串比較來確定是否獲取URL,所以目錄末尾有與沒有斜杠“/”表示的是不同的URL。
robots.txt允許使用類似”Disallow: *.gif”這樣的通配符[1][2]。
解決方法:
這實(shí)際上只是一個(gè)”君子協(xié)議“,遵守與否,都在于爬蟲的編寫者。
通過User-Agent來控制訪問:
無論是瀏覽器還是爬蟲程序,在向服務(wù)器發(fā)起網(wǎng)絡(luò)請求的時(shí)候,都會發(fā)過去一個(gè)頭文件:headers 這里面的大多數(shù)的字段都是瀏覽器向服務(wù)器”表明身份“用的
對于爬蟲程序來說,最需要注意的字段就是:User-Agent
很多網(wǎng)站都會建立 user-agent白名單,只有屬于正常范圍的user-agent才能夠正常訪問。
解決方法:
在發(fā)送請求時(shí)使用該網(wǎng)站user-agent白名單的的UA
可以使用python的第三方模塊fake_useragent 隨機(jī)生成UA,需手動安裝
>>> from fake_useragent import FakeUserAgent >>> ua = FakeUserAgent() >>> ua.random 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1866.237 Safari/537.36'
驗(yàn)證碼:
最為經(jīng)典的反爬蟲策略當(dāng)屬“驗(yàn)證碼”了。因?yàn)轵?yàn)證碼是圖片,用戶登錄時(shí)只需輸入一次便可登錄成功,而我們程序抓取數(shù)據(jù)過程中,需要不斷的登
錄,比如我們需要抓取1000個(gè)用戶的個(gè)人信息,則需要填1000次驗(yàn)證碼,而手動輸入驗(yàn)證碼是不現(xiàn)實(shí)的,所以驗(yàn)證碼的出現(xiàn)曾經(jīng)難倒了很多網(wǎng)絡(luò)爬蟲工程師。
解決方法:
- 分析網(wǎng)站驗(yàn)證碼機(jī)制,從網(wǎng)站后臺或者前端獲取驗(yàn)證碼(文本形式),該方法只適用于少量網(wǎng)站,因?yàn)橐话泸?yàn)證碼我們很難拿到。
- 利用圖像識別技術(shù),識別驗(yàn)證碼文本(例如最近比較火的深度學(xué)習(xí)Tensorflow等)。
- 往往一些網(wǎng)站不只有pc端,還有手機(jī)端網(wǎng)站,很有可能手機(jī)端是不包含驗(yàn)證碼的。所以不妨試試手機(jī)端網(wǎng)站,也許會有意外收獲
IP限制:
另外一種麻煩的反爬蟲策略當(dāng)屬封ip和封賬號了。本人初期曾經(jīng)用一臺機(jī)器抓取拉鉤,導(dǎo)致短時(shí)間內(nèi)賬號被封,IP被封,所以遇到類似問題一定要多加小心。
解決方法:
- 最簡單的解決辦法:限制程序抓取頻率,每隔幾秒登錄一次(如果對抓取數(shù)量沒有要求,則可以采用這種方法,如果想抓取大量數(shù)據(jù),還不得抓取到猴年馬月?。?/li>
- 既然封賬號封IP,那我就用多個(gè)賬號、多臺機(jī)器抓取唄,既解決了反爬蟲問題,也相當(dāng)于做了分流處理,降低單臺機(jī)器帶寬壓力。
- 事實(shí)證明,有些網(wǎng)站即使我們采用了1)2)方法,還是會被封,這種情況下我們只能去抓取代理IP了,可以寫一個(gè)專門的爬蟲程序用來抓取代理,用這些代理去抓取我們想要的數(shù)據(jù)。到此為止,基本上封賬號、封IP的問題就可以解決了。
cookie:
通過cookie限制抓取信息,比如我們模擬登陸之后,想拿到登陸之后某頁面信息,千萬不要以為模擬登陸之后就所有頁面都可以抓了,有時(shí)候還需要請求一些中間頁面拿到特定cookie,然后才可以抓到我們需要的頁面。
解決方法:
通過瀏覽器的F12查看器,觀察具體整個(gè)過程都請求了哪些URL(主要包括HTML、JS、XHR),挨個(gè)試,試到成功為止。
JS渲染:
采用JS渲染頁面。什么意思呢,就是返回的頁面并不是直接請求得到,而是有一部分由JS操作DOM得到,所以那部分?jǐn)?shù)據(jù)我們也拿不到咯。
解決方法:
- 可以使用Phantomjs模擬瀏覽器請求返回渲染完JS的頁面
- 通過抓包抓取JS渲染的數(shù)據(jù)(不推薦)
以上就是常見的反爬蟲urllib技術(shù)分享的詳細(xì)內(nèi)容,更多關(guān)于反爬蟲urllib技術(shù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Web網(wǎng)絡(luò)安全分析Base64注入攻擊原理詳解
這篇文章主要為大家介紹了Web網(wǎng)絡(luò)安全分析Base64注入攻擊原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11Web網(wǎng)絡(luò)安全解析cookie注入攻擊原理
這篇文章主要為大家介紹了Web網(wǎng)絡(luò)安全分析cookie注入攻擊原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11web網(wǎng)絡(luò)安全分析反射型XSS攻擊原理
這篇文章主要為大家介紹了web網(wǎng)絡(luò)安全分析反射型XSS攻擊原理詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11系統(tǒng)安全之加密與解密的應(yīng)用技巧與使用方法
系統(tǒng)安全之加密與解密的應(yīng)用技巧與使用方法...2007-08-08網(wǎng)絡(luò)安全流量分析工具蟻劍詳細(xì)介紹
蟻劍(AntSword)是一款開源的跨平臺WebShell管理工具,它主要面向于合法授權(quán)的滲透測試安全人員以及進(jìn)行常規(guī)操作的網(wǎng)站管理員,蟻劍推崇模塊化的開發(fā)思想,遵循開源,就要開得漂亮的原則,致力于為不同層次的人群提供最簡單易懂、方便直接的代碼展示及其修改說明2022-09-09