检测机器人是否正在访问您的站点

时间:2010-02-15 17:09:19

标签: asp.net seo

我有一些地理定位代码,如果网站被机器人抓住,我希望以特定的方式行事,例如谷歌等。

有没有办法推断出来?

4 个答案:

答案 0 :(得分:5)

向搜索引擎抓取工具和人类访问者展示不同的内容 - 称为cloaking - 是一件冒险的事情,如果检测到,可能会受到搜索引擎的惩罚。

也就是说,查看this SO answer,其中包含一些维护良好的“机器人列表”的链接。您必须解析USER_AGENT字符串并将其与此类机器人列表进行比较。

答案 1 :(得分:2)

您可以通过检查用户代理或IP来执行此操作。 可能优先使用后者,因为其他不那么有信誉的机器人并不知道欺骗大家伙的用户代理。即使对谷歌等人而言,他们的IP往往处于狭窄的范围内,因此对IP的检测不应该要求编制大量的列表。

答案 2 :(得分:1)

您可以通过user-agent属性进行检查。有关用户代理字符串的更多信息,请在此处查看:http://www.user-agents.org/标记类型为“R = Robot,crawler,spider”的记录。位不保证,用户代理属性可能会因多种因素而发生变化,这不是100%可靠。

答案 3 :(得分:1)

如果您只对设置良好的信誉良好的机器人感兴趣,例如谷歌,雅虎,MSN / Live / Bing /今天是什么,请问等等你可以使用往返DNS检查。

1)检查已知的用户代理(查找已知的子字符串,如googlebot)
例如Mozilla / 5.0(兼容; Googlebot / 2.1; + http://www.google.com/bot.html

2)为请求IP执行反向DNS并检查它是否来自合理的域 例如66.249.71.202的rdns是crawl-66-249-71-202.googlebot.com(非常高兴它来自googlebot.com)

3)在它自己的第2步可以伪造,所以现在检查A记录的dns以获得在步骤2中返回的结果,并确保你有原始的请求IP。
例如上面的dns是
crawl-66-249-71-202.googlebot.com。 A 66.249.71.202

66.249.71.202是请求的IP地址,因此这是一个有效的googlebot。