Sha256: cbece4c51289c7f709e3ecaa8f2763683063fc0b8abb67ba40c306b6bdf4c727

Contents?: true

Size: 1.06 KB

Versions: 24

Compression:

Stored size: 1.06 KB

Contents

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

24 entries across 24 versions & 1 rubygems

Version Path
infopark_rails_connector-6.9.1.3.22208381 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.9.0.3.197272233 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.3.174.51542603 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.3.115.227021242 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.3.73.75172665 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.3.2.153416031 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.3.67.110847540 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.3.1.23895778 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.2.36.82613853 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.2.7.128454143 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.1.26.236500544 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.1 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.539.93842523 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.529.114081979 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.518.30999728 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.515.34928522 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.498.46559598 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.480.261594408 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.444.171626367 lib/rails_connector/googlebot_checker.rb
infopark_rails_connector-6.8.0.406.131718077 lib/rails_connector/googlebot_checker.rb