浏览网页访客和搜索引擎爬虫不同的Agent 内容

来源:互联网 发布:广州多益网络老板 编辑:程序博客网 时间:2024/06/05 10:41

一般来说, 网站的首页是搜索引擎访问最多的页面, 应该尽可能的向它们展示有意义的内容, 但是要以列表的形式显示文章的话, 访客和搜索引擎只能获取到文章标题信息. 文章内容或者摘要 (尤其是文章的第一句) 对于 SEO 来说是极其重要的, 所以我们要设法向爬虫发送这些内容.


好, 我们可以通过 User Agent 来判断访问者是否为爬虫, 如果是, 则以一般形式显示文章, 否则以列表形式显示文章列表. 可以用以下的 PHP 方法判断是否为爬虫:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 function is_crawler() {
 $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
 $spiders = array(
  'Googlebot', // Google 爬虫
  'Baiduspider', // 百度爬虫
  'Yahoo! Slurp', // 雅虎爬虫
  'YodaoBot', // 有道爬虫
  'msnbot', // Bing爬虫
  'Sogou', // 搜狗爬虫
  ' iaskspider', // 新浪爱问爬虫

 'Mediapartners', // Google AdSense广告内容匹配爬虫

'QihooBot', // 北大天网的搜索引擎爬虫

'Gigabot', // Gigabot搜索引擎爬虫


  // 更多爬虫关键字
 );
 foreach ($spiders as $spider) {
  $spider = strtolower($spider);
  if (strpos($userAgent, $spider) !== false) {
   return true;
  }
 }
 return false;
}

这是我使用的方法, 各爬虫以访问评论由高到低进行排序. 然后通过下面的的方法向爬虫和自然人显示不同的内容:

1
2
3
4
5
 <?php if(is_crawler()) {
 // 向搜索引擎显示的内容
} else {
 // 向自然人显示的内容
} ?> 


相信不少网站对搜索引擎爬虫都是又爱又恨,因为其中不仅有些爬虫不守规矩,还有人冒充爬虫对网站进行疯狂的扫描。 

做的比较好的爬虫抓取频率都比较合理,对网站资源消耗比较少,Google Spider会根据网页的下载速度等因素进行抓取速度的动态调整,你可以通过Webmaster Tools来调整Spider的抓取速度。 

Google_Webmaster_Tools_Settings 

很多糟糕的网络爬虫,经常并发几十上百个请求循环重复抓取。一个“爬虫”先是将PageNo递增到无穷大——被封,过了4个小时,“爬虫”又回来了,这次程序倒是改进了不少,通过分析网页内部的链接进行抓取,可是没过多久发现总是抓取那几个特定的页面,原来被网页内部链接套住,程序进入了死循环,只能封杀。 

网上也出现了很多如何封杀恶意爬虫的方法。常见的就是根据UserAgent中的标识进行识别封杀,但是道高一尺魔高一丈,接下来就有人伪造User-Agent,伪装成各大搜索引擎的爬虫进行抓取。 

目前的做法是根据UserAgent进行判断,如果是真正的搜索引擎爬虫,那么就放过;如果发现是伪造的就坚决封杀。剩余的正常UserAgent的访问则通过限制IP并发请求次数来限制。 

那么问题就出现了,如何才能正确识别搜索引擎爬虫的真伪,其实一些大型的搜索引擎商都已经提供了相关的方法,那就是反向DNS验证(Reverse DNS Lookup)。 

拿baidu Spider举个例子: 

您可以使用host ip命令反解ip来判断Baiduspider的抓取是否冒充。Baiduspider的hostname以*.baidu.com的格式命名,非*.baidu.com即为冒充。 

$ host 123.125.66.120 
120.66.125.123.in-addr.arpa domain name pointer baiduspider-123-125-66-120.crawl.baidu.com. 

------------------------------------------------------------------------- 
Google:http://www.google.com/support/webmasters/bin/answer.py?answer=80553 

Yahoo:http://www.ysearchblog.com/2007/06/05/yahoo-search-crawler-slurp-has-a-new-address-and-signature-card/ 

Bing(MSN):http://cn.bing.com/community/blogs/search/archive/2006/11/29/search-robots-in-disguise.aspx 

可喜可贺的是baidu的2个月前爬虫也开始遵守这一“潜规则”,虽然没有在任何网页公开此消息,但经过测试,实际上是可行的。 

自:http://ryee.javaeye.com/blog/600861

另外在window 系统中进行Reverse DNS Lookup 方法是 cmd.exe ping -a ip地址 
如:

D:\Documents and Settings\Administrator>ping -a 123.125.71.114
 
Pinging baiduspider-123-125-71-114.crawl.baidu.com [123.125.71.114] with 32 bytes of data:


