检查自上次以来网址中的数据是否发生了变化?

时间:2009-12-21 06:45:03

标签: http

对于给定的网址,我想检查自上次以来内容是否已更改。 (http)URL的内容由脚本生成,该脚本定期进行多次修改。需要查看是否有因此更改脚本而导致的任何回归。

PRAC

4 个答案:

答案 0 :(得分:8)

除非知道您使用的语言,否则最简单的解决方案是使用If-Modified-Since HTTP标头格式化您的请求,并检查服务器的304(未修改)响应。如果内容是脚本生成的静态文件,那么您的Web服务器将检查文件中已修改的时间戳。您将获得304响应,或者使用新内容页面获得200(OK)响应。

答案 1 :(得分:0)

这需要指定要使用的语言或其他内容。 C? Unix shell脚本? Java的? PHP?

一般程序:下载文件,计算文件上的SHA1哈希值。对于每个未来版本都做同样的事情,并比较SHA-1哈希值。如果他们有所不同,恭喜,您的内容已经改变了!

答案 2 :(得分:0)

快速执行此操作的方法是检查内容的标头。如果脚本生成了正确的内容标头,您只需检查Content-Age或Content-MD5标头即可查看是否应重新获取内容。如果您有权访问生成响应的脚本,那么如果它们不在那里就可以添加它们。

如果您无法修改脚本,或者这些标头不存在,第二种最快的方法是确定页面有多少足以用于更改哈希,检索该部分并生成哈希以查看它是否足够改变。通常,在不到1MB的内容上计算MD5是相当简单的时间,较大的数据需要更多的时间。如果页面的第一部分有时间戳或类似的东西你不需要在此之外散列任何东西,因为它会告诉你内容是否发生了变化。

当然,第三件事是如果页面内容经常更改,但您只对内容的格式或内容发生变化(而不是内容本身)感兴趣,则需要在页面中识别有意义的结构并进行比较。如果你有一个写日志文件的页面,你不关心日志文件本身,但你关心是否添加了一个或添加了新的源,这将是真的。到目前为止,这是最难检测到的。

答案 3 :(得分:-1)

感谢您的回答 @BobMcGee ..我可以用你所说的。 但后来我无法找到内容不同的点。

正如Adam评论的那样,我已经保存了html页面作为参考,每次我从url获取新的html,将其与参考文件进行比较,看看有什么变化。