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

允许搜索机器人在没有会话ID的情况下爬网您的站点

  •  7
  • kenwarner  · 技术社区  · 15 年前

    Webmaster guidelines 状态

    允许搜索机器人在没有会话ID或参数的情况下爬网您的站点,这些会话ID或参数跟踪它们在站点中的路径。这些技术对于跟踪单个用户的行为非常有用,但是机器人的访问模式完全不同。使用这些技术可能会导致站点索引不完整,因为机器人程序可能无法消除看起来不同但实际上指向同一页面的URL。

    this approach ). 我担心允许非会话跟踪通信会破坏我现有的代码或引入安全漏洞。

    允许非会话跟踪的机器人爬网正常会话跟踪的站点有哪些最佳实践?除了检查用户代理(我不希望人们冒充谷歌机器人来绕过我的会话跟踪)之外,还有什么方法可以检测搜索机器人吗?

    4 回复  |  直到 15 年前
        1
  •  4
  •   Brian    15 年前

    检测机器人的正确方法是通过主机条目( Dns.GetHostEntry ). 有些跛脚机器人要求你按ip地址跟踪,但流行的机器人通常不这样做。Googlebot请求来自*.Googlebot.com。在获得主机条目后,应在 IPHostEntry.AddressList

    甚至不要

    另见 http://googlewebmastercentral.blogspot.com/2006/09/how-to-verify-googlebot.html

        2
  •  1
  •   sfussenegger    15 年前

    首先:简单地从已知搜索引擎的响应中剥离JSessionID,我们遇到了一些问题。最值得注意的是,为每个请求创建一个新会话会导致OutOfMemoryErrors(当您不使用Java时,为数千个活动会话保持状态对于大多数或所有服务器/框架来说肯定是个问题)。这可以通过减少会话超时来解决(如果可能,仅适用于bot会话)。所以,如果你想走这条路,就要得到警告。如果您这样做了,就不需要进行DNS查找。你在这里没有保护任何有价值的东西(与 Google's First Click Free 例如)。如果有人假装是机器人,通常情况下应该没问题。

    相反,我建议继续跟踪会话(使用URL参数作为cookie的后备方案)并添加 canonical link tag <link rel="canonical" href="..." /> ,显然没有会话id本身)添加到每个页面。见“ Make Google Ignore JSESSIONID extensive video featuring Matt Cutts 供讨论。添加这个标签不是很麻烦,而且可能被认为是良好的实践。因此,基本上你将结束没有任何专门处理搜索引擎蜘蛛-这当然是一件好事(tm)。

        3
  •  0
  •   VladV    15 年前

    我认为,你处理这个问题的方法不太正确。您不应该依赖会话跟踪机制来决定访问权限、记录恶意用户、检测机器人等。

    1. 如果不希望任意用户访问某些页面,则应使用身份验证和授权。如果允许任意用户访问该页面,则应允许他们在没有任何会话ID的情况下访问该页面(就好像这是他们访问的第一个页面一样)-因此,机器人程序也将能够在没有任何问题的情况下访问这些页面。

        4
  •  0
  •   Alan Plum    15 年前

    如果欺骗是你的主要顾虑,那么你的安全性就错了。你不应该给机器人比用户更多的权限,恰恰相反(这就是为什么用户可以登录,机器人可以访问) robots.txt ).

    如果你打算在没有身份验证的情况下给某人特权,那么它天生就有可能被欺骗。IP可以被欺骗。服务器-客户端通信可能被欺骗。等等

    如果您依赖跟踪cookies来分析恶意行为,则需要修复该问题。在不要求恶意用户识别他/她自己的情况下,应该很容易获得良好的理解。