我有一些地理定位的代码,如果网站被机器人(如Google等)抓取,我希望它能以特定的方式运行。
有没有办法推断出这一点?
您可以通过检查用户代理或IP来实现。使用后者可能更可取,因为其他不那么信誉良好的机器人有时会伪造大公司的用户代理。即使对于Google等他们的IP也往往在狭窄的范围内,因此检测IP不应需要编译庞大的列表。
您可以通过用户代理属性来检查此内容。有关用户代理字符串的更多信息,请在此处查看:http://www.user-agents.org/ 将类型为“R =机器人、爬虫、蜘蛛”的记录标记。但这并不是百分之百可靠的,因为用户代理属性可能会受到多种因素的影响而发生变化。
如果您只对良好设置的知名机器人感兴趣,例如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。