或者
 
D:\Documents and Settings\Administrator>nslookup 123.125.71.114
*** Can't find server name for address 218.104.78.2: Non-existent domain
*** Can't find server name for address 58.242.2.2: Non-existent domain
*** Default servers are not available
Server:  UnKnown
Address:  218.104.78.2
 
Name:    baiduspider-123-125-71-114.crawl.baidu.com
Address:  123.125.71.114

落伍访问的时候竟然判断USERAGENT 不知道算不算作弊,前段时间访问落伍发现的,用百度快照能看到内容,所以猜测是USERAGENT判断的 想 到MAXTHON一直用着百度SPIDER的USERANGET 访问,所以试下了 可以 ,后来 MAXTHON更新了。。设置去掉了。忘了 改什么了。专门收集下来所以蜘蛛的USERANGET

Baiduspider+(+http://www.baidu.com/search/spider.htm”)
百度爬虫
高强度爬虫,有时会从多个IP地址启动多个爬虫程序!
由于算法问题,百度爬虫对相同页面会多次发出请求(尤其是首页),令人烦恼。
推广效果好。

Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html”)
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp”)
雅虎爬虫,分别是雅虎中国和美国总部的爬虫
高强度爬虫,有时会从多个IP地址启动多个爬虫程序!
比较规范的爬虫,看参考其网址,设定爬虫访问间隔。(但需要考虑同时出现多个yahoo爬虫)
推广效果尚可。

iaskspider/2.0(+http://iask.com/help/help_index.html”)
Mozilla/5.0 (compatible; iaskspider/1.0; MSIE 6.0)
新浪爱问爬虫
算法差,大量扫描无实际意义的页面,对动态链接网站负担很大
推广效果差。

Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
Sogou Push Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
【早期用法:“sogou spider”】
搜狗爬虫
算法差,大量扫描无实际意义的页面,对动态链接网站负担很大
推广效果差。

[编辑]
中等强度爬虫程序

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html”)
Google爬虫
算法优秀,多为访问有实际内容的页面
推广效果好。 → 详情

Mediapartners-Google/2.1
Google AdSense广告内容匹配爬虫,对网页收录有一定辅助作用。→ 详情

Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/”; )
【早期采用“ OutfoxBot/0.5 (for internet experiments; http://”; outfoxbot@gmail.com)”】
网易爬虫
其搜索算法需要改进
推广效果差。

ia_archiver
Alexa排名爬虫,用于检测网站是否做了alexa排名的作弊。→ 详情

Mozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html”)
美国斯坦福大学的一个学生研究项目。→ 详情

[编辑]
其他搜索引擎的爬虫

msnbot/1.0 (+http://search.msn.com/msnbot.htm”)
MSN爬虫
特点未知

msnbot-media/1.0 (+http://search.msn.com/msnbot.htm”)
(欢迎补充资料)
特点未知

Mozilla/4.0(compatible; MSIE 5.0; Windows 98; DigExt)
DigExt并非一个独立的爬虫程序,而是IE5的“允许脱机阅读”模式标记。→ 详情

Mozilla/3.0 (compatible; Indy Library)
Indy Library本来是个开源程序库,但後来被spam bots冒用。→ 详情
抓取强度:各服务器上不一定
推广效果:无

P.Arthur 1.1
据称为北大天网的搜索引擎爬虫程序

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QihooBot 1.0)
名字上看来是Qihoo的
特点未知

Gigabot
Gigabot/2.0 (http://www.gigablast.com/spider.html”)
Gigabot搜索引擎爬虫。已被google收购?(欢迎补充资料)

eApolloBot/1.0 (eApollo search engine robot; http://www.eapollo.com”; eapollo at global-opto dot com)

lanshanbot/1.0
据说是中搜爬虫。(欢迎补充资料)

iearthworm/1.0, iearthworm@yahoo.com.cn
专抓图片的爬虫,据说来源IP是3721或阿里巴巴。→ 详情

TMCrawler

Mozilla/5.0 (compatible; heritrix/1.10.2 +http://i.stanford.edu/”)
开源的网络爬虫,一个数字图书馆项目。→ 详情

WebNews http.pl

[编辑]
RSS扫描器

\rss.asp Mozilla/6.0 (MSIE 6.0; Windows NT 5.1;Foxmail/MILOWU)
这是用foxmail6.0订阅了你的rss

\rss.asp Feedfetcher-Google; (+http://www.google.com/feedfetcher.html”)
google的rss搜索扫描器

\rss.asp feedsky_spider http://www.feedsky.com”
一款rss扫描器,有兴趣者进入此网站添加您的rss

0 0
原创粉丝点击