一起看看這幾個網站是如何反爬的 。

  • 2019 年 11 月 13 日
  • 筆記

文章來源 :公號極客猴 ,作者猴哥

閱讀文本大概需要 4 分鐘。

因為 Python 語法簡介以及強大的第三方庫,所以我們使用它來製作網路爬蟲程式。網路爬蟲的用途是進行數據採集,也就是將互聯網中的數據採集過來。

網路爬蟲的難點其實並不在於爬蟲本身。而是網站方為了避免數據被爬取,增加了各種各樣的反爬蟲措施。如果想要繼續從網站爬取數據就必須繞過這些措施。因此,網路爬蟲的難點在於反爬的攻克和處理。那麼本文主要介紹一些網站的反爬蟲措施。

妹子圖

這個網站的反爬蟲機制比較簡單。當我們使用網路請求庫下載圖片時,該網站會對檢查每個 HTTP 請求的 headers 頭部中 Referer 欄位。它判斷該欄位是否為空,如果欄位為空,那麼不會返回正常顯示的圖片,而是返回一張帶有「圖片來自妹子網,請勿盜鏈」字樣的圖片。

遇到這種機制,突破也是比較簡單。對每個 HTTP 請求,將頁面的 url 地址填充到 Referer 欄位中。

豆瓣

幾乎所有的爬蟲新手都會爬取豆瓣練練手。但是豆瓣還是保持開放的態度,反爬蟲機製做得還是很人性化。它的反爬蟲機制大概如下:

1、在沒有攜帶 cookie 的情況下,如果某個 IP 短時間高並發請求網站,該 IP 會立馬被封。當 IP 被封,登錄豆瓣網站會解封。 3、在攜帶 cookie 的情況下,某個 IP 請求網站過於頻繁。豆瓣的反爬蟲機制變為只封 cookie 不封 IP。也就說退出登錄或者換個帳號還能繼續訪問網站。

面對這麼體諒新手的網站,我們要下手不能那麼猛。我們只要在程式碼中登錄帳號,同時降低並發數,再隨機延遲等待一段時間。我們的爬蟲程式就不會被封殺了。

拉勾網

拉勾網站剛出來的時候,反爬蟲機制還沒有現在這麼嚴格。估計爬取網站的人多了起來,網站管理員為了保護伺服器增加一些手段。該網站的反爬蟲機制大概是這樣子。

1、在沒有登錄的情況下,程式只能連續訪問 3 個 Url。如果再繼續訪問,網站會將鏈接重定向,然後提示我們登錄。 2、如果在登錄情況下,連續請求部分 url 之後,我們的 IP 會被封。

針對這樣的爬蟲機制,我們只能使用 IP 代理池來突破。

汽車之家

汽車之家論壇的反爬蟲機制就比較高級。它利用前端頁面自定義字體的方式來實現反爬的技術手段。具體使用到是 CSS3 中的自定義字體(@font-face)模組,自定義字體主要是實現將自定義的 Web 字體嵌入到指定網頁中去。這就導致我們去爬取論壇帖子的口碑時,獲取到的返迴文本中每隔幾個字就出現一個亂碼符號。

每次訪問論壇頁面,其中字體是不變的,但字元編碼是變化的。因此,我們需要根據每次訪問動態解析字體文件。

具體可以先訪問需要爬取的頁面,獲取字體文件的動態訪問地址並下載字體,讀取 js 渲染後的文本內容,替換其中的自定義字體編碼為實際文本編碼,就可復原網頁為頁面所見內容了。

最後說句良心話,我們爬取別人網站的數據,要在不損害別人網站的情況下進行。所以建議大家不要在網站訪問高峰的時候爬取數據,盡量選擇在晚上進行爬取。同時設置延時操作降低並發數。

如果你覺得文章還不錯,請大家點贊分享下。你的肯定是我最大的鼓勵和支援。

往期推薦:

1. 這一定是學爬蟲的你腦中閃現過的第一道邪念!

2. 卷積神經網路(CNN)學習筆記 。

3. 基於tensorflow的手寫數字識別 。

歡迎點贊和轉發分享

Tags: