如何确定网页是否已被修改?

时间:2011-05-13 16:48:34

标签: html ruby http

我知道我可以检查响应标头的“last-modified”值,以确定网页上次修改的时间,但在很多情况下,未提供标头。此外,在许多情况下,内容本身没有改变,但是当前时间/日期显示在页面上,从而给出了修改的外观。

有关如何克服上述问题以及确定网页是否已经(真正)修改过的任何建议?

感谢。

3 个答案:

答案 0 :(得分:1)

不确定。为自己定义什么算作“修改”(例如,只有“内容”div中的内容)并且仅查看它。

如果无法找到决定是否有某些内容被改变的方法,那么你就不能指望一台电脑......

答案 1 :(得分:0)

检测页面更改的可靠方法是下载并校验它。如果校验和发生变化,则页面已被编辑(具有极高的确定性)。

以下是一个适用于命令行的示例:

curl -s news.ycombinator.com | md5   #=> d86582bec138c051b0d8322f7823a23c
那是几分钟前的事。如果你现在运行它,你会得到一个不同的答案!

答案 2 :(得分:0)

你在这里问两个问题:

  1. 什么时候被修改过?
  2. 是否修改了?
  3. 要回答问题#1,您必须经常检查该页面以满足您的粒度要求,例如:每小时,每天,每周等。这可能是非常耗费资源的。这取决于你是否真的需要知道这一点。

    要回答问题#2,您需要比较一些事情。你可以做@Paul Rosnia建议的内容,但是如果他们添加了逗号,它将被视为修改。

    然后,您可能还想查看已修改的内容。然后,您必须保存内容并将它们相互比较,以突出显示更改。

    您可以使用http://php.net/manual/en/function.file-get-contents.php和CRON作业来缓存服务器上的页面,然后按比例对比缓存。比较部分将是棘手的部分,因为你必须编写特定的代码来忽略对你无关紧要的事情,例如日期/时间戳,标题更改,菜单更改等。