爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹了爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的準(zhǔn)格爾網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

                                                           爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

爬蟲(chóng)是什么呢,簡(jiǎn)單而片面的說(shuō),爬蟲(chóng)就是由計(jì)算機(jī)自動(dòng)與服務(wù)器交互獲取數(shù)據(jù)的工具。爬蟲(chóng)的最基本就是get一個(gè)網(wǎng)頁(yè)的源代碼數(shù)據(jù),如果更深入一些,就會(huì)出現(xiàn)和網(wǎng)頁(yè)進(jìn)行POST交互,獲取服務(wù)器接收POST請(qǐng)求后返回的數(shù)據(jù)。一句話,爬蟲(chóng)用來(lái)自動(dòng)獲取源數(shù)據(jù),至于更多的數(shù)據(jù)處理等等是后續(xù)的工作,這篇文章主要想談?wù)勁老x(chóng)獲取數(shù)據(jù)的這一部分。爬蟲(chóng)請(qǐng)注意網(wǎng)站的Robot.txt文件,不要讓爬蟲(chóng)違法,也不要讓爬蟲(chóng)對(duì)網(wǎng)站造成傷害。

 反爬及反反爬概念的不恰當(dāng)舉例

  基于很多原因(如服務(wù)器資源,保護(hù)數(shù)據(jù)等),很多網(wǎng)站是限制了爬蟲(chóng)效果的。

  考慮一下,由人來(lái)充當(dāng)爬蟲(chóng)的角色,我們?cè)趺传@取網(wǎng)頁(yè)源代碼?最常用的當(dāng)然是右鍵源代碼。

  網(wǎng)站屏蔽了右鍵,怎么辦?

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

  拿出我們做爬蟲(chóng)中最有用的東西 F12(歡迎討論)

  同時(shí)按下F12就可以打開(kāi)了(滑稽)

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

  源代碼出來(lái)了!!

  在把人當(dāng)作爬蟲(chóng)的情況下,屏蔽右鍵就是反爬取策略,F(xiàn)12就是反反爬取的方式。

 講講正式的反爬取策略

  事實(shí)上,在寫(xiě)爬蟲(chóng)的過(guò)程中一定出現(xiàn)過(guò)沒(méi)有返回?cái)?shù)據(jù)的情況,這種時(shí)候也許是服務(wù)器限制了UA頭(user-agent),這就是一種很基本的反爬取,只要發(fā)送請(qǐng)求的時(shí)候加上UA頭就可以了…是不是很簡(jiǎn)單?

  其實(shí)一股腦把需要不需要的Request Headers都加上也是一個(gè)簡(jiǎn)單粗暴的辦法……

  有沒(méi)有發(fā)現(xiàn)網(wǎng)站的驗(yàn)證碼也是一個(gè)反爬取策略呢?為了讓網(wǎng)站的用戶(hù)能是真人,驗(yàn)證碼真是做了很大的貢獻(xiàn)。隨驗(yàn)證碼而來(lái)的,驗(yàn)證碼識(shí)別出現(xiàn)了。

  說(shuō)到這,不知道是先出現(xiàn)了驗(yàn)證碼識(shí)別還是圖片識(shí)別呢?

  簡(jiǎn)單的驗(yàn)證碼現(xiàn)在識(shí)別起來(lái)是非常簡(jiǎn)單的,網(wǎng)上有太多教程,包括稍微進(jìn)階一下的去噪,二值,分割,重組等概念。可是現(xiàn)在網(wǎng)站人機(jī)識(shí)別已經(jīng)越發(fā)的恐怖了起來(lái),比如這種:

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

  簡(jiǎn)單講述一下去噪二值的概念

  將一個(gè)驗(yàn)證碼

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

變成

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

就是二值,也就是將圖片本身變成只有兩個(gè)色調(diào),例子很簡(jiǎn)單,通過(guò)python PIL庫(kù)里的

  Image.convert("1")

  就能實(shí)現(xiàn),但如果圖片變得更為復(fù)雜,還是要多思考一下,比如

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

如果直接用簡(jiǎn)單方式的話 就會(huì)變成

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

