日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

如何避免搜索引擎爬虫产生的流量过大以及搜索引擎设置优化

發布時間:2023/12/3 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 如何避免搜索引擎爬虫产生的流量过大以及搜索引擎设置优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:http://www.qiexing.com/post/web-seach-spider.html

?

今天卻收到了虛擬主機商的報告:說當月流量已經超出15G!

登錄到后臺的統計才發現,正常的網站瀏覽產生的流量才1G多,而搜索引擎爬蟲(也稱蜘蛛:spider等)產生的流量卻達14G之多!有圖為證:

為什么會搜索引擎爬蟲會產生這么大的流量,特別是搜狗的爬蟲與bspider爬蟲真是大的驚人,但卻不能為網站帶來流量。從統計中看到網站的大多數流量是來自百度與谷歌兩個搜索引擎,因此決定修改robots.txt文件,屏蔽其它搜索引擎爬蟲。

從網上查看到的方法與格式,不知道正確與否,帖出來給大家看看,如有錯誤請指正:

User-agent: Googlebot
# Directories
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /sites/
Disallow: /themes/
# Files
Disallow: /CHANGELOG.txt
Disallow: /cron.php
Disallow: /INSTALL.mysql.txt
Disallow: /INSTALL.pgsql.txt
Disallow: /install.php
Disallow: /INSTALL.txt
Disallow: /LICENSE.txt
Disallow: /MAINTAINERS.txt
Disallow: /update.php
Disallow: /UPGRADE.txt
Disallow: /xmlrpc.php
# Paths (clean URLs)
Disallow: /admin/
Disallow: /comment/reply/
Disallow: /contact/
Disallow: /logout/
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
# Paths (no clean URLs)
Disallow: /?q=admin/
Disallow: /?q=comment/reply/
Disallow: /?q=contact/
Disallow: /?q=logout/
Disallow: /?q=node/add/
Disallow: /?q=search/
Disallow: /?q=user/password/
Disallow: /?q=user/register/
Disallow: /?q=user/login/

User-agent: baiduspider
# Directories
Disallow: /includes/
Disallow: /misc/
Disallow: /modules/
Disallow: /profiles/
Disallow: /scripts/
Disallow: /sites/
Disallow: /themes/
# Files
Disallow: /CHANGELOG.txt
Disallow: /cron.php
Disallow: /INSTALL.mysql.txt
Disallow: /INSTALL.pgsql.txt
Disallow: /install.php
Disallow: /INSTALL.txt
Disallow: /LICENSE.txt
Disallow: /MAINTAINERS.txt
Disallow: /update.php
Disallow: /UPGRADE.txt
Disallow: /xmlrpc.php
# Paths (clean URLs)
Disallow: /admin/
Disallow: /comment/reply/
Disallow: /contact/
Disallow: /logout/
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
# Paths (no clean URLs)
Disallow: /?q=admin/
Disallow: /?q=comment/reply/
Disallow: /?q=contact/
Disallow: /?q=logout/
Disallow: /?q=node/add/
Disallow: /?q=search/
Disallow: /?q=user/password/
Disallow: /?q=user/register/
Disallow: /?q=user/login/
User-agent: *
Disallow: /

這里主要通過Disallow,限制訪問一些無關管理頁面與文件,另外通過User-agent * 屏蔽了除了百度與谷歌的所有搜索引擎爬蟲。關于robots.txt具體使用,請搜索robots.txt教程

?

另外關于搜索引擎的爬蟲知識,在網上看到一篇很好的介紹文章,轉載在這里:http://robbin.javaeye.com/blog/451014

因為搜索引擎的流行,網絡爬蟲已經成了很普及網絡技術,除了專門做搜索的Google,Yahoo,微軟,百度以外,幾乎每個大型門戶網站都有自己的搜索 引擎,大大小小叫得出來名字得就幾十種,還有各種不知名的幾千幾萬種,對于一個內容型驅動的網站來說,受到網絡爬蟲的光顧是不可避免的。?

一些智能的搜索引擎爬蟲的爬取頻率比較合理,對網站資源消耗比較少,但是很多糟糕的網絡爬蟲,對網頁爬取能力很差,經常并發幾十上百個請求循環重 復抓取,這種爬蟲對中小型網站往往是毀滅性打擊,特別是一些缺乏爬蟲編寫經驗的程序員寫出來的爬蟲破壞力極強。曾經有一次我在JavaEye的日志里面發現一個User- Agent是Java的爬蟲一天之內爬取了將近100萬次動態請求。這是一個用JDK標準類庫編寫的簡單爬取網頁程序,由于JavaEye網站內部鏈接構 成了回環導致程序陷入了死循環。對于JavaEye這種百萬PV級別的網站來說,這種爬蟲造成的訪問壓力會非常大,會導致網站訪問速度緩慢,甚至無法訪 問。?

