1. 程式人生 > >爬蟲與反爬蟲的較量-圖片反爬

爬蟲與反爬蟲的較量-圖片反爬

前言 補充 感覺 成功 轉行 限制 壁紙 coo 網站

前言

在去年6月吧,剛轉行做爬蟲的時候,經常拿圖片網還有小說網練手,無意中發現一個壁紙網站叫做娟娟壁紙網,有好多高清壁紙(這不是廣告,哈哈)

當時是寫了全站爬取的代碼。以為自己大工告成的時候,結果剛運行,就發現爬出來的圖片不對。

技術分享圖片

每張圖片都是這樣,我以為遇到了IP限制,於是使用代理,結果仍然是失敗。

難道是請求頭做了限制?好,那我全部帶上。結果依舊失敗。

當時也是忙於找工作,也沒靜下心來仔細想,今天回過頭來繼續盤它。

雖然最後巧妙的用了get請求爬取成功,但是還是沒搞明白原圖反爬的原因。

下面來看一看究竟是怎麽回事。

分析網站

技術分享圖片

附上鏈接:http://www.jj20.com/bz/zrfg/ssrh/5565.html

技術分享圖片

圖片url在網站html代碼中,我爬取的也是這張圖片。

復制圖片鏈接到瀏覽器訪問。

技術分享圖片

正常,瀏覽器能加載,爬蟲為什麽就不能下載。刷新圖片,結果圖片沒了,出現了和爬蟲一樣的結果。

技術分享圖片

回到網站,刷新,結果,圖片沒了,加載不出來。

技術分享圖片

假設是緩存導致的,清理一下瀏覽器的cookie和緩存。再次刷新,圖片又出來了。

爬蟲直接請求鏈接會失敗,具體的反爬策略,我們也不清楚。默認為圖片只能在網站上加載,單獨訪問會失敗。

從網站分析圖片,網站裏可能有下載鏈接。

技術分享圖片

生成壁紙,根據分辨率來的,之前網站爬的應該都是原圖,點進去看一下。

技術分享圖片

刷新,還是這張圖,可以重復訪問。

http://cj.jj20.com/d/cj0.php?p=/up/allimg/611/031213123016/130312123016-0.jpg&w=1536&h=864

這是一個get請求,提交了三個參數p(圖片鏈接),w(寬),h(高),生成一張1536乘864的圖片。

單張圖片爬取

(寫一個demo,測試了一下)

import  requests
url = "http://cj.jj20.com/d/cj0.php?p=/up/allimg/611/031213123016/130312123016-0.jpg&w=1536&h=864"
res = requests.get(url).content #
以二進制字節碼保存 with open(1.jpg,wb) as f: f.write(res)

技術分享圖片

(單張圖片爬取成功)寬和高都是可以自己改的,看自己桌面分辨率自己改。

本文主要介紹爬取思路,全站爬取代碼後續再補充。

對於上面的網站原圖反爬,我至今不是特別明白是什麽原因,希望了解這方面的大牛,可以留言告知,我會盡快回復。

溫馨提示

  • 如果您對本文有疑問,請在評論部分留言,我會在最短時間回復。
  • 如果本文幫助了您,也請評論關註,作為對我的一份鼓勵。
  • 如果您感覺我寫的有問題,也請批評指正,我會盡量修改。
  • 本文為原創,轉載請註明出處。
  • 本文所有代碼僅供學習參考,在爬取的同時考慮對方的服務器承受能力,適可而止。

爬蟲與反爬蟲的較量-圖片反爬