为什么我们不能 100% 地保存一个站点?

为什么我们不能 100% 地保存一个站点?

我们都知道我们无法混淆 HTML 或 Javascript。我们需要记住,如果浏览器可以读取它,那么用户也应该能够读取它。

那么,为什么有时当我们将网站下载到本地时,它却无法正常工作呢?对于 Javascript 来说尤其如此。如果浏览器可以正确显示它,为什么它在本地存储时会崩溃?简而言之,是什么原因导致它在本地和浏览器上的运行方式不同?

谢谢你!

编辑

举个例子,我试图下载这个网站:

https://www.mashape.com/howitworks

看看他们是如何制作动画的,但是动画无法在本地工作。

答案1

原因:

  • 动态页面 - 有时 URL 不会返回文件,而是服务器上运行的程序的输出。此程序每次可能返回不同的结果。

  • Javascript - 除非执行所有 Javascript,否则无法知道页面可能访问的确切 URL,并且根据触发它的事件,页面中的某些 Javascript 可能永远不会执行,或者只在特定时间执行,等等。

  • 根据 IP 等进行过滤 - 有时,网络服务器可能会根据某些属性(例如您的 IP 等)为同一 URL 提供不同的数据。

应该始终可以使用诸如 之类的工具下载没有服务器端处理的纯静态站点wget,但这些类型的站点越来越少见。

答案2

A网站不用于下载。当您这样做时,依赖项经常会损坏,脚本文件的链接不起作用,图像丢失。

虽然有些浏览器具有下载整个网站的功能,但这并不是完美的,并且在使用服务器端脚本(例如 PHP)的动态网站上必然会失败。

答案3

通常,这是因为 HTML 和/或 JavaScript 代码(包括 CSS 等)中的链接仍然引用在线网站,而不是本地下载的文件。您必须浏览所有文件并更新所有链接,以便它们引用本地文件而不是原始网站。此外,网站的某些部分可能是动态加载的 - 即实际显示的标记与浏览器最初下载的标记不同。当您将文件“保存”出浏览器时,它可能会保存对原始请求的响应,而不是反映浏览器中显示内容的当前文档对象模型。

答案4

如果您想下载整个网站(或部分网站),请查看 HTTrack。它将下载整个网站或部分网站,并根据需要更改所有依赖项以在本地运行。

http://www.httrack.com/

相关内容