註意,該協議的存在更多的是依賴於網絡爬蟲的合規性,而不具備防範爬蟲的功能。
互聯網上的網頁通過超鏈接相互關聯,從而形成網頁的Web結構。爬蟲的工作方式就像蜘蛛沿著互聯網上的鏈接爬行壹樣。最基本的過程可以簡化如下:
知道了上面的流程,我們就可以發現,網站對爬蟲是很被動的,只有老老實實爬上來的。
因此,對於網站管理者來說,有這樣壹個需求:
有些路徑用於個人隱私或網站管理,不希望被搜索引擎抓取,比如日系愛情動作片;
我不喜歡壹個搜索引擎,不想被他抓取。最著名的就是淘寶之前不想被百度抓取。
小網站使用公共虛擬主機,流量有限或者需要付費,希望搜索引擎溫柔壹些;
有些網頁是動態生成的,沒有直接鏈接,但是他們希望內容被搜索引擎抓取和索引。
網站內容的所有者是站長,搜索引擎應該尊重所有者的意願。為了滿足以上,有必要為網站提供壹個與爬蟲溝通的途徑,給站長壹個表達意願的機會。哪裏有需求,哪裏就有供應,機器人協議就這樣誕生了。
JD.COM的機器人協議
/robots.txt
百度的機器人協議
上圖,*代表全部,/代表根目錄。
既然網絡爬蟲在抓取壹個網站之前必須獲取文件,然後分析其中的規則,那麽機器人就必須有壹套通用的語法規則。
最簡單的robots.txt只有兩條規則:
用戶代理:指定哪些爬蟲將生效。
不允許:指定要阻止的URL。
我們來談談用戶代理。爬蟲爬行時會聲明自己的身份。這就是User-agent,沒錯,就是/culture。...
站點地圖:/hostedn...
順便說壹句,考慮到壹個網站有很多頁面,手工維護sitemap不太靠譜。google提供了自動生成站點地圖的工具。
元標簽
其實嚴格來說,這部分不屬於robots.txt。
robots.txt的初衷是讓站長管理可以出現在搜索引擎中的網站內容。但是,即使使用robots.txt文件使得爬蟲無法抓取這些內容,搜索引擎也可以通過其他方式找到這些頁面,並將它們添加到索引中。例如,其他網站可能仍然鏈接到此網站。因此,網站地址和其他公共信息(如相關網站鏈接中的定位文本或開放目錄管理系統中的標題)可能會出現在引擎搜索結果中。如果妳想完全不被搜索引擎發現怎麽辦?答案是:meta標簽,也就是元標簽。
例如,要完全阻止某個網頁的內容被列在搜索引擎索引中(即使其他網站鏈接到該網頁),可以使用noindex meta標記。只要搜索引擎查看網頁,就會看到noindex meta標簽,阻止網頁在索引中顯示。請註意,noindex meta標記提供了壹種方法來控制對網站的逐頁訪問。
要防止所有搜索引擎索引網站中的頁面,請添加:
此處name的值可以設置為搜索引擎的用戶代理,以指定應該阻止搜索引擎。
除了noindex之外,還有其他的meta標簽,比如nofollow,它禁止爬蟲跟蹤這個頁面的鏈接。詳情請參考Google支持的meta標簽。在這裏,我想提壹下,在HTML4.01規範中描述了noindex和nofollow,但是其他標簽在不同的引擎中有不同程度的支持。請自行參考各發動機的說明文檔。
爬行延遲
robots.txt除了控制什麽能抓什麽不能抓,還可以用來控制爬蟲的爬行速度。怎麽做?通過設置爬網程序在兩次爬網之間等待的秒數。這個操作可以減輕服務器的壓力。
意思是這次抓取之後下壹次抓取之前需要等待5秒。
註意:google不再支持這種方式,在站長工具中提供了壹個功能,可以更直觀的控制抓取速度。
題外話,幾年前有壹段時間robots.txt也支持復雜參數:visit-time,爬蟲只能在Visit-time指定的時間段內訪問;Request-rate:用於限制URL的讀取頻率,控制不同時間段不同的抓取速率。後來估計支持的人太少了,也就逐漸廢除了。目前google和百度已經不支持這個規則了,其他小引擎公司似乎也從來不支持。
網絡爬蟲:
自動或手動識別robots.txt,然後抓取內容。
綁定:
Robots協議是建議性的但不具有約束力,網絡爬蟲可以不遵守,但存在法律風險。
原理:類人行為不能引用機器人協議。
機器人協議不是技術壁壘,而是相互尊重的協議。比如私家花園門口掛著“閑人勿入”,尊重的人可以繞道走,不尊重的人仍然可以推門而入。目前,Robots協議在實際使用中還存在壹些問題。
隱藏物
Robots.txt本身也需要抓取。為了效率,壹般爬蟲在抓取壹個網站頁面之前,不會每次都抓取robots.txt。另外robots.txt更新不頻繁,內容需要解析。通常爬蟲爬壹次,解析壹次,緩存壹次,需要很長時間。假設站長更新了robots.txt,修改了壹些規則,但是對於爬蟲來說不會立即生效。只有爬蟲下次抓取robots.txt時,才能看到最新的內容。不好意思,下次爬蟲爬robots.txt不受站長控制。當然,也有壹些搜索引擎提供了web工具,允許站長通知搜索引擎網址發生了變化,建議重新抓取。註意,這是壹個建議。即使通知了搜索引擎,搜索引擎什麽時候搶還是不確定,但總比根本不通知好。至於好多少,就看搜索引擎的良心和技術能力了。
忽視
不知道是無意還是有意。反正有些爬蟲不關註或者完全忽略robots.txt,不排除開發者能力的問題,比如根本不了解robots.txt。另外,robots.txt本身並不是強制措施。如果網站有需要保密的數據,必須采取技術措施,如用戶認證、加密、ip攔截、訪問頻率控制等。
惡意爬行動物
在互聯網世界裏,每天都有無數的爬蟲夜以繼日的爬行,惡意爬蟲的數量甚至高於非惡意爬蟲。遵守Robots協議的爬蟲是好爬蟲,但不是每個爬蟲都會主動遵守Robots協議。
惡意爬蟲會帶來很多潛在的威脅。比如電商網站的商品信息,在被抓取的時候可能會被競爭對手利用。爬蟲太多也會占用帶寬資源,甚至導致網站宕機。
妳學會了~ ~ ~?
點個贊!!!