反爬蟲機制與應對方法

終極反爬蟲:讓爬蟲爬假數據或者假頁面(和真的結構上幾乎沒有區別),讓爬蟲開發者意識不到自己的錯誤。最後爬蟲開發者被離職~~

1. 請求頭驗證。

瀏覽器訪問網站的時候除了會發送url,參數等內容外,還會給服務器端傳遞一些額外的請求頭(request header)。例如User-Agent,referer,host等等。簡單的爬蟲不做處理髮送請求相關的請求頭要麼爲空,要麼沒有,要麼內容不對。

反爬蟲

我們可以在服務端通過請求頭的驗證來預防簡單的爬蟲

應對方法

爬蟲程序設置合適的請求頭來模擬瀏覽器的訪問

2. ip訪問頻率限制

反爬蟲

服務端可以增加對ip訪問頻率的限制,當超過頻率就可以認爲是爬蟲

應對方法

我們可以設置每一次爬取的時間間隔(或者隨機時間間隔更好)長一點兒。或者通過僞裝ip,ip代理的方式來設置不同的ip地址。

  • 僞裝ip

爬蟲增加x-forwarded-for請求頭設置隨機ip地址。

  • 使用ip代理

實現準備大量的ip代理服務器組成ip池,然後每一次請求都從ip池中取一個作爲ip代理服務器發送請求

反爬蟲
  • 針對第一種應對方法我們可以在對外的nginx反向代理中設置x-forwarded-for請求爲
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#配置了這個服務端才能拿到真實的IP地址
proxy_set_header X-Forwarded-For $remote_addr;#最外層的nginx直接覆蓋掉x-forwarded-for請求頭內容爲真實ip

3. 蜜罐技術

反爬蟲

在網頁中設置一些隱藏的鏈接,這些鏈接在瀏覽器上是看不到的,所以用戶也是點擊不到的。但是爬蟲有可能會點擊到。如果有請求點擊到了,可以認爲是爬蟲

應對方法

需要手動去研究網頁的內容了,找出這些鏈接的規律然後排除

4. 不同類型的源代碼格式

反爬蟲

相同類型的網頁用不同的格式來編寫頁面,這樣爬蟲開發者在分析頁面的時候可能會遇到困難

應對方法

沒辦法,研究頁面

5. 驗證碼,滑動解鎖之類

反爬蟲

需要用戶輸入驗證碼或者滑動解鎖以後才能進行登陸

應對方法
  • 驗證碼的話,可以考慮機器學習圖像識別來訓練驗證碼識別模型
  • 滑動解鎖可以考慮使用selenium結合圖像識別來自動滑動滑塊實現滑動解鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章