我的问题是关于核查的超过其他任何东西。什么可以用来确定什么是独特的一个HTML文档?(该文件可以有一定程度的被动态。)

什么是能被使用,或产生于认识到这一页是正确的页面精确的说,99%以上,考虑可以存储的"指纹"排序的网页你检验?


为了清楚起见,这是一个增加了额外的加密/https等。这一网页可以和将会改变的动态的内容,根据特定用户使用,然而因此可以指纹,但一个单一的指纹无法100%的比赛100%的用户由于性质的动态内容。因此,散列不能在这里工作的,至少不会在一个简单的形式。

有帮助吗?

解决方案

唯一的指纹一个HTML网页是容易计算。建立一个散列如下:

  • 协议:http或https
  • URL:域+uri
  • Query_string
  • 确切的页面内容的下一个字

任选一些标题:

  • Server
  • Content-Type 这是很重要的
  • Content-encoding 这太可能
  • 更多的想法?随编辑。

这假定你没有发布任何数据网页。

其他提示

您不能连1%肯定,如果你不检查主机的IP。 接下来就是加密。 (如果没有这个可以是ARP poisoing(仅在LAN网络)的受害者)。

在HTTPS密钥必须是相同的所有的时间。

如果它改变它意味着有人是欺骗或键得到更新(钥匙具有它们的到期日期。)

页的指纹是主机名称,端口,和路径。这是保证是在网络上唯一的唯一的事。我想你也可以包括缓存头(上次修改),看它是否改变了。

在此之上,如果你切碎了的HTML,你可以看它是否改变了,即使最后修改的头改变。

假设对于要存储一个HTML页面的“指纹”,所以你以后可以识别它,如果它的确切匹配,只使用一个简单的散列摘要的HTML页面。一分钟

除非你clearify的问题多了,我看不到任何理由为什么它应该的问题,这是HTML或者是什么浏览器。

这不会告诉你,如果该页面在同一位置。然而。对于您将需要存储的其他详细信息,如主机/ IP和路径。

如果你能得到的两页的文本版本,你可以diff的他们。你能确定最大范围在页面的差异可以接受的。

有是Unix util的(称为差异)。有此工具左右浮动净也Win32的版本。维基百科有差异的文章: http://en.wikipedia.org/wiki/Diff

在wiki文章列出了免费的文件比较工具和“参见”部分有链接到讨论文件比较工具和增量编码的其他文章。

在“Levenshtein距离度量”也可以是一个有趣的方法。

有是在CodeProject体面C#差分发动机。我不能发布另一个链接,由于我的低点,但文章的标题是:“一个通用的,可重复使用的DIFF算法在C#”

即使你如果有服务于网页应用程序服务器或者Web服务器中插入广告内容有完全相同的主机名,端口和路径的内容仍可能会有所不同。

如果你能可靠地识别是动态的(如广告或不断更新的时间戳)的HTML的部分,那么我会首先规格化数据。我去掉所有的空格字符(空格,制表符,换行符),然后使该内容的散列。

我会的的包括散列的主机名端口路径,因为这不会增加任何东西的“指纹”。 (当你以后再次查询Web服务器来比较的HTML信息是有用的后面。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top