【爬蟲學習】反爬蟲技術

  • 2020 年 6 月 23 日
  • 筆記

1、通過User-Agent來控制訪問

      User-Agent是指用戶代理,使伺服器能夠識別客戶使用的作業系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。

       無論是瀏覽器還是爬蟲程式,在向伺服器發起網路請求的時候,都會發過去一個頭文件:headers。

       這裡面的大多數的欄位都是瀏覽器向伺服器」表明身份「用的。

        對於爬蟲程式來說,最需要注意的欄位就是:User-Agent

        很多網站都會建立 user-agent白名單,只有屬於正常範圍的user-agent才能夠正常訪問。

        缺點:容易偽造頭部。  

 

        對於爬蟲程式而言:

        如果不設置User-Agent,伺服器端只會收到一個單純的對於該頁面訪問的請求,但是伺服器並不知道發送這個請求使用的瀏覽器,作業系統,硬體平台等資訊,而缺失這些資訊的請求往往都是非正常的訪問,例如爬蟲。

        所以需要偽造User-Agent進行請求【可以手動設置一個User-Agent,但是更好的是提供多個User-Agent】

 

2、IP限制

        如果一個固定的ip在短暫的時間內,快速大量的訪問一個網站,後台管理員可以編寫IP限制,不讓該IP繼續訪問。

        缺點:可以使用免費/付費代理,繞過檢測。

   

       對於爬蟲程式而言:使用代理(池)

        IP是上網需要唯一的身份地址,身份憑證,而代理IP就是我們上網過程中的一個中間平台,是由你的電腦先訪問代理IP,之後再由代理IP訪問你點開的頁面,所以在這個頁面的訪問記錄里留下的是就是代理IP的地址,而不是你的電腦本機IP。

       
3、Session訪問限制

  後台統計登錄用戶的操作,比如短時間的點擊事件,請求數據事件,與正常值比對,用於區分用戶是否處理異常狀態,如果是,則限制登錄用戶操作許可權。
    缺點:需要增加數據埋點功能【統計用戶行為】
 
    對於爬蟲而言:註冊多個帳號、模擬正常操作。
 
4、驗證碼驗證
         簡訊驗證碼、圖片驗證碼等反爬蟲
        
       對於爬蟲而言:
         1、圖片驗證碼: OCR技術
         2、簡訊驗證碼:用Webbrowser技術,模擬用戶打開簡訊的行為,最終獲取簡訊驗證碼。
 
5、使用robot.txt

robots.txt(統一小寫)是一種存放於網站根目錄下的ASCII編碼的文本文件,它通常告訴網路搜索引擎的漫遊器(又稱網路蜘蛛),此網站中的哪些內容是不應被搜索引擎的漫遊器獲取的,哪些是可以被漫遊器獲取的。因為一些系統中的URL是大小寫敏感的,所以robots.txt的文件名應統一為小寫。robots.txt應放置於網站的根目錄下。如果想單獨定義搜索引擎的漫遊器訪問子目錄時的行為,那麼可以將自定的設置合併到根目錄下的robots.txt,或者使用robots元數據(Metadata,又稱元數據)。
robots.txt協議並不是一個規範,而只是約定俗成的,所以並不能保證網站的隱私。注意robots.txt是用字元串比較來確定是否獲取URL,所以目錄末尾有與沒有斜杠「/」表示的是不同的URL。robots.txt允許使用類似”Disallow: *.gif”這樣的通配符。

6、動態數據載入
     使用JS載入數據方式,能提高爬蟲門檻。
      對於爬蟲而言: 進行網頁分析(抓包)
 
7、數據加密
   使用JS生產加密指令
    對於爬蟲:分析對應的JS函數進行破解
 
 
鏈接://www.jianshu.com/p/66b7105c046c