Sha256: 22f2eabb9a11e094f3078efdd59e36d38214ab106fb5fcb0bf93dc0aea9b42e4
Contents?: true
Size: 1.07 KB
Versions: 21
Compression:
Stored size: 1.07 KB
Contents
#:stopdoc: module RailsConnector module GooglebotChecker require 'socket' protected def referer_is_google? return true if request.headers['Referer'] =~ /google/ end def is_genuine_googlebot?(ip_address) if ip_address =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ host = reverse_dns_lookup_for_ip(ip_address) return false unless host =~ /googlebot.com$/ res = forward_dns_matcher(host, ip_address) return res else return false end end private def reverse_dns_lookup_for_ip(ip_address) begin addr = Socket.gethostbyname(ip_address) Socket.gethostbyaddr(addr[3],Socket::AF_INET)[0] rescue [] end end def forward_dns_matcher(host, ip_address) begin lookup = Socket.getaddrinfo(host, 0, Socket::AF_INET, Socket::SOCK_STREAM, nil, Socket::AI_CANONNAME) return true if lookup.collect {|info| info[3]}.uniq.include?(ip_address) rescue false end false end end end
Version data entries
21 entries across 21 versions & 1 rubygems
Version | Path |
---|---|
infopark_rails_connector-6.8.0.beta.200.621.4c8e1b0 | lib/rails_connector/googlebot_checker.rb |