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

本文介绍如何通过PHP的User Agent判断访问者是搜索引擎爬虫还是普通用户,以便向爬虫提供详细内容以优化SEO,同时对用户展示简洁列表。列举了常见爬虫名称,并讨论了如何识别和应对不规范的爬虫行为,包括使用反向DNS验证确认爬虫真伪。
摘要由CSDN通过智能技术生成

一般来说, 网站的首页是搜索引擎访问最多的页面, 应该尽可能的向它们展示有意义的内容, 但是要以列表的形式显示文章的话, 访客和搜索引擎只能获取到文章标题信息. 文章内容或者摘要 (尤其是文章的第一句) 对于 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举个例子&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值