代码之家  ›  专栏  ›  技术社区  ›  Andy

匿名用户支持与谷歌机器人

  •  0
  • Andy  · 技术社区  · 16 年前

    我有一个 User 类,该类表示当前登录的用户。 每次用户浏览一个页面时, 用户 实例是根据cookie中提供的身份验证数据填充的。

    一 用户 即使匿名用户登录,也会创建实例-并且在 用户 数据库中的表。

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

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

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

    2 回复  |  直到 16 年前
        1
  •  0
  •   Juriy    16 年前

    我认为这里最好的策略是手动添加机器人程序的“例外”。您可以执行以下两种操作之一:

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

        2
  •  0
  •   Mike Mooney    16 年前

    通常,可以检查请求的用户代理头,它将包括yahooslurp、googlebot或其他类型的bot。

    如果您使用的是.NET,那么page.request.browser.crawler中有一个属性应该指示它是否是bot。我不确定这是否在其他平台上体现

    尽管有些爬虫有隐藏他们是爬虫的倾向(我最近看到过msn这样做),但只需发送一个看起来像普通浏览器的用户代理字段,所以你必须按IP范围过滤这些字段,但这就变成了一个whackamole游戏,所以你可能会以j结尾。必须忍受这些情况。