匿名用户支持vs Google bot

时间:2010-05-12 17:29:52

标签: authentication googlebot

我的网络应用中有一个User类,代表当前登录的用户。 每次用户访问页面时,都会根据Cookie中提供的身份验证数据填充User实例。

即使匿名用户登录,也会创建User实例 - 并在数据库的User表中创建相应的新记录。

这种方法允许我为当前用户保存一些状态信息,无论其类型如何。

然而,这种方法的问题是谷歌机器人,以及其他非人类网络生物爬行我的网页。每次机器人开始在网站上走动时,数据库中都会创建数千个无用的记录,每个记录只用于一个页面。

问题:什么是最好的权衡?如何支持匿名用户,保存他们的状态,并且由于无cookie机器人而不会得到太多开销?

2 个答案:

答案 0 :(得分:0)

我认为这里最好的策略是为机器人手动添加“例外”。你可能会做两个中的任何一个:

一个。不要为机器人创建用户对象(如果您的应用程序允许正常流程,这是最好的事情) B.为bot创建一个User对象,并在每次尝试加载页面时使用它。

答案 1 :(得分:0)

通常可以检查请求的User Agent标头,它包括YahooSlurp或GoogleBot或SomeOtherTypeOfBot等内容。

如果你正在使用.NET,那么Page.Request.Browser.Crawler中有一个属性应该表明它是否是一个机器人。我不确定它是否/如何在其他平台中表示

请注意,虽然有些抓取工具倾向于隐藏它们是爬虫的事实(我最近看到MSN这样做了),只是发送一个看起来像常规浏览器的用户代理字段,所以你要必须按IP范围过滤那些,但这只是成为一个游戏,所以你最终可能只是与这些案件一起生活。