對於您的問題的更完整的答案,你不能只依靠一種方法。問題是你想做什麼的衝突性質。基本上你想允許好的機器人訪問你的網站併爲它編制索引,這樣你就可以出現在搜索引擎上;但是你想阻止壞的機器人吸取所有帶寬並竊取你的信息。
的第一道防線:
在您網站的根目錄下創建一個robots.txt
文件。有關詳細信息,請參見http://www.robotstxt.org/。這將在網站的最有意義的區域保持良好,行爲良好的機器人。請記住,如果您爲一個機器人與另一個機器人提供不同的行爲,則robots.txt
依賴於用戶代理字符串。見防禦http://www.robotstxt.org/db.html
下聯:對用戶代理和/或IP地址
過濾器。我已經因爲暗示這一點而受到批評,但令人驚訝的是,很少機器人掩蓋他們是誰,甚至是壞人。再次,它不會阻止所有不良行爲,但它提供了一定程度的盡職調查。更多關於稍後利用User-Agent的信息。防禦
第三行:
監視Web服務器的訪問日誌。使用日誌分析器來確定大部分流量來自哪裏。這些日誌包括IP地址和用戶代理字符串,因此您可以檢測機器人有多少實例擊中了您,以及它是否真的說出它的名稱:請參閱http://www.robotstxt.org/iplookup.html
您可能必須自己掀起日誌分析器來查找來自不同客戶端的請求速率。超過某個閾值(比如10 /秒)的任何事情都將成爲稍後評級限制的候選人。
利用用戶代理替代網站內容:
我們不得不採取保護我們的用戶即使是合法的機器人錘擊我們的網站的一種方法是基於用戶代理分裂交通。基本上,如果用戶代理是一個已知的瀏覽器,他們得到了全功能網站。如果它不是一個已知的瀏覽器,它將被視爲一個機器人,並被賦予一組簡單的HTML文件,只需要他們完成工作所需的元信息和鏈接。殭屍程序的HTML文件每天靜態生成四次,因此沒有處理開銷。您還可以呈現RSS提要,而不是提供相同功能的提取HTML。
最後請注意:
你只有這麼多的資源,而不是每一個合法的機器人表現良好(即忽略robots.txt
,並提出了很多壓力的服務器上)。你將不得不隨時更新你的方法。例如,如果一個IP地址變成客戶端(或其客戶端)所做的自定義搜索機器人,您可能不得不限制IP地址的速率,而不是完全阻止它。
基本上,您試圖在爲用戶提供服務和保持網站可用於搜索引擎之間取得良好的平衡。做足夠的事情來保持你的網站對用戶的響應,並且必要時只採取更先進的策略。
任何人都可以將他想要的任何用戶代理放入請求中,所以用UA過濾是沒用的 – 2010-12-14 14:45:25
他問他可以做些什麼來檢測。這是你可以做的事情之一。無論你能做什麼,即使是不好的垃圾郵件機器人也能識別自己。大多數偷偷摸摸的人比改變他們的用戶代理更好一些。 – 2010-12-14 15:40:32