【轉】防止網頁被搜索引擎、爬蟲和網頁採集器收錄或克隆複製的方法彙總

最常規的防止網頁被搜索引擎收錄的方法是使用robots.txt,可是這樣作的弊端是要將全部已知的搜索引的爬蟲信息都羅列進去,不免有疏漏。php

下面的這些方法是能夠標本兼治的:

一、限制IP地址單位時間的訪問次數

分析:沒有哪一個常人一秒鐘內能訪問相同網站5次,除非是程序訪問,而有這種喜愛的,就剩下搜索引擎爬蟲和討厭的採集器了。
弊端:一刀切,這一樣會阻止搜索引擎對網站的收錄
適用網站:不太依靠搜索引擎的網站
採集器會怎麼作:減小單位時間的訪問次數,減低採集效率css

二、屏蔽ip

分析:經過後臺計數器,記錄來訪者ip和訪問頻率,人爲分析來訪記錄,屏蔽可疑Ip。
弊端:彷佛沒什麼弊端,就是站長忙了點
適用網站:全部網站,且站長可以知道哪些是google或者百度的機器人
採集器會怎麼作:打游擊戰唄!利用ip代理採集一次換一次,不過會下降採集器的效率和網速(用代理嘛)。html

三、利用js加密網頁內容

Note:這個方法我沒接觸過,只是從別處看來
分析:不用分析了,搜索引擎爬蟲和採集器通殺
適用網站:極度討厭搜索引擎和採集器的網站
採集器會這麼作:你那麼牛,都豁出去了,他就不來採你了nginx

四、網頁裏隱藏網站版權或者一些隨機垃圾文字,這些文字風格寫在css文件中

分析:雖然不能防止採集,可是會讓採集後的內容充滿了你網站的版權說明或者一些垃圾文字,由於通常採集器不會同時採集你的css文件,那些文字沒了風格,就顯示出來了。
適用網站:全部網站
採集器會怎麼作:對於版權文字,好辦,替換掉。對於隨機的垃圾文字,沒辦法,勤快點了。vim

五、用戶登陸才能訪問網站內容

分析:搜索引擎爬蟲不會對每一個這樣類型的網站設計登陸程序。據說採集器能夠針對某個網站設計模擬用戶登陸提交表單行爲。
適用網站:極度討厭搜索引擎,且想阻止大部分採集器的網站
採集器會怎麼作:製做擬用戶登陸提交表單行爲的模塊ide

六、利用腳本語言作分頁(隱藏分頁)

分析:仍是那句,搜索引擎爬蟲不會針對各類網站的隱藏分頁進行分析,這影響搜索引擎對其收錄。可是,採集者在編寫採集規則時,要分析目標網頁代碼,懂點腳本知識的人,就會知道分頁的真實連接地址。
適用網站:對搜索引擎依賴度不高的網站,還有,採集你的人不懂腳本知識
採集器會怎麼作:應該說採集者會怎麼作,他反正都要分析你的網頁代碼,順便分析你的分頁腳本,花不了多少額外時間。網站

七、防盜鏈措施 (只容許經過本站頁面鏈接查看,如:Request.ServerVariables(「HTTP_REFERER「) )

分析:asp和php能夠經過讀取請求的HTTP_REFERER屬性,來判斷該請求是否來自本網站,從而來限制採集器,一樣也限制了搜索引擎爬蟲,嚴重影響搜索引擎對網站部分防盜鏈內容的收錄。
適用網站:不太考慮搜索引擎收錄的網站
採集器會怎麼作:假裝HTTP_REFERER嘛,不難。搜索引擎

八、全flash、圖片或者pdf來呈現網站內容

分析:對搜索引擎爬蟲和採集器支持性很差,這個不少懂點seo的人都知道
適用網站:媒體設計類而且不在乎搜索引擎收錄的網站
採集器會怎麼作:不採了,走人google

九、網站隨機採用不一樣模版

分析:由於採集器是根據網頁結構來定位所須要的內容,一旦前後兩次模版更換,採集規則就失效,不錯。並且這樣對搜索引擎爬蟲沒影響。
適用網站:動態網站,而且不考慮用戶體驗。
採集器會怎麼作:一個網站模版不可能多於10個吧,每一個模版弄一個規則就好了,不一樣模版採用不一樣採集規則。若是多於10個模版了,既然目標網站都那麼費勁的更換模版,成全他,撤。加密

十、採用動態不規則的html標籤

分析:這個比較變態。考慮到html標籤內含空格和不含空格效果是同樣的,因此< div >和< div >對於頁面顯示效果同樣,可是做爲採集器的標記就是兩個不一樣標記了。若是每次頁面的html標籤內空格數隨機,那麼
採集規則就失效了。可是,這對搜索引擎爬蟲沒多大影響。
適合網站:全部動態且不想遵照網頁設計規範的網站。
採集器會怎麼作:仍是有對策的,如今html cleaner仍是不少的,先清理了html標籤,而後再寫採集規則;應該用採集規則前先清理html標籤,仍是可以拿到所需數據。

十一、nginx

使用nginx的自帶功能:經過對httpuseragent阻塞來實現,包括GET/POST方式的請求,以nginx爲例,具體步驟以下:

編輯nginx.conf

#vim /usr/local/nginx/conf/nginx.conf
拒絕以wget方式的httpuseragent,增長以下內容
## Block http user agent - wget ##
if ($http_user_agent ~* (Wget) ) {
return 403;
}
## Block Software download user agents ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}
平滑啓動
# /usr/local/nginx/sbin/nginx -s reload
如何拒絕多種httpuseragent,內容以下:
if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) {
return 403;
}
大小寫敏感匹配
### 大小寫敏感http user agent拒絕###
if ($http_user_agent ~ (Catall Spider|AcoiRobot) ) {
return 403;
}
### 大小寫不敏感http user agent拒絕###
if ($http_user_agent ~* (foo|bar) ) {
return 403;
}
注意:以上if(與http間的\是轉義用的,若不用MarkDown會把內容用於調整格式,實際編寫文件時應去掉該反斜槓;

原文連接

相關文章
相關標籤/搜索