0

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

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

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

然而,这种方法的问题在于 Google 机器人和其他非人类网络生物正在爬取我的页面。每次机器人开始在网站上四处走动时,都会在数据库中创建数千条无用的记录,每条记录仅用于单个页面。

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

4

2 回答 2

0

通常可以检查请求的用户代理标头,它将包括 YahooSlurp 或 GoogleBot 或 SomeOtherTypeOfBot 之类的内容。

如果您使用的是 .NET,Page.Request.Browser.Crawler 中有一个属性应该指示它是否是机器人。我不确定这是否/如何在其他平台上表示

请注意,尽管一些爬虫倾向于隐藏它们是爬虫的事实(我最近看到 MSN 这样做),并且只发送一个看起来像普通浏览器的用户代理字段,所以你必须过滤那些按 IP 范围划分的,但这只是一场恶作剧游戏,所以你最终可能只是忍受这些情况。

于 2010-05-12T18:02:42.967 回答
0

我认为这里最好的策略是手动为机器人添加“例外”。您可以执行以下两项中的任何一项:

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

于 2010-05-12T17:35:06.477 回答