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