此外,相當數量的的網頁爬蟲目的是盜取目標網站的內容。比方說JavaEye網站就曾經被兩個競爭對手網站爬取論壇帖子,然后在自己的論壇里面用 機器人發帖,因此這種爬蟲不僅僅影響網站訪問速度,而且侵犯了網站的版權。?

對于一個原創內容豐富,URL結構合理易于爬取的網站來說,簡直就是各種爬蟲的盤中大餐,很多網站的訪問流量構成當中,爬蟲帶來的流量要遠遠超過 真實用戶訪問流量,甚至爬蟲流量要高出真實流量一個數量級。像JavaEye網站雖然設置了相當嚴格的反爬蟲策略,但是網站處理的動態請求數量仍然是真實 用戶訪問流量的2倍。可以肯定的說,當今互聯網的網絡流量至少有2/3的流量爬蟲帶來的。因此反爬蟲是一個值得網站長期探索和解決的問題。?

一、手工識別和拒絕爬蟲的訪問?

有相當多的爬蟲對網站會造成非常高的負載,因此識別爬蟲的來源IP是很容易的事情。最簡單的辦法就是用netstat檢查80端口的連接:

C代碼?

  1. netstat?-nt?|?grep?youhostip:80?|?awk?'{print?$5}'?|?awk?-F":"?'{print?$1}'|?sort?|?uniq?-c?|?sort?-r?-n???

這行shell可以按照80端口連接數量對來源IP進行排序,這樣可以直觀的判斷出來網頁爬蟲。一般來說爬蟲的并發連接非常高。?

如果使用lighttpd做Web Server,那么就更簡單了。lighttpd的mod_status提供了非常直觀的并發連接的信息,包括每個連接的來源IP,訪問的URL,連接狀 態和連接時間等信息,只要檢查那些處于handle-request狀態的高并發IP就可以很快確定爬蟲的來源IP了。?

拒絕爬蟲請求既可以通過內核防火墻來拒絕,也可以在web server拒絕,比方說用iptables拒絕:?
C代碼?

  1. iptables?-A?INPUT?-i?eth0?-j?DROP?-p?tcp?--dport?80?-s?84.80.46.0/24????

直接封鎖爬蟲所在的C網段地址。這是因為一般爬蟲都是運行在托管機房里面,可能在一個C段里面的多臺服務器上面都有爬蟲,而這個C段不可能是用戶 寬帶上網,封鎖C段可以很大程度上解決問題。?

有些人提出一種腦殘的觀點,說我要懲罰這些爬蟲。我專門在網頁里面設計動態循環鏈接頁面,讓爬蟲掉進陷阱,死循環爬不出來,其實根本用不著設置陷 阱,弱智爬蟲對正常網頁自己就爬不出來,這樣做多此一舉不說,而且會讓真正的搜索引擎降低你的網頁排名。而且運行一個爬蟲根本不消耗什么機器資源,相反, 真正寶貴的是你的服務器CPU資源和服務器帶寬,簡單的拒絕掉爬蟲的請求是反爬蟲最有效的策略。?

二、通過識別爬蟲的User-Agent信息來拒絕爬蟲?

有很多爬蟲并不會以很高的并發連接爬取,一般不容易暴露自己;有些爬蟲的來源IP分布很廣,很難簡單的通過封鎖IP段地址來解決問題;另外還有很 多各種各樣的小爬蟲,它們在嘗試Google以外創新的搜索方式,每個爬蟲每天爬取幾萬的網頁,幾十個爬蟲加起來每天就能消耗掉上百萬動態請求的資源,由 于每個小爬蟲單獨的爬取量都很低,所以你很難把它從每天海量的訪問IP地址當中把它準確的挖出來。?

這種情況下我們可以通過爬蟲的User-Agent信息來識別。每個爬蟲在爬取網頁的時候,會聲明自己的User-Agent信息,因此我們就可 以通過記錄和分析User-Agent信息來挖掘和封鎖爬蟲。我們需要記錄每個請求的User-Agent信息,對于Rails來說我們可以簡單的在 app/controllers/application.rb里面添加一個全局的before_filter,來記錄每個請求的User-Agent信 息:?
Ruby 代碼?

  1. logger.info?"HTTP_USER_AGENT?#{request.env["HTTP_USER_AGENT"]}"????

然后統計每天的production.log,抽取User-Agent信息,找出訪問量最大的那些User-Agent。要注意的是我們只關注 那些爬蟲的User-Agent信息,而不是真正瀏覽器User-Agent,所以還要排除掉瀏覽器User-Agent,要做到這一點僅僅需要一行 shell:?
Ruby 代碼?

  1. grep?HTTP_USER_AGENT?production.log?|?grep?-v?-E?'MSIE|Firefox|Chrome|Opera|Safari|Gecko'?|?sort?|?uniq?-c?|?sort?-r?-n?|?head?-n?100?>?bot.log????

