我正在尝试镜像站点,但服务器仅响应 gzip 页面,因此 wget 不会递归。我搜索了一下,有一些关于向 wget 添加 gzip 支持的补丁的参考,但它们似乎已经过时了。有办法做到这一点吗?如果不是,我正在考虑通过 nginx 进行反向代理。
答案1
你有4种方法:
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>
这会很慢,但应该可行。
安装 Privoxy 并将其配置为解压缩请求的页面:
+防止压缩
防止网站压缩数据。有些网站会这样做,这对于在没有 zlib 支持的情况下构建时的 Privoxy 来说是一个问题,因为 +filter 和 +gif-deanimate 不适用于压缩数据。不过,会减慢与这些网站的连接速度。
Privoxy 或其他代理也可能能够获取压缩页面并将未压缩的副本传递给客户端;谷歌一下。
我
wget
不会发送请求内容的“Accept-Encoding:gzip”标头gzip
...检查你的为什么这样做。也许您有一个正在添加它的代理?您还可以使用 Privoxy 删除该标头。
答案2
答案3
迟来的回应,但出于网络参考的目的:
wget -O - $URL | zcat | wget -B $URL -i - -F -c -T 45 -k -r --page-requisites
文档缓存“众所周知”。超时/重试选项(例如使用 -c 和 -T)对于无线网络中的间歇性“链接丢失”可能很有用。当然,所有选项都是可选的。