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