`

如何区分访问者是访客还是爬虫-转

    博客分类:
  • php
阅读更多

为了提高网页的用户体验, 我们经常会做一些对搜索引擎不太友好的事情, 但某些情况下这并不是无法挽回的, 可以通过向自然人和搜索引擎机器人显示不同的内容来提供好的用户体验和 SEO.

听说本方法会触犯搜索引擎的一些操作原则, 有可能被被各搜索引擎处罚, 甚至删除网站. 所以我刚刚已经撤下这样的处理, 直到确定. 有魄力的朋友可以继续使用, 但后果自负. :(

本博客的首页和存档页面以列表的形式显示文章, 在访客点击展开文章时才加载文章的内容. 因为文章的内容部分包含了大量的文字和图片, 需要大量的加载时间和流量. 尽快地向访客展示网页可以挽留大量的来访者. 而对于手机用户来说, 加载时间和流量则更为重要.

一般来说, 网站的首页是搜索引擎访问最多的页面, 应该尽可能的向它们展示有意义的内容, 但是要以列表的形式显示文章的话, 访客和搜索引擎只能获取到文章标题信息. 文章内容或者摘要 (尤其是文章的第一句) 对于 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爬虫
		// 更多爬虫关键字
	);
	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 {
	// 向自然人显示的内容
} ?>

细心的朋友可能已经发现本站的首页显示和搜索引擎中的快照有点不一样. 是的, 要的就是这种效果.

PHP 处理方法上文已经提及, 其他语言处理相仿...

 

原文链接:http://www.neoease.com/show-diff-between-crawlers-and-guests/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics