wget命令:通过发送gzip标头下载压缩文件

时间:2020-01-09 10:46:06  来源:igfitidea点击:

由于现代Web浏览器支持并接受压缩数据传输,因此我已启用gzip压缩。
但是,我无法使用wget命令执行此操作。
如何强制wget使用gzip编码下载文件?

GNU wget命令是大多数Linux发行版上的免费默认实用程序,用于从Web上非交互式下载文件。

它支持各种协议,例如HTTP,HTTPS和FTP协议,以及通过HTTP代理进行的检索。

您可以将HTTP服务器发送的标头保存到文件中实际内容之前,并以空行作为分隔符。

--header选项

语法如下:

wget --header='HEADER-LINE' http://server1.theitroad.local/file.tar.gz
wget -option1 --header='HEADER-LINE' http://server1.theitroad.local/images.bmp 
 
### compressed speed test ###
wget -O /dev/null --header='HEADER-LINE' http://server1.theitroad.local/lib1html5v2.js
 
### debug on screen ##
wget -O- --header='HEADER-LINE' http://server1.theitroad.local/file.tar.gz

您可以在每个HTTP请求中发送HEADER-LINE以及其余的标头。
提供的标头按原样发送,这意味着它必须包含用冒号分隔的名称和值,并且不能包含换行符。
您可以通过多次指定--header来定义一个以上的追加标头,如下所示:

wget --header='Accept-Charset: iso-8859-2' --header='Accept-Language: hr'  http://server1.theitroad.local/file.css

示例:使用wget命令测试gzip编码

要发送gzip编码请求,请执行:

$ wget --header='Accept-Encoding: gzip' http://www.theitroad.local/hardware/linux-find-and-recover-wasted-disk-space/

输出示例:

--2012-10-28 17:48:06--  http://www.theitroad.local/hardware/linux-find-and-recover-wasted-disk-space/
Resolving www.theitroad.local... 75.126.153.206
Connecting to www.theitroad.local|75.126.153.206|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html.54'
 
    [ <-                                   ] 12,657      --.-K/s   in 0.02s   
 
2012-10-28 17:48:07 (583 KB/s) - `index.html.54' saved [12657]

下载不带gzip的示例页面:

$ wget http://www.theitroad.local/hardware/linux-find-and-recover-wasted-disk-space/

输出示例:

--2012-10-28 17:48:37--  http://www.theitroad.local/hardware/linux-find-and-recover-wasted-disk-space/
Resolving www.theitroad.local... 75.126.153.206
Connecting to www.theitroad.local|75.126.153.206|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html.55'
 
    [   <-                                 ] 45,729      73.7K/s   in 0.6s    
 
2012-10-28 17:48:38 (73.7 KB/s) - `index.html.55' saved [45729]

从以上两个输出:

  • 使用wget命令在0.2秒内下载了启用gzip的页面。
  • 不带gzip的页面是使用wget命令在0.6秒内下载的。

使用此选项进行测试:

  • 测试和排除HTTP服务器问题
  • CDN边缘节点速度。
  • 您的原始服务器速度。
  • Web服务器gzip可比性。
  • 负载均衡器/反向代理服务器测试。

从wget v1.10开始,此选项可用于覆盖标头,否则标头将自动生成。
在此示例中,使用wget连接到www.theitroad.local,但在Host标头中指定beta.theitroad.local(即,对于相同的域名,来自beta.theitroad.local的显示页面:

wget --header="Host: beta.theitroad.local" http://www.theitroad.local/

最后,您可以将HTTP服务器发送的标头保存到文件中,运行:

$ wget --save-headers http://www.theitroad.local
$ vi index.html