检测受信任蜘蛛并且不重定向它们的可接受方法

时间:2012-09-03 16:13:43

标签: web-crawler

我已经实现了单点登录功能,可以将用户重定向到另一个域并重新返回。当然,我不希望重定向搜索引擎(我们至少关心的那些),那么什么是可接受的解决方案呢?

这是我在PHP中找到的一个

$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (strpos($agent, "bot") ||
    strpos($agent, "slurp") ||
    strpos($agent, "crawl") ||
    strpos($agent, "google") ||
    strpos($agent, "teoma") ||
    strpos($agent, "spider") ||
    strpos($agent, "feed") ||
    strpos($agent, "index")) {
  return null;
}

也许最佳解决方案实际上是检测并仅重定向真实用户

2 个答案:

答案 0 :(得分:1)

最好检查用户代理字符串中是否存在渲染引擎,例如Gecko / AppleWebKit / Opera / Trident /,因为大多数抓取工具都不包含此字符串。这样,您只会重定向浏览器。

答案 1 :(得分:0)

我的结论是,这是识别最受信任和主流的蜘蛛/爬虫的可接受方式。如果用户在其用户代理字符串中具有上述任何一项,则他们或者是蜘蛛,或者假装是一个蜘蛛。

当然会有蜘蛛/抓取工具在其用户代理字符串中不包含上述内容,并且不会检测到它们。如果这对您很重要,那么请不要使用此方法,而是寻求替代且定期更新的解决方案,这可能会利用IP地址查找