統計結果類似這樣:?
C代碼?

  1. 57335?HTTP_USER_AGENT?Baiduspider+(+http://www.baidu.com/search/spider.htm)??
  2. 56639?HTTP_USER_AGENT?Mozilla/5.0?(compatible;?Googlebot/2.1;?+http://www.google.com/bot.html)??
  3. 42610?HTTP_USER_AGENT?Mediapartners-Google??
  4. 19131?HTTP_USER_AGENT?msnbot/2.0b?(+http://search.msn.com/msnbot.htm)??

從日志就可以直觀的看出每個爬蟲的請求次數。要根據User-Agent信息來封鎖爬蟲是件很容易的事情,lighttpd配置如下:?
C代碼?

  1. $HTTP["useragent"]?=~?"qihoobot|^Java|Commons-HttpClient|Wget|^PHP|Ruby|Python"?{??
  2. ??url.rewrite?=?(?"^/(.*)"?=>?"/crawler.html"?)??
  3. }??

使用這種方式來封鎖爬蟲雖然簡單但是非常有效,除了封鎖特定的爬蟲,還可以封鎖常用的編程語言和HTTP類庫的User-Agent信息,這樣就 可以避免很多無謂的程序員用來練手的爬蟲程序對網站的騷擾。?

還有一種比較常見的情況,就是某個搜索引擎的爬蟲對網站爬取頻率過高,但是搜索引擎給網站帶來了很多流量,我們并不希望簡單的封鎖爬蟲,僅僅是希望降低爬蟲的請求頻率,減輕爬蟲對網站造成的負載,那么我們可以這樣做:?
C代碼?

  1. $HTTP["user-agent"]?=~?"Baiduspider+"?{??
  2. ????connection.delay-seconds?=?10??
  3. }??

對百度的爬蟲請求延遲10秒鐘再進行處理,這樣就可以有效降低爬蟲對網站的負載了。?

三、通過網站流量統計系統和日志分析來識別爬蟲?

有些爬蟲喜歡修改User-Agent信息來偽裝自己,把自己偽裝成一個真實瀏覽器的User-Agent信息,讓你無法有效的識別。這種情況下 我們可以通過網站流量系統記錄的真實用戶訪問IP來進行識別。?

主流的網站流量統計系統不外乎兩種實現策略:一種策略是在網頁里面嵌入一段js,這段js會向特定的統計服務器發送請求的方式記錄訪問量;另一種 策略是直接分析服務器日志,來統計網站訪問量。在理想的情況下,嵌入js的方式統計的網站流量應該高于分析服務器日志,這是因為用戶瀏覽器會有緩存,不一 定每次真實用戶訪問都會觸發服務器的處理。但實際情況是,分析服務器日志得到的網站訪問量遠遠高于嵌入js方式,極端情況下,甚至要高出10倍以上。?

現在很多網站喜歡采用awstats來分析服務器日志,來計算網站的訪問量,但是當他們一旦采用Google Analytics來統計網站流量的時候,卻發現GA統計的流量遠遠低于awstats,為什么GA和awstats統計會有這么大差異呢?罪魁禍首就是 把自己偽裝成瀏覽器的網絡爬蟲。這種情況下awstats無法有效的識別了,所以awstats的統計數據會虛高。?

其實作為一個網站來說,如果希望了解自己的網站真實訪問量,希望精確了解網站每個頻道的訪問量和訪問用戶,應該用頁面里面嵌入js的方式來開發自 己的網站流量統計系統。自己做一個網站流量統計系統是件很簡單的事情,寫段服務器程序響應客戶段js的請求,分析和識別請求然后寫日志的同時做后臺的異步 統計就搞定了。?

通過流量統計系統得到的用戶IP基本是真實的用戶訪問,因為一般情況下爬蟲是無法執行網頁里面的js代碼片段的。所以我們可以拿流量統計系統記錄 的IP和服務器程序日志記錄的IP地址進行比較,如果服務器日志里面某個IP發起了大量的請求,在流量統計系統里面卻根本找不到,或者即使找得到,可訪問 量卻只有寥寥幾個,那么無疑就是一個網絡爬蟲。?

分析服務器日志統計訪問最多的IP地址段一行shell就可以了:?
C代碼?

  1. grep?Processing?production.log?|?awk?'{print?$4}'?|?awk?-F'.'?'{print?$1"."$2"."$3".0"}'?|?sort?|?uniq?-c?|?sort?-r?-n?|?head?-n?200?>?stat_ip.log????

然后把統計結果和流量統計系統記錄的IP地址進行對比,排除真實用戶訪問IP,再排除我們希望放行的網頁爬蟲,比方Google,百度,微軟 msn爬蟲等等。最后的分析結果就就得到了爬蟲的IP地址了。以下代碼段是個簡單的實現示意:?
Ruby 代碼?

  1. whitelist?=?[]??
  2. IO.foreach("#{RAILS_ROOT}/lib/whitelist.txt")?{?|line|?whitelist?<<?line.split[0].strip?if?line?}??
  3. ??
  4. realiplist?=?[]??
  5. IO.foreach("#{RAILS_ROOT}/log/visit_ip.log")?{?|line|??realiplist?<<?line.strip?if?line?}??
  6. ??
  7. iplist?=?[]??
  8. IO.foreach("#{RAILS_ROOT}/log/stat_ip.log")?do?|line|??
  9. ??ip?=?line.split[1].strip??
  10. ??iplist?<<?ip?if?line.split[0].to_i?>?3000?&&?!whitelist.include?(ip)?&&?!realiplist.include?(ip)??
  11. end???
  12. ??
  13. Report.deliver_crawler(iplist)??

分析服務器日志里面請求次數超過3000次的IP地址段,排除白名單地址和真實訪問IP地址,最后得到的就是爬蟲IP了,然后可以發送郵件通知管 理員進行相應的處理。?

四、網站的實時反爬蟲防火墻實現策略?

通過分析日志的方式來識別網頁爬蟲不是一個實時的反爬蟲策略。如果一個爬蟲非要針對你的網站進行處心積慮的爬取,那么他可能會采用分布式爬取策 略,比方說尋找幾百上千個國外的代理服務器瘋狂的爬取你的網站,從而導致網站無法訪問,那么你再分析日志是不可能及時解決問題的。所以必須采取實時反爬蟲 策略,要能夠動態的實時識別和封鎖爬蟲的訪問。?

要自己編寫一個這樣的實時反爬蟲系統其實也很簡單。比方說我們可以用memcached來做訪問計數器,記錄每個IP的訪問頻度,在單位時間之 內,如果訪問頻率超過一個閥值,我們就認為這個IP很可能有問題,那么我們就可以返回一個驗證碼頁面,要求用戶填寫驗證碼。如果是爬蟲的話,當然不可能填 寫驗證碼,所以就被拒掉了,這樣很簡單就解決了爬蟲問題。?

用memcache記錄每個IP訪問計數,單位時間內超過閥值就讓用戶填寫驗證碼,用Rails編寫的示例代碼如下:?
Ruby 代碼?

  1. ip_counter?=?Rails.cache.increment(request.remote_ip)??
  2. if?!ip_counter??
  3. ??Rails.cache.write(request.remote_ip,?1,?:expires_in?=>?30.minutes)??
  4. elsif?ip_counter?>?2000??
  5. ??render?:template?=>?'test',?:status?=>?401?and?return?false??
  6. end??

這段程序只是最簡單的示例,實際的代碼實現我們還會添加很多判斷,比方說我們可能要排除白名單IP地址段,要允許特定的User-Agent通 過,要針對登錄用戶和非登錄用戶,針對有無referer地址采取不同的閥值和計數加速器等等。?

此外如果分布式爬蟲爬取頻率過高的話,過期就允許爬蟲再次訪問還是會對服務器造成很大的壓力,因此我們可以添加一條策略:針對要求用戶填寫驗證碼 的IP地址,如果該IP地址短時間內繼續不停的請求,則判斷為爬蟲,加入黑名單,后續請求全部拒絕掉。為此,示例代碼可以改進一下:?
Ruby 代碼?

  1. before_filter?:ip_firewall,?:except?=>?:test??
  2. def?ip_firewall??
  3. ??render?:file?=>?"#{RAILS_ROOT}/public/403.html",?:status?=>?403?if?BlackList.include?(ip_sec)??
  4. end??

我們可以定義一個全局的過濾器,對所有請求進行過濾,出現在黑名單的IP地址一律拒絕。對非黑名單的IP地址再進行計數和統計:?
Ruby 代碼?

  1. ip_counter?=?Rails.cache.increment(request.remote_ip)??
  2. if?!ip_counter??
  3. ??Rails.cache.write(request.remote_ip,?1,?:expires_in?=>?30.minutes)??
  4. elsif?ip_counter?>?2000??
  5. ??crawler_counter?=?Rails.cache.increment("crawler/#{request.remote_ip}")??
  6. ??if?!crawler_counter??
  7. ????Rails.cache.write("crawler/#{request.remote_ip}",?1,?:expires_in?=>?10.minutes)??
  8. ??elsif?crawler_counter?>?50??
  9. ????BlackList.add(ip_sec)??
  10. ????render?:file?=>?"#{RAILS_ROOT}/public/403.html",?:status?=>?403?and?return?false??
  11. ??end??
  12. ??render?:template?=>?'test',?:status?=>?401?and?return?false??
  13. end??

如果某個IP地址單位時間內訪問頻率超過閥值,再增加一個計數器,跟蹤他會不會立刻填寫驗證碼,如果他不填寫驗證碼,在短時間內還是高頻率訪問, 就把這個IP地址段加入黑名單,除非用戶填寫驗證碼激活,否則所有請求全部拒絕。這樣我們就可以通過在程序里面維護黑名單的方式來動態的跟蹤爬蟲的情況, 甚至我們可以自己寫個后臺來手工管理黑名單列表,了解網站爬蟲的情況。?

這個策略已經比較智能了,但是還不夠好!我們還可以繼續改進:?

1、用網站流量統計系統來改進實時反爬蟲系統?

還記得嗎?網站流量統計系統記錄的IP地址是真實用戶訪問IP,所以我們在網站流量統計系統里面也去操作memcached,但是這次不是增加計 數值,而是減少計數值。在網站流量統計系統里面每接收到一個IP請求,就相應的cache.decrement(key)。所以對于真實用戶的IP來說, 它的計數值總是加1然后就減1,不可能很高。這樣我們就可以大大降低判斷爬蟲的閥值,可以更加快速準確的識別和拒絕掉爬蟲。?

2、用時間窗口來改進實時反爬蟲系統?

爬蟲爬取網頁的頻率都是比較固定的,不像人去訪問網頁,中間的間隔時間比較無規則,所以我們可以給每個IP地址建立一個時間窗口,記錄IP地址最 近12次訪問時間,每記錄一次就滑動一次窗口,比較最近訪問時間和當前時間,如果間隔時間很長判斷不是爬蟲,清除時間窗口,如果間隔不長,就回溯計算指定 時間段的訪問頻率,如果訪問頻率超過閥值,就轉向驗證碼頁面讓用戶填寫驗證碼。?

最終這個實時反爬蟲系統就相當完善了,它可以很快的識別并且自動封鎖爬蟲的訪問,保護網站的正常訪問。不過有些爬蟲可能相當狡猾,它也許會通過大 量的爬蟲測試來試探出來你的訪問閥值,以低于閥值的爬取速度抓取你的網頁,因此我們還需要輔助第3種辦法,用日志來做后期的分析和識別,就算爬蟲爬的再 慢,它累計一天的爬取量也會超過你的閥值被你日志分析程序識別出來。?

總之我們綜合運用上面的四種反爬蟲策略,可以很大程度上緩解爬蟲對網站造成的負面影響,保證網站的正常訪問。

一、搜索引擎的蜘蛛,是不是爬得越多越好?

? ? ?當然不是!不論什么搜索引擎的爬蟲,來抓取你網站的頁面的時候,肯定在消耗你的網站資源,例如網站的連接數、網絡帶寬資源(空間流量)、服務器的負載。
另外,搜索引擎的爬蟲來抓取你的頁面數據后,它也不一定收用數據。只代表它“到此一游”留下痕跡而已。因此你的網站為它“服務過、接待過”。

? ? ?對于一個原創內容豐富,URL結構合理易于爬取的網站來說,簡直就是各種爬蟲的盤中大餐,很多網站的訪問流量構成當中,爬蟲帶來的流量要遠遠超過真實用戶訪問流量,甚至爬蟲流量要高出真實流量一個數量級。像提高網站有效利用率雖然設置了相當嚴格的反爬蟲策略,但是網站處理的動態請求數量仍然是真實用戶訪問流量的2倍。可以肯定的說,當今互聯網的網絡流量至少有2/3的流量爬蟲帶來的。因此反爬蟲是一個值得網站長期探索和解決的問題。

搜索引擎的主要工作流程(圖)

搜索引擎爬蟲對網站的負面影響。

1.網站有限的帶寬資源,而爬蟲的量過多,導致正常用戶訪問緩慢。
例如,原本虛擬主機主機的連接數受限,帶寬資源也是有限。這種情況搜索引擎爬蟲受影響呈現更明顯。

2.搜索引擎爬蟲過頻密,抓取掃描很多無效頁面。甚至抓頁面抓到服務器報502、500 、504 等服務器內部錯誤了,蜘蛛爬蟲還在不停使勁抓取。
不論是實際生產監控,還是網友反映,部分搜索引擎爬蟲可用幾個詞來形容“壞蜘蛛”“惡爬蟲”。很多討論搜索引擎相關的文章,已經將它們列過排行榜。有興趣的可更多了解它。

百度蜘蛛工作圖

3.與網站主題不相關的搜索引擎爬蟲消耗資源。
例如,典型的例子搜索引擎“一淘網蜘蛛(EtaoSpider)為一淘網抓取工具。”被各大電子商務購物網站屏蔽。拒絕一淘網抓取其商品信息及用戶產生的點評內容。被禁止的原因首先應該是它們之間沒有合作互利的關系,還有就是EtaoSpider爬蟲是一個抓取最瘋狂的蜘蛛。統計發現EtaoSpider爬蟲的一天爬行量比“百度蜘蛛:Baiduspider”“360蜘蛛:360Spider”“SOSO蜘蛛:Sosospider”等主流蜘蛛爬蟲多幾倍,并且是遠遠的多。重點是EtaoSpider被抓取只會消耗你的網站資源,它不會給你帶來訪問量,或者其它對你有利用的。中文成語詞典可用一個詞來形容,這個詞留給大家想吧。

4.一些搜索引擎開發程序員,它們寫的爬蟲程序在測試爬行。你懂的...

5.robots.txt文件不是萬能!
肯定有很多人認為,在robots.txt設置屏蔽搜索引擎爬蟲即可,或者允許某些特定的搜索引擎爬蟲,能達到你預想效果。
不錯正規的搜索引擎會遵守規則,且不會及時生效。實際中某些蜘蛛往往不是這樣的,先掃描抓取你的頁面,無視你的robots.txt。也可能它抓取后不一定留用;或者它只是統計信息,收集互聯網行業趨勢分析統計。

6.還有一種它們不是蜘蛛,但其有蜘蛛的特性。例如采集軟件,采集程序,網絡掃描e-mail地址的工具,各式各樣的SEO分析統計工具,千奇百怪的網站漏洞掃描工具,等等,只有你想不到的工具,沒有它做不到的...

二、有效指引搜索引擎對應的措施,及解決方法:

1.依據空間流量實際情況,就保留幾個常用的屏蔽掉其它蜘蛛以節省流量。以暫時空間流量還足夠使用,先保證正常瀏覽器優先。

2.從服務器防火墻iptable直接屏蔽蜘蛛IP段、詳細的IP。這是最直接、有效的屏蔽方法。

3.WWW服務器層面做限制。例如Nginx,Squid,Lighttpd,直接通過“http_user_agent”屏蔽搜索引擎爬蟲。

4.最后robots.txt文件做限制。搜索引擎國際規則還是要遵循規則的,讓robots.txt明示公布于眾。

后續文章會詳細介紹該方法,包括如果發現蜘蛛,從網站的日志里統計蜘蛛,發現未知的蜘蛛。針對不同的蜘蛛,屏蔽蜘蛛、禁止爬蟲怎么樣更高效,更快捷。并且通過實例來介紹。

象形圖示蜘蛛,爬蟲機器人(圖)

三、收集最新最準確各大搜索引擎蜘蛛名稱

信息來源線上:最新最準確

根據線上空間的訪問日志來整理常見的蜘蛛名稱,不求最全,但力求爬蟲信息資料最新最準確。以下搜索引擎蜘蛛名稱都是根據線上空間日志親手提取。
各種搜索引擎的蜘蛛爬蟲會不斷地訪問抓取我們站點的內容,也會消耗站點的一定流量,有時候就需要屏蔽某些蜘蛛訪問我們的站點。
其實有效常用的搜索引擎就那么幾個,只要在robots.txt文件里把常用的幾個搜索引擎蜘蛛允許放行就好了,其它的爬蟲統統通過通配符(*)禁止掉,屏蔽某些蜘蛛。

現況:

從網上獲取的搜索引擎蜘蛛名稱,幾乎都是原文復制粘貼的轉載又轉載的文章,而且很多的資料都是過期的了,這些舊資料根本就沒修正和更新(實際用處不大),并且關于蜘蛛名稱、大小寫眾說不一,根本就獲取不到一個準確無誤的資料信息。

最新最準確各大搜索引擎蜘蛛名稱:
1、百度蜘蛛:Baiduspider
網上的資料百度蜘蛛名稱有BaiduSpider、baiduspider等,都洗洗睡吧,那是舊黃歷了。百度蜘蛛最新名稱為Baiduspider。日志中還發現了Baiduspider-image這個百度旗下蜘蛛,查了下資料(其實直接看名字就可以了……),是抓取圖片的蜘蛛。
常見百度旗下同類型蜘蛛還有下面這些:Baiduspider-mobile(抓取wap)、Baiduspider-image(抓取圖片)、Baiduspider-video(抓取視頻)、Baiduspider-news(抓取新聞)。
注:以上百度蜘蛛目前常見的是Baiduspider和Baiduspider-image兩種。

2、谷歌蜘蛛:Googlebot
這個爭議較少,但也有說是GoogleBot的。谷歌蜘蛛最新名稱為“compatible; Googlebot/2.1;”。還發現了Googlebot-Mobile,看名字是抓取wap內容的。

3、360蜘蛛:360Spider,它是一個很“勤奮抓爬”的蜘蛛。

4、SOSO蜘蛛:Sosospider,也可為它頒一個“勤奮抓爬”獎的蜘蛛。

5、雅虎蜘蛛:“Yahoo! Slurp China”或者Yahoo!?
名稱中帶“Slurp”和空格,名稱有空格robots里名稱可以使用“Slurp”或者“Yahoo”單詞描述,不知道有效無效。

6、有道蜘蛛:YoudaoBot,YodaoBot(兩個名字都有,中文拼音少了個U字母讀音差別很大嘎,這都會少?)

7、搜狗蜘蛛:Sogou News Spider
搜狗蜘蛛還包括如下這些:Sogou web spider、Sogou inst spider、Sogou spider2、Sogou blog、Sogou News Spider、Sogou Orion spider,
(參考一些網站的robots文件,搜狗蜘蛛名稱可以用Sogou概括,無法驗證不知道有沒有效)

看看最權威的百度的robots.txt ,http://www.baidu.com/robots.txt 就為Sogou搜狗蜘蛛費了不少字節,占了一大塊領地。
“Sogou web spider;Sogou inst spider;Sogou spider2;Sogou blog;Sogou News Spider;Sogou Orion spider”目前6個,名稱都帶空格。

線上常見"Sogou web spider/4.0" ;"Sogou News Spider/4.0" ;"Sogou inst spider/4.0" 可以為它頒個“占名為王”獎。

8、MSN蜘蛛:msnbot,msnbot-media(只見到msnbot-media在狂爬……)

9、必應蜘蛛:bingbot?
線上(compatible; bingbot/2.0;)

10、一搜蜘蛛:YisouSpider

11、Alexa蜘蛛:ia_archiver

12、宜搜蜘蛛:EasouSpider

13、即刻蜘蛛:JikeSpider

14、一淘網蜘蛛:EtaoSpider
"Mozilla/5.0 (compatible; EtaoSpider/1.0; http://省略/EtaoSpider)"

根據上述蜘蛛中選擇幾個常用的允許抓取,其余的都可以通過robots屏蔽抓取。如果你暫時空間流量還足夠使用,等流量緊張了就保留幾個常用的屏蔽掉其它蜘蛛以節省流量。至于那些蜘蛛抓取對網站能帶來有利用的價值,網站的管理者眼睛是雪亮的。

另外還發現了如 YandexBot、AhrefsBot和ezooms.bot這些蜘蛛,據說這些蜘蛛國外噶,對中文網站用處很小。那不如就節省下資源。

小結:
這次分析了對搜索引擎爬蟲的危害,蜘蛛對網站的負面影響;如何有效指引搜索引擎對應的措施,及解決方法;收集來源線上最新最準確各大搜索引擎蜘蛛名稱。

?

網站建設好了,當然是希望網頁被搜索引擎收錄的越多越好,但有時候我們也會碰到網站不需要被搜索引擎收錄的情況。

比如,你要啟用一個新的域名做鏡像網站,主要用于PPC 的推廣,這個時候就要想辦法屏蔽搜索引擎蜘蛛抓取和索引我們鏡像網站的所有網頁。因為如果鏡像網站也被搜索引擎收錄的話,很有可能會影響官網在搜索引擎的權重,這肯定是我們不想看到的結果。

以下列舉了屏蔽主流搜索引擎爬蟲(蜘蛛)抓取/索引/收錄網頁的幾種思路。注意:是整站屏蔽,而且是盡可能的屏蔽掉所有主流搜索引擎的爬蟲(蜘蛛)。

1、通過 robots.txt 文件屏蔽

可以說 robots.txt 文件是最重要的一種渠道(能和搜索引擎建立直接對話)。我通過分析我自己博客的服務器日志文件,給出以下建議(同時歡迎網友補充):

User-agent: Baiduspider

Disallow: /

User-agent: Googlebot

Disallow: /

User-agent: Googlebot-Mobile

Disallow: /

User-agent: Googlebot-Image

Disallow:/

User-agent: Mediapartners-Google

Disallow: /

User-agent: Adsbot-Google

Disallow: /

User-agent:Feedfetcher-Google

Disallow: /

User-agent: Yahoo! Slurp

Disallow: /

User-agent: Yahoo! Slurp China

Disallow: /

User-agent: Yahoo!-AdCrawler

Disallow: /

User-agent: YoudaoBot

Disallow: /

User-agent: Sosospider

Disallow: /

User-agent: Sogou spider

Disallow: /

User-agent: Sogou web spider

Disallow: /

User-agent: MSNBot

Disallow: /

User-agent: ia_archiver

Disallow: /

User-agent: Tomato Bot

Disallow: /

User-agent: *

Disallow: /

2、通過 meta tag 屏蔽

在所有的網頁頭部文件添加,添加如下語句:

<meta name="robots" content="noindex, nofollow">

3、通過服務器(如:Linux/nginx )配置文件設置

直接過濾 spider/robots 的IP 段。

小注:第1招和第2招只對“君子”有效,防止“小人”要用到第3招(“君子”和“小人”分別泛指指遵守與不遵守 robots.txt 協議的 spider/robots),所以網站上線之后要不斷跟蹤分析日志,篩選出這些 badbot 的ip,然后屏蔽之。

這里有一個badbot ip 數據庫:http://www.spam-whackers.com/bad.bots.htm

4、通過搜索引擎提供的站長工具,刪除網頁快照

比如,有的時候百度不嚴格遵守 robots.txt 協議,可以通過百度提供的“網頁投訴”入口刪除網頁快照。百度網頁投訴中心:http://tousu.baidu.com/webmaster/add

如下圖是我的一個網頁投訴:

大概3天左右的時間過去,這個網頁的百度快照也被刪除,說明此種方法也能起效,當然這是不得而為之,屬于亡羊補牢。

5、補充更新

可以通過檢測 HTTP_USER_AGENT 是否為爬蟲/蜘蛛訪問,然后直接返回403 狀態碼屏蔽之。比如:由于api 權限與微博信息隱私保護原因,Xweibo 2.0 版本后禁止搜索引擎收錄。

關于如何屏蔽搜索引擎爬蟲(蜘蛛)抓取/索引/收錄網頁,您有其他什么更好的建議或者方法,也歡迎發表評論!期待與您交流。

本文作者:Bruce

原文地址:http://www.wuzhisong.com/blog/67/

?

首先,我來介紹一下什么是robots.txt:robots.txt是搜索引擎中訪問網站的時候要查 看的第一個文件。Robots.txt文件告訴蜘蛛程序在服務器上什么文件是可以被查看的。當一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是 否存在robots.txt,如果存在,搜索機器人就會按照該文件中的內容來確定訪問的范圍;如果該文件不存在,所有的搜索蜘蛛將能夠訪問網站上所有沒有 被口令保護的頁面。最后,robots.txt必須放置在一個站點的根目錄下。?

大家可以參考一下谷歌、百度和騰訊的robots寫法:?

http://www.google.com/robots.txt?

http://www.baidu.com/robots.txt?

http://www.qq.com/robots.txt?

大家了解完robots.txt后,那么我們可以用robots.txt來做什么??

1、用robots.txt屏蔽相似度高的頁面或沒內容的頁面。?

我們知道,搜索引擎收錄網頁后,會對網頁進行“審核”,而當兩個網頁的相似度很高時,那么搜索引擎就會刪除掉其中一個,并且會降低一點你網站的得分。?

假設以下這兩個鏈接,內容其實差不多,那么第一個鏈接就應該屏蔽掉。?

/XXX?123?

/123.html?

像第一個的鏈接這樣的鏈接非常多,那么我們要怎么屏蔽呢?其實只要屏蔽/XXX?就可以屏蔽所有的鏈接了。?

代碼如下:?

Disallow: /XXX??

同理,一些沒有內容的頁面我們也可以利用相同的辦法將其屏蔽掉。?

2、用robots.txt屏蔽多余的鏈接,一般保留靜態的鏈接(既HTML、htm、shtml等)。?

由于網站中經常會出現多個鏈接指向同一個頁面的情況,而這樣會讓搜索引擎對網站的友好度降低。為了避免這一個情況,我們就可以通過robots.txt把 非主要的鏈接去掉。

比如以下兩個鏈接指向同樣的頁面:?

/OOO?123?

/123.html?

那么我們就應該去掉第一個垃圾,代碼如下:?

Disallow: /OOO?123?

3、用robots.txt屏蔽死鏈?

死鏈就是曾經存在的網頁,因為改版或其他原因而失去效用后就變成死鏈,也就是說看似一個正常的網頁鏈接,但點擊后不能打開相對應的網頁頁面。?

比如,原來在目錄為/seo下的所有鏈接,因為目錄地址的改變,現在都變成死鏈接了,那么我們可以用robots.txt把他屏蔽掉,代碼如下:?

Disallow: /seo/?

4、告訴搜索引擎你的sitemap.xml地址?

利用robots.txt可以告訴搜索引擎你sitemap.xml文件的地址,而不需要在網站上添加sitemap.xml的鏈接。具體代碼如下:?

Sitemap: 你的sitemap地址?

以上就是robots.txt的基本用法,一個好的網站必定會有一個好的robots.txt,因為robots.txt是搜索引擎了解你網站的一 個途徑。另外在這里我推薦一下一個比較適合wordpress用戶使用的robots.txt寫法:?

User-agent: *?

Disallow: /wp-?

Disallow: /feed/?

Disallow: /comments/feed?

Disallow: /trackback/?

Sitemap: http://rainjer.com/sitemap.xml?

最后,如果你覺得上面所說的還不能滿足你的需要,那么你可以在谷歌或百度官方提供的robots.txt使用指南學習:?

百度:http://www.baidu.com/search/robots.html?

谷歌:http://www.google.com/support/forum/p/webmasters/thread?tid=4dbbe5f3cd2f6a13&hl=zh-CN

總結

以上是生活随笔為你收集整理的如何避免搜索引擎爬虫产生的流量过大以及搜索引擎设置优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。