我的网络应用中有一个User
类,代表当前登录的用户。
每次用户访问页面时,都会根据Cookie中提供的身份验证数据填充User
实例。
即使匿名用户登录,也会创建User
实例 - 并在数据库的User
表中创建相应的新记录。
这种方法允许我为当前用户保存一些状态信息,无论其类型如何。
然而,这种方法的问题是谷歌机器人,以及其他非人类网络生物爬行我的网页。每次机器人开始在网站上走动时,数据库中都会创建数千个无用的记录,每个记录只用于一个页面。
问题:什么是最好的权衡?如何支持匿名用户,保存他们的状态,并且由于无cookie机器人而不会得到太多开销?
答案 0 :(得分:0)
我认为这里最好的策略是为机器人手动添加“例外”。你可能会做两个中的任何一个:
一个。不要为机器人创建用户对象(如果您的应用程序允许正常流程,这是最好的事情) B.为bot创建一个User对象,并在每次尝试加载页面时使用它。
答案 1 :(得分:0)
通常可以检查请求的User Agent标头,它包括YahooSlurp或GoogleBot或SomeOtherTypeOfBot等内容。
如果你正在使用.NET,那么Page.Request.Browser.Crawler中有一个属性应该表明它是否是一个机器人。我不确定它是否/如何在其他平台中表示
请注意,虽然有些抓取工具倾向于隐藏它们是爬虫的事实(我最近看到MSN这样做了),只是发送一个看起来像常规浏览器的用户代理字段,所以你要必须按IP范围过滤那些,但这只是成为一个游戏,所以你最终可能只是与这些案件一起生活。