2009-12-21 56 views
2

对于给定的URL,我要检查,如果自上次内容发生了变化。 (http)URL的内容由经常进行若干修改的脚本生成。需要查看是否有任何由此脚本更改引起的回归。检查自上次以来网址的数据是否发生了变化?

Prac

+0

有许多可能的解决方案,从“保存HTML页面,并在记事本中比较”“写和进度的应用服务器上的回归测试套件” - 你想要什么样的解决方案呢? – 2009-12-21 06:48:36

回答

0

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

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

0

一个快速的方法来做到这一点是检查标头的内容。如果脚本生成正确的内容标题,您可以简单地检查Content-Age或Content-MD5标题以查看是否应该重新获取内容。如果您可以访问生成响应的脚本,那么添加这些脚本将会很好,如果它们不在那里的话。

如果你不能修改脚本,或者不存在这些头文件,第二种最快的方法是找出页面的多少就足够用于更改散列值,检索该部分并生成散列以查看是否它改变了。一般来说,计算少于1MB内容的MD5是相当平凡的时间,大数据需要更多时间。如果页面的第一部分有时间戳或类似的内容,则不需要散列除此之外的任何内容,因为它会告诉您内容是否更改。

当然,第三件事情是,如果页面内容频繁变化,但如果格式化或内容量变化(而不是内容本身),您只需要在页面中标识有意义的结构并比较。如果你有一个正在写日志文件的页面,你自己并不关心日志文件,但是你关心是否添加了一个或添加了一个新的源文件。这是迄今为止最难检测的。

5

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

-1

感谢您的答案 @BobMcGee ..我可以使用什么ü说。 但后来我无法找到内容不同的地方。

所以亚当评论,我已保存的HTML页面为基准,每一次我得到了新的HTML从URL,它与参考文件进行比较,看看发生了什么变化。

+0

你知道吗,你可以......啊,投票并接受其中一个答案?所以我们因帮助而获得了一些声誉...... – BobMcGee 2009-12-22 16:19:20

相关问题