检测您的网站是否被机器人访问

3

我有一些地理定位的代码,如果网站被机器人(如Google等)抓取,我希望它能以特定的方式运行。

有没有办法推断出这一点?

4个回答

5
呈现不同的内容给搜索引擎爬虫和人类访客 - 称为cloaking - 是一件冒险的事情,如果被检测到,可能会受到搜索引擎的惩罚。
话虽如此,请查看这个SO答案,其中包含多个链接到维护良好的“机器人列表”。您需要解析USER_AGENT字符串并将其与这样的机器人列表进行比较。

2

您可以通过检查用户代理或IP来实现。使用后者可能更可取,因为其他不那么信誉良好的机器人有时会伪造大公司的用户代理。即使对于Google等他们的IP也往往在狭窄的范围内,因此检测IP不应需要编译庞大的列表。


1

您可以通过用户代理属性来检查此内容。有关用户代理字符串的更多信息,请在此处查看:http://www.user-agents.org/ 将类型为“R =机器人、爬虫、蜘蛛”的记录标记。但这并不是百分之百可靠的,因为用户代理属性可能会受到多种因素的影响而发生变化。


1

如果您只对良好设置的知名机器人感兴趣,例如Google、Yahoo、MSN/Live/Bing/等等,那么您可以使用往返DNS检查。

1)检查已知用户代理(查找已知子字符串,如googlebot)
例如:Mozilla/5.0 (compatible; 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可能被伪造,因此现在检查步骤2返回的结果的A记录的DNS,并确保您拥有原始请求IP。
例如:上述的DNS为
crawl-66-249-71-202.googlebot.com. A 66.249.71.202

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接