只允许Google查看sitemap.xml?

时间:2014-01-20 02:08:39

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我正在尝试限制sitemap.xml的访问权限,前提是Google使用以下代码访问reverse_dns = Resolv.getname(request.remote_ip) throw_404 unless reverse_dns.include?("goog") || reverse_dns.include?("localhost")

Resolv::ResolvError: no name for 64.233.191.255

但是如果没有ip地址的主机名,它就会失败。例如:

{{1}}

这是一个google bot ip地址。

如何实现这一点或Stackoverflow如何做到这一点(Stackexchange也将它的sitemap.xml限制为Google)。

1 个答案:

答案 0 :(得分:1)

不使用反向DNS,而是使用whois - 因为某些Google的ip甚至没有设置反向DNS记录。

所以在ip上使用whois gem:

进行完整的whois

gem "whois"

whois = Whois.whois(request.remote_ip).parts[0]['body']
throw_404 unless whois.include?("google") || whois.include?("IANA Special Use")

IANA Special Use通常是在您查询本地网络IP地址(127.0.0.1或10.0.1.1等)时。