【发布时间】:2010-02-15 17:09:18
【问题描述】:
我有一些地理定位代码,如果网站被机器人(例如谷歌等
有什么办法可以推断出来吗?
【问题讨论】:
我有一些地理定位代码,如果网站被机器人(例如谷歌等
有什么办法可以推断出来吗?
【问题讨论】:
向搜索引擎爬虫和人类访问者呈现不同的内容 - 称为 cloaking - 是一件有风险的事情,如果检测到,可能会受到搜索引擎的惩罚。
也就是说,请查看this SO answer,其中包含几个指向维护良好的“机器人列表”的链接。您必须解析 USER_AGENT 字符串并将其与此类机器人列表进行比较。
【讨论】:
您可以通过检查用户代理或 IP 来做到这一点。 可能最好使用后者,因为其他不太知名的机器人并不知道欺骗大人物的用户代理。即使对于 google 等,他们的 IP 也往往在狭窄的范围内,因此在 IP 上检测不应该需要编译大量列表。
【讨论】:
您可以通过 user-agent 属性进行检查。有关用户代理字符串的更多信息,请在此处查看:http://www.user-agents.org/ 使用类型“R = Robot, crawler, spider”标记记录。位这不能保证,用户代理属性可能会因几个因素而变化,这不是 100% 可靠的。
【讨论】:
如果您只对设置良好且信誉良好的机器人感兴趣,例如Google、Yahoo、MSN/Live/Bing/whatever-it-is-today、Ask 等,然后您可以使用往返 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。 66.249.71.202
66.249.71.202 是请求 IP 地址,因此这是一个有效的 googlebot。
【讨论】: