什么在HTML网页是独一无二的?
-
18-09-2019 - |
题
我的问题是关于核查的超过其他任何东西。什么可以用来确定什么是独特的一个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信息是有用的后面。)