反爬蟲簡述

爬蟲程序的訪問速率和目的與正常用戶的訪問速率和目的是不同的,大部分爬蟲會無節制地對目標應用進行爬取,這給目標應用的服務器帶來巨大的壓力。爬蟲程序發出的網絡請求被運營者稱爲 "拉圾流量"。

  開發者爲了保證服務器的正常運轉或降低服務器的壓力與運營成本,不得不使出各種各樣的技才手段來限制爬蟲對服務器資源的訪問。因爲爬蟲和反爬蟲是綜合技術的應用,反爬蟲的現象與爬蟲程師所用的工具和開發語言有關,甚至與爬蟲工程師的個人能力也有一定關聯.所以反爬蟲的概念常模糊,業內並沒有明確的定義。
簡而言之,限制爬蟲程序訪問服務器資源和獲取數據的行爲稱爲反爬蟲。限制手段包括但不限於請求限制、拒絕響應、客戶端身份驗證、文本混淆和使用動態渲染技術。這些限制根據出發點可以分爲主動型反爬蟲和被動型反爬蟲。

  (1)主動型反爬蟲:開發者有意識地使用技術手段區分正常用戶和爬蟲,並限制爬蟲對網站的議問行爲,如驗證請求頭信息、限制訪問頻率、使用驗證碼等。

  (2)被動型反爬蟲:爲了提升用戶體驗或節省資源,用一些技術間接提高爬蟲訪問難度的行爲比如數據分段加載、點擊切換標籤頁、鼠標懸停預覽數據等。

  (3)除此之外,還可以從特點上對反爬蟲進行更細緻的劃分,如信息校驗型反爬蟲、動態渲染型反爬蟲、文本混淆型反爬蟲、特徵識別型反爬蟲等。需要注意的是,同一種限制現象可以被歸類到不同的反爬蟲類型中,比如通過JavaScript 生成隨機字符串並將字符串放在請求頭中發送給服務器,由服務器校驗客戶端身份的這種限制手段既可以說是信息校驗型反爬蟲,又可以說是動態渲染反爬蟲。

  反爬蟲不僅要了解網站流量情況,還需要了解爬蟲工程師常用的手段,並從多個方面進行針對性的防護。反爬蟲的方案設計、實施和測試等都需要耗費大量的時間,而且往往需要多個部門配合才自完成。從這個角度來看,除了技術難度外,時間成本也是非常高的。

  經濟方面的開支通常有IP代理費用、雲服務器購買費用、VIP賬戶開通費用等。除此之外、還要耗費比反爬蟲更多的時間,這是因爲當目標網站的算法或者網頁結構更改時,爬蟲代碼也需要做對應的改變,有時候甚至需要重寫代碼。我們可以通過下表瞭解到它們之間針鋒相對又互相進步的關係:

爬蟲 反爬蟲
Python 代碼向目標網站發起網絡請求,爬取網站數據 監控到異常流量,如果請求並非來自漢網站數據則拒絕請求
模擬瀏覽器標識,欺騙目標網站 監控到大量請求均來自同一個瀏覽器標識,考慮爬蟲僞造,限制訪問頻率
使用IP輪換或多機的方式對目標網站發起請求 在一些人口或表單處增加驗證碼,以區別正常用戶和爬蟲
簡單的驗證碼可以通過代碼識別,複雜的驗證碼則通過接入打碼平臺,繼續對目標網站發起請求 完善賬號體系,規定只有VIP才能瀏覽關鍵信息,避免珍貴的數據被爬蟲大規模爬取
註冊多個賬號並開通網站VIP 自定義混淆規則對網站的重要信息進行混淆,增加爬蟲識別難度
當解密成本較高時,採用屏幕截圖的方式獲取關鍵數據 根據自動化測試框架或瀏覽器的特徵區別用戶和爬蟲
成本太高,有可能放棄爬取 成本太高,無法完全限制爬取

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章