我需要比较不同时间点的单个网站。例如几天后或登录后。我不太关心响应时间,而是更关心实际内容,如 js、图像......。比如我今天收到的 js 是否与昨天相同。有没有一种巧妙的方法可以或多或少自动转储它们并进行比较(基于文件哈希)?
我能想到的最好的办法是使用带有 TLS 检查的代理,该代理应以明文形式提供所有下载的文件。或者使用 har 文件,它还应包括网站组成的所有文件。这些方法会遗漏什么吗?或者还有其他方法吗?
编辑:
我需要在登录后下载东西,特别是我需要知道一些脚本在后台发送/接收的内容。所以我需要记录一个活动会话并以明文形式捕获通过网络传输的所有数据。
答案1
如果需要登录并执行某些操作,则使用wget
或类似工具进行静态下载将不够。在这种情况下,我建议使用硒编写所需的操作脚本,并转储所有网站内容以及响应。
基本思路是用您喜欢的语言(例如 Python、Javascript、Ruby 等)编写一个脚本,使用 Selenium Web 驱动程序来控制浏览器。该脚本执行登录操作、点击元素等,一旦收到响应,您就可以存储传输页面的正文。Python 的一个简单示例是给出以及一些显示登录的代码这里。
您必须通过遍历所有外部<script>
标签来扩展代码,下载其源代码,或者通过遍历所有<img>
标签来下载图像。这样,您可以轻松地比较主要 HTML 代码,并查看所调用脚本/图像的各个文件名。
另一种可能性是使用以下方法运行 Selenium 脚本BrowserMob,它可以导出 HAR 文件。这样,您可以将自动化与自动转储所有内容结合起来。当然,然后您必须比较 HAR 文件,因为存在不同的查看器。请注意,如果您希望 BrowserMob 与 HTTPS 站点一起工作,则必须使用中间人证书。
答案2
如果你想下载整个网站,请参阅文章 最佳免费网站破解程序。
本文包含对几款优秀破解程序的评论:HTTrack、PageNest、wget 等。我以前用过 HTTrack,效果很好。
如果想回到更早的时期,你可以尝试 互联网档案馆 Wayback Machine 它试图存档整个网络。它会定期对网站进行快照,因此你会发现多个版本可供比较。