Первое наивное предположение - получить контент и создать хеш. Однако, если содержимое имеет какое-либо динамическое поведение, это не очень хороший показатель.
require 'open-uri'
require 'digest/md5'
f1 = open("http://rubyonrails.org/?id=1")
c1 = f1.read
d1 = Digest::MD5.hexdigest(c1)
f2 = open("http://rubyonrails.org/");
c2 = f2.read
d2 = Digest::MD5.hexdigest(c2)
d1 == d2 # true
Если мы повторим то же самое, скажем, www.google.com и google.com, хэши не будут совпадать, поскольку в содержании могут быть небольшие различия.
Вы можете использовать меру Jaro Winkler для строк, которая дает вам значение от 0 до 1 для того, насколько похожи две строки.
Также есть чистая реализация алгоритма в ruby. Нативные реализации намного быстрее. В прошлом я использовал библиотеку amatch .
require 'open-uri'
require 'fuzzystringmatch'
f1 = open("http://www.google.com/")
c1 = f1.read
f2 = open("http://google.com/")
c2 = f2.read
delta = 0.1
jarow = FuzzyStringMatch::JaroWinkler.create( :pure )
distance = jarow.getDistance(c1, c2) # 0.85 .. that is the text looks to be 85% similar