思考一些這種驗(yàn)證碼應(yīng)該怎么識(shí)別?這種時(shí)候 去噪 就派上了用處,根據(jù)驗(yàn)證碼本身的特征,可以計(jì)算驗(yàn)證碼的底色和字體之外的RGB值等,將這些值變成一個(gè)顏色,將字體留出。示例代碼如下,換色即可

  for x in range(0,image.size[0]):
  for y in range(0,image.size[1]):
  # print arr2[x][y]
  if arr[x][y].tolist()==底色:
  arr[x][y]=0
  elif arr[x][y].tolist()[0] in range(200,256) and arr[x][y].tolist()[1] in range(200,256) and arr[x][y].tolist()[2] in range(200,256):
  arr[x][y]=0
  elif arr[x][y].tolist()==[0,0,0]:
  arr[x][y]=0
  else:
  arr[x][y]=255

  arr是由numpy得到的,根據(jù)圖片RGB值得出的矩陣,讀者可以自己嘗試完善代碼,親自實(shí)驗(yàn)一下。

  細(xì)致的處理之后圖片可以變成

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

識(shí)別率還是很高的。

  在驗(yàn)證碼的發(fā)展中,還算清晰的數(shù)字字母,簡(jiǎn)單的加減乘除,網(wǎng)上有輪子可以用,有些難的數(shù)字字母漢字,也可以自己造輪子(比如上面),但更多的東西,已經(jīng)足夠?qū)懸粋€(gè)人工智能了……(有一種工作就是識(shí)別驗(yàn)證碼…)

  再加一個(gè)小提示:有的網(wǎng)站PC端有驗(yàn)證碼,而手機(jī)端沒(méi)有…

  下一個(gè)話題!

  反爬取策略中比較常見(jiàn)的還有一種封IP的策略,通常是短時(shí)間內(nèi)過(guò)多的訪問(wèn)就會(huì)被封禁,這個(gè)很簡(jiǎn)單,限制訪問(wèn)頻率或添加IP代理池就OK了,當(dāng)然,分布式也可以…

  IP代理池->左轉(zhuǎn)Google右轉(zhuǎn)baidu,有很多代理網(wǎng)站,雖然免費(fèi)中能用的不多 但畢竟可以。

  還有一種也可以算作反爬蟲(chóng)策略的就是異步數(shù)據(jù),隨著對(duì)爬蟲(chóng)的逐漸深入(明明是網(wǎng)站的更新?lián)Q代!),異步加載是一定會(huì)遇見(jiàn)的問(wèn)題,解決方式依然是F12。以不愿透露姓名的網(wǎng)易云音樂(lè)網(wǎng)站為例,右鍵打開(kāi)源代碼后,嘗試搜索一下評(píng)論

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

  數(shù)據(jù)呢?!這就是JS和Ajax興起之后異步加載的特點(diǎn)。但是打開(kāi)F12,切換到NetWork選項(xiàng)卡,刷新一下頁(yè)面,仔細(xì)尋找,沒(méi)有秘密。

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

  哦,對(duì)了 如果你在聽(tīng)歌的話,點(diǎn)進(jìn)去還能下載呢…

爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析

  僅為對(duì)網(wǎng)站結(jié)構(gòu)的科普,請(qǐng)自覺(jué)抵制盜版,保護(hù)版權(quán),保護(hù)原創(chuàng)者利益。

  如果說(shuō)這個(gè)網(wǎng)站限制的你死死的,怎么辦?我們還有最后一計(jì),一個(gè)強(qiáng)無(wú)敵的組合:selenium + PhantomJs

  這一對(duì)組合非常強(qiáng)力,可以完美模擬瀏覽器行為,具體的用法自行百度,并不推薦這種辦法,很笨重,此處僅作為科普。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

本文題目:爬蟲(chóng)及繞過(guò)網(wǎng)站反爬取機(jī)制的案例分析-創(chuàng)新互聯(lián)
標(biāo)題URL:http://muchs.cn/article38/cshopp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站策劃移動(dòng)網(wǎng)站建設(shè)、面包屑導(dǎo)航、做網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)