亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

常見(jiàn)的反爬蟲(chóng)urllib技術(shù)分享

 更新時(shí)間:2022年04月25日 16:20:10   作者:愛(ài)python的王三金  
這篇文章主要介紹了常見(jiàn)的反爬蟲(chóng)urllib技術(shù)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

爬蟲(chóng)和反爬的對(duì)抗一直在進(jìn)行著…為了幫助更好的進(jìn)行爬蟲(chóng)行為以及反爬,今天就來(lái)介紹一下網(wǎng)頁(yè)開(kāi)發(fā)者常用的反爬手段。

通過(guò)robots.txt來(lái)限制爬蟲(chóng):

爬蟲(chóng)都遵守著一個(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ú)定義搜索引擎的漫游器訪問(wèn)子目錄時(shí)的行為,那么可以將自定的設(shè)置合并到根目錄下的robots.txt,或者使用robots元數(shù)據(jù)(Metadata,又稱元數(shù)據(jù))。

robots.txt協(xié)議并不是一個(gè)規(guī)范,而只是約定俗成的,所以并不能保證網(wǎng)站的隱私。

注意robots.txt是用字符串比較來(lái)確定是否獲取URL,所以目錄末尾有與沒(méi)有斜杠“/”表示的是不同的URL。

robots.txt允許使用類似”Disallow: *.gif”這樣的通配符[1][2]。

解決方法:

這實(shí)際上只是一個(gè)”君子協(xié)議“,遵守與否,都在于爬蟲(chóng)的編寫者。

通過(guò)User-Agent來(lái)控制訪問(wèn):

無(wú)論是瀏覽器還是爬蟲(chóng)程序,在向服務(wù)器發(fā)起網(wǎng)絡(luò)請(qǐng)求的時(shí)候,都會(huì)發(fā)過(guò)去一個(gè)頭文件:headers 這里面的大多數(shù)的字段都是瀏覽器向服務(wù)器”表明身份“用的
 

對(duì)于爬蟲(chóng)程序來(lái)說(shuō),最需要注意的字段就是:User-Agent

很多網(wǎng)站都會(huì)建立 user-agent白名單,只有屬于正常范圍的user-agent才能夠正常訪問(wèn)。

解決方法:

在發(fā)送請(qǐng)求時(shí)使用該網(wǎng)站user-agent白名單的的UA

可以使用python的第三方模塊fake_useragent 隨機(jī)生成UA,需手動(dòng)安裝

>>> 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)典的反爬蟲(chóng)策略當(dāng)屬“驗(yàn)證碼”了。因?yàn)轵?yàn)證碼是圖片,用戶登錄時(shí)只需輸入一次便可登錄成功,而我們程序抓取數(shù)據(jù)過(guò)程中,需要不斷的登
錄,比如我們需要抓取1000個(gè)用戶的個(gè)人信息,則需要填1000次驗(yàn)證碼,而手動(dòng)輸入驗(yàn)證碼是不現(xiàn)實(shí)的,所以驗(yàn)證碼的出現(xiàn)曾經(jīng)難倒了很多網(wǎng)絡(luò)爬蟲(chóng)工程師。

解決方法:

  • 分析網(wǎng)站驗(yàn)證碼機(jī)制,從網(wǎng)站后臺(tái)或者前端獲取驗(yàn)證碼(文本形式),該方法只適用于少量網(wǎng)站,因?yàn)橐话泸?yàn)證碼我們很難拿到。
  • 利用圖像識(shí)別技術(shù),識(shí)別驗(yàn)證碼文本(例如最近比較火的深度學(xué)習(xí)Tensorflow等)。
  • 往往一些網(wǎng)站不只有pc端,還有手機(jī)端網(wǎng)站,很有可能手機(jī)端是不包含驗(yàn)證碼的。所以不妨試試手機(jī)端網(wǎng)站,也許會(huì)有意外收獲

IP限制:

另外一種麻煩的反爬蟲(chóng)策略當(dāng)屬封ip和封賬號(hào)了。本人初期曾經(jīng)用一臺(tái)機(jī)器抓取拉鉤,導(dǎo)致短時(shí)間內(nèi)賬號(hào)被封,IP被封,所以遇到類似問(wèn)題一定要多加小心。

解決方法:

  • 最簡(jiǎn)單的解決辦法:限制程序抓取頻率,每隔幾秒登錄一次(如果對(duì)抓取數(shù)量沒(méi)有要求,則可以采用這種方法,如果想抓取大量數(shù)據(jù),還不得抓取到猴年馬月?。?。
  • 既然封賬號(hào)封IP,那我就用多個(gè)賬號(hào)、多臺(tái)機(jī)器抓取唄,既解決了反爬蟲(chóng)問(wèn)題,也相當(dāng)于做了分流處理,降低單臺(tái)機(jī)器帶寬壓力。
  • 事實(shí)證明,有些網(wǎng)站即使我們采用了1)2)方法,還是會(huì)被封,這種情況下我們只能去抓取代理IP了,可以寫一個(gè)專門的爬蟲(chóng)程序用來(lái)抓取代理,用這些代理去抓取我們想要的數(shù)據(jù)。到此為止,基本上封賬號(hào)、封IP的問(wèn)題就可以解決了。

cookie:

通過(guò)cookie限制抓取信息,比如我們模擬登陸之后,想拿到登陸之后某頁(yè)面信息,千萬(wàn)不要以為模擬登陸之后就所有頁(yè)面都可以抓了,有時(shí)候還需要請(qǐng)求一些中間頁(yè)面拿到特定cookie,然后才可以抓到我們需要的頁(yè)面。
解決方法:

通過(guò)瀏覽器的F12查看器,觀察具體整個(gè)過(guò)程都請(qǐng)求了哪些URL(主要包括HTML、JS、XHR),挨個(gè)試,試到成功為止。

JS渲染:

采用JS渲染頁(yè)面。什么意思呢,就是返回的頁(yè)面并不是直接請(qǐng)求得到,而是有一部分由JS操作DOM得到,所以那部分?jǐn)?shù)據(jù)我們也拿不到咯。
解決方法:

  • 可以使用Phantomjs模擬瀏覽器請(qǐng)求返回渲染完JS的頁(yè)面
  • 通過(guò)抓包抓取JS渲染的數(shù)據(jù)(不推薦)

以上就是常見(jiàn)的反爬蟲(chóng)urllib技術(shù)分享的詳細(xì)內(nèi)容,更多關(guān)于反爬蟲(chóng)urllib技術(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論