httpgzip解压缩
Ⅰ 有个问题卡了好几天了。 是关于VC发送request,HTTP返回GZIP数据解压的问题。
如果您看到 .gz, .tar.gz 的文件,都是 gzip 程序压缩的杰作。
gzip 是 GNU 组织开发的一种压缩程序,跟 Windows 上的 ZIP 不太一样(稍后会介绍一个一样的)。
[root@linux~]# gzip [-cdt#] 档名
[root@linux ~]# zcat 档名.gz
参数:
-c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩档的一致性~看看文件有无错误;
-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~
我们先介绍压缩的方法。当我们有一个文件叫做 big1.bmp,由于点阵图文件通常都很大,要用 gzip 压缩,命令要怎么下呢?
最简单的可以这样:
gzip big1.bmp
但是如果您希望它压出“最小的文件”,那么就加一个 -9 选项:
gzip -9 big1.bmp
当然,“最小的文件”的代价,就是花最久的时间压缩,如果您希望它在最快时间压缩好,而不计较压缩的比例,那就相反,加一个 -1 (注意,是数字,不是小写英文l)选项:
gzip -1 big1.bmp
而如果您没有加 -1也没有加 -9,它的默认相当于 -6。
另外常用的选项还有:
l -v 压缩过程当中显示进度。
l -r 将子目录中的文件全部压缩。
至于它还有解压缩的选项,我们刻意将它挪到下一个命令中gunzip 再说明。
gunzip [-选项] [文件名.gz]
将 .gz 压缩文件解压
gunzip 命令与 gzip 命令相对,专门把 gzip 压缩的 .gz 文件解压缩。如果您有已经压缩过的文件,例如 big1.gz,这时就可以用解压缩:
gunzip big1.gz
这个命令也可以用 gzip 自己来完成,效果完全一样:
gzip -d big1.gz
其实在有些版本的Linux 上,gunzip是去调用 gzip,顺便帮您加上个 -d 选项罢了(用链接文件做的)!但是有些版本不是,是一个真的程序。不过无论 gunzip到底是一个实在的程序,还是仅是一个连接,都不重要了。因为 gzip 这个程序,本身可以负责压缩,也可以解压缩,一物两用。(不见得每种压缩和解压缩程序都是这样。)所以,如果您记得 -d 选项,就可以根本不用记 gunzip 这个命令了。
gunzip甚至还可以去解其他压缩程序如 Compress 或 ZIP 压缩出来的文件。不过我们不建议您这样做,这样会让您自己很乱。而且它自己也承认,用它来解 zip 的文件并不是每一种情形都能完成。所以既然如此,何必这样麻烦呢?哪一种工具就固定做什么用,不是比较有条理又好记吗?
gunzip 有几个选项较常使用:
l -f 当解压时如果遇到有同名的文件存在,就直接覆盖,不必再询问。
l -r 将子目录中的文件全部解压缩。
l -v 解压缩过程当中显示进度。
同样,这些选项也可以再加在 gzip -d 上,效果一样。
Ⅱ wireshare抓到http的gzip怎样将该数据还原
服务器给你发的是gzip类型的,把这个这实体数据解压缩
原始数据-->被gzip=gzip数据,想要原始数据(即文本文件,能看懂的)
Ⅲ GZIP 与zip区别
一、主体不同
1、GZIP:最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。
2、ZIP:ZIP文件格式是一种数据压缩和文档储存的文件格式。
二、特点不同
1、GZIP:基础是DEFLATE,DEFLATE是LZ77与哈夫曼编码的一个组合体。DEFLATE最初是作为LZW以及其它受专利保护的数据压缩算法的替代版本而设计的。
2、ZIP:是一种相当简单的分别压缩每个文件的存档格式。分别压缩文件允许不必读取另外的数据而检索独立的文件。
三、优点不同
1、GZIP:可以减少存储空间,通过网络传输文件时,可以减少传输的时间。
2、ZIP:支持基于对称加密系统的一个简单的密码,已知有严重的缺陷,已知明文攻击,字典攻击和暴力攻击。
Ⅳ 怎么解压Http请求中返回的Gzip内容
您好,我来为您解答: 你在提交请求时不要加上Accept-Encoding: gzip, deflate,这样数据返回就不会是压缩的。 盒子上有个lvkZLibUtils,用其中的gZipDecompress方法即可解开! 希望我的回答对你有帮助。
Ⅳ 网页怎么压缩,大师们指点一下。
一.摘要
本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.
二.前言
本文的知识点是从互联网收集整理, 主要来源于中文wiki. 使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.
三.HTTP压缩概述
HTTP 压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、javaScript或CSS文件。
压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。
当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP 压缩算法。
四.HTTP压缩工作原理
Web服务器处理HTTP压缩的工作原理如下:
1.Web
服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中, 带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.
2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;静态文件和动态文件后缀启动要所都需要在MetaBase.xml中设置.
静态文件需要设置:
HcFileExtensions Metabase Property
(单击跳转到MSDN说明) 动态文件需要设置: HcScriptFileExtensions Metabase Property (单击跳转到MSDN说明)
3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
6.如果请求文件是ASPX等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。
五. 在IIS中启用HTTP压缩
IIS默认并不支持HTTP压缩,需要进行简单的配置
1.打开Internet信息服务(IIS)管理器,右击"网站"->"属性"选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";
2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略. 在 Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩名"HTTP Compression",添加"要求的文件"为C:WINDOWSsystem32inetsrvgzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
3.使用文本编辑器打开C:.xml(建议先备份), 找到Location ="/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于设置deflate压缩. 上面两个节点紧挨着.并且设置的属性相同.
如果需要压缩动态文件,则将HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和 HcDoOnDemandCompression设置为"TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如 xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0. HcDynamicCompressionLevel属性说明:
HcDynamicCompressionLevel Metabase PropertyHcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property说明: 这两个属性值一般推荐设置为
9, 具有最佳性价比.但是在我的window server 2003上, 压缩率无论如何设置, jQuery和jQuery
UI两个文件(58k/188k)压缩后的大小一直相同.(20k/45k). 下面是我的实例: Xml代码
1.<IIsCompressionSchemeLocation="/LM/W3SVC/Filters/Compression/deflate"
2.HcCompressionDll="%windir%system32inetsrvgzip.dll"
3.HcCreateFlags="0"
4.HcDoDynamicCompression="TRUE"
5.HcDoOnDemandCompression="TRUE"
6.HcDoStaticCompression="true"
7.HcDynamicCompressionLevel="9"
8.HcFileExtensions="htm
9. html
10. txt
11. js
12. css
13. swf
14. xml"
15.
HcOnDemandCompLevel="9"
16. HcPriority="1"
17. HcScriptFileExtensions="asp
18. aspx
19. dll
20. exe"
21. >
22.</IIsCompressionScheme>
23.<IIsCompressionSchemeLocation="/LM/W3SVC/Filters/Compression/gzip"
24. HcCompressionDll="%windir%system32inetsrvgzip.dll"
25. HcCreateFlags="1"
26. HcDoDynamicCompression="TRUE"
27. HcDoOnDemandCompression="TRUE"
28. HcDoStaticCompression="true"
29. HcDynamicCompressionLevel="9"
30. HcFileExtensions="htm
31. html
32. txt
33. js
34. css
35. swf
36. xml"
37. HcOnDemandCompLevel="9"
38. HcPriority="1"
39.
HcScriptFileExtensions
="asp
40. aspx
41. dll
42. exe"
43. >
44.</IIsCompressionScheme>
.csharpcode, .csharpcode pre { font-size: small; color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre
{ margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd
{
color:
#0000ff;
}
.csharpcode
.str
{
color:
#006080;
}
.csharpcode
.op
{ color: #0000c0; } .csharpcode .preproc { color:
#cc6633; } .csharpcode .asp { background-color:
#ffff00;
}
.csharpcode
.html
{
color:
#800000;
}
.csharpcode
.attr
{
color:
#ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%;
margin: 0em; } .csharpcode .lnum { color: #606060; }
4.编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存
5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
使用YSlow检测, 当只启动静态文件压缩时:
Gzip压缩评级为B:
当同时启动了动态文件压缩时, Gzip压缩评级为A:
Ⅵ 浏览器是如何判定http返回内容是否需要gzip解压缩的
服务器返回的headers里面有表明 是否使用了压缩
Ⅶ java端用GZIPOutputStream压缩的数据,通过HTTP POST到PHP写的后台,怎么不能解压
GZIPOutputStream和PHP的gzuncompress配合得不好,似乎是Java产生的数据头在PHP那边认不出来。用DeflaterOutputStream来取代GZIPOutputStream。
Ⅷ 请问后缀为gzip的文件如何打开
GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。
gzip 命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名
该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),
-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
指令实例:
gzip *
% 把当前目录下的每个文件压缩成 .gz 文件。
gzip -dv *
% 把当前目录下每个压缩的文件解压,并列出详细的信息。
gzip -l *
% 详细显示例1中每个压缩的文件的信息,并不解压。
gzip usr.tar
% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。
Ⅸ 如何解决http封包中gzip编码的html
如何解决http封包中gzip编码的html
大家都知道,在默认模式下,http协议中发送的网页的Html代码是经过gzip编码后传送的。那么我们怎么才能回复这段编码后的html呢?
大家可能都知道linux下有一个gzip命令。可以把文件压缩成gzip编码的格式,即*.gz
而对于文件的压缩和解压缩,可以采用zlib库中提供的各种接口来进行操作。但是这里问题来了。关于gzip编码的那些函数都带有gz开头的标示。而这些接口维护了一个名叫gz_stream的结构体。并且是针对文件FILE*操作的。
而我们要解决的问题是,我们把截取的封包中的gzip编码的内容拿出来,放到一个buffer中。那么怎么才能针对这个buffer中的数据应用这些接口呢?
我本来的想法是能不能在这些接口中找到专门对内存中的数据进行解码?
考虑这个问题,我看了这个库的源代码。后来放弃了。至于放弃的原因,可能是我意志力不够,或者不想看那些源代码了。总之,我看了一天,看的我头疼。
后来我就想个办法绕开这一思路,走个弯路。问题豁然开朗。
思路如下:
1. 把获取到的经过编码的数据保存到一个文件中。注意写文件的时候一定要以二进制方式。否则是不能解码的。
2. 应用zlib中的接口,gzopen(),gzread(),gzclose()即可完成解码的任务了。