使用 wget 镜像仅使用 gzip 响应的站点

使用 wget 镜像仅使用 gzip 响应的站点

我正在尝试镜像站点,但服务器仅响应 gzip 页面,因此 wget 不会递归。我搜索了一下,有一些关于向 wget 添加 gzip 支持的补丁的参考,但它们似乎已经过时了。有办法做到这一点吗?如果不是,我正在考虑通过 nginx 进行反向代理。

答案1

你有4种方法:

  1. wget一页,gunzip然后从 html 再次处理它...迭代直到完成:

    wget -m http://example.org/page.html
    find . -name \*gz -exec gzip -d {} \;
    find . -name \*html -exec wget -M -F {} \;</code></pre>
    

    这会很慢,但应该可行。

  2. 安装 Privoxy 并将其配置为解压缩请求的页面:

    +防止压缩

    防止网站压缩数据。有些网站会这样做,这对于在没有 zlib 支持的情况下构建时的 Privoxy 来说是一个问题,因为 +filter 和 +gif-deanimate 不适用于压缩数据。不过,会减慢与这些网站的连接速度。

  3. Privoxy 或其他代理也可能能够获取压缩页面并将未压缩的副本传递给客户端;谷歌一下。

  4. wget不会发送请求内容的“Accept-Encoding:gzip”标头gzip...检查你的为什么这样做。也许您有一个正在添加它的代理?您还可以使用 Privoxy 删除该标头。

答案2

wget -m -q --compression=auto http://example.com

来自GNUwget手册:

--compression=type

选择要使用的压缩类型。合法值为auto,gzipnone

如果指定了auto或,则要求服务器使用压缩格式来压缩文件。如果服务器压缩文件并以适当设置的标头字段进行响应,则文件将自动解压缩。gzipwgetgzipContent-Encoding

如果none指定,wget则不会要求服务器压缩文件,也不会解压缩任何服务器响应。这是默认设置。

压缩支持目前处于实验阶段。如果已打开,请将任何错误报告给“[电子邮件受保护]”。

答案3

迟来的回应,但出于网络参考的目的:

wget -O - $URL | zcat | wget -B $URL -i - -F -c -T 45 -k -r --page-requisites

文档缓存“众所周知”。超时/重试选项(例如使用 -c 和 -T)对于无线网络中的间歇性“链接丢失”可能很有用。当然,所有选项都是可选的。

相关内容