2014-01-20 3 views
1

Я пытаюсь ограничить доступ к sitemap.xml только если это доступ к Google со следующим кодом:Разрешить Google просматривать файл sitemap.xml?

reverse_dns = Resolv.getname(request.remote_ip) 
throw_404 unless reverse_dns.include?("goog") || reverse_dns.include?("localhost") 

Но это терпит неудачу, если нет имени хоста адрес IP. Например:

Resolv::ResolvError: no name for 64.233.191.255

который является IP-адрес Google бот.

Любая идея о том, как это сделать и как это делает Stackoverflow (Stackexchange также ограничивает его sitemap.xml и Google).

ответ

1

Вместо использования обратного DNS используйте whois - поскольку некоторые из ip-адресов Google даже не имеют установки обратных записей DNS.

Так что полный WHOIS на IP вместо использования 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 и т. Д.).

Смежные вопросы