我正在尝试限制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)。
答案 0 :(得分:1)
不使用反向DNS,而是使用whois - 因为某些Google的ip甚至没有设置反向DNS记录。
所以在ip上使用whois
gem:
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等)时。