wget 输出文件中看似随机的字符

wget 输出文件中看似随机的字符

我用来wget创建在我的计算机上本地运行的网站的备份。我使用的命令是:

wget -rkE http://localhost/mpmf/www/dev

所以这实际上效果很好,但每个文件的顶部和底部都有一些随机字符。例如,第一行index.html4c11,最后一行只是0。看起来很多文件都以结尾,0但我还没有检查每个文件是否如此。

看起来wget这样做可能有某种原因。我认为这可能与它以递归方式遍历网站的方式有关,但我不知道。那么,有没有办法可以做到这一点,而不需要在我的文件中添加这些额外的行?

答案1

这些是 HTTP 的块标记分块传输编码定义于RFC 2616。它们是十六进制数,表示随后的块的长度。

HTTP/1.1 要求支持分块传输编码。然而,Wget 只发出 HTTP/1.0 请求——你的 Web 服务器似乎忽略了请求版本并返回了 HTTP/1.1 响应,违反了RFC 2145

答案2

是的,允许服务器使用 HTTP/1.1 响应来响应 HTTP/1.0 请求,前提是它们避免使用 HTTP/1.1 特定的功能(例如分块编码)。

不仅仅是文件的顶部和底部 - 至少是有可能的。您还可能发现这些块头散布在整个文件中(这会导致文件损坏)。

在不知道您的服务器配置详细信息的情况下,我无法解释为什么您的一个 Apache/PHP 设置会忽略 wget 请求的 HTTP 版本,而另一个却尊重它。

不过,我要指出的是,当前的开发源(我认为最终将是 wget 1.12.1)包括对 HTTP/1.1 请求和分块内容的支持。目前没有可用的 deb 包,但如果您习惯从源构建,这是一个选择。最新的测试源包(最容易构建,否则您必须满足一组苛刻的先决条件)位于ftp://alpha.gnu.org/gnu/wget/wget-1.12-2460.tar.bz2,最后更新日期为 3 月 16 日。

相关内容