如何解决http封包中gzip编码的html
来源:互联网 发布:网络安全工程师薪酬 编辑:程序博客网 时间:2024/05/17 08:58
gzip编码,最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。(摘在百度百科)。
废话少说,来进入正题吧。
大家都知道,在默认模式下,http协议中发送的网页的Html代码是经过gzip编码后传送的。那么我们怎么才能回复这段编码后的html呢?
大家可能都知道linux下有一个gzip命令。可以把文件压缩成gzip编码的格式,即*.gz
而对于文件的压缩和解压缩,可以采用zlib库中提供的各种接口来进行操作。但是这里问题来了。关于gzip编码的那些函数都带有gz开头的标示。而这些接口维护了一个名叫gz_stream的结构体。并且是针对文件FILE*操作的。
而我们要解决的问题是,我们把截取的封包中的gzip编码的内容拿出来,放到一个buffer中。那么怎么才能针对这个buffer中的数据应用这些接口呢?
我本来的想法是能不能在这些接口中找到专门对内存中的数据进行解码?
考虑这个问题,我看了这个库的源代码。后来放弃了。至于放弃的原因,可能是我意志力不够,或者不想看那些源代码了。总之,我看了一天,看的我头疼。
后来我就想个办法绕开这一思路,走个弯路。问题豁然开朗。
思路如下:
1. 把获取到的经过编码的数据保存到一个文件中。注意写文件的时候一定要以二进制方式。否则是不能解码的。
2. 应用zlib中的接口,gzopen(),gzread(),gzclose()即可完成解码的任务了。
我把这一过程简单封装起来,在VC2005下经过测试,仅提供参考:
- 如何解决http封包中gzip编码的html
- 如何解决http封包中gzip编码的html
- HTTP 中的gzip编码
- HTTP 中 gzip 解码
- gzip的编码
- 解压HTTP gzip的
- libcurl如何解压gzip格式的http body返回
- 如何截取魔兽世界的封包?
- loadrunner如何过滤http/html脚本中不需要的请求
- http中关于gzip的解压_初级调试
- Gzip 的HTTP支持(一)
- Gzip 的HTTP支持 (二)
- 关于http的gzip解压
- Http gzip的压缩原理
- 关于rtmp封包中数据类型为0x16的封包
- 关于rtmp封包中数据类型为0x16的封包
- jmeter如何模拟http发送gzip数据
- http配置如何开启gzip网页压缩
- 基础中的基础,关于网页DOCTYPE(文档类型)的定义
- visualnet相关案例资料
- VSTS : 在性能调优中找到瓶颈所在
- 测量程序运行时间的几个函数
- lucy陪你说英语
- 如何解决http封包中gzip编码的html
- 编译ARM-Linux-Gcc工具链!
- 介绍一篇关于session的好文章,写的很详细
- 模型和策略概述
- 如何设置远程访问SQL Server2005
- Java发送Http请求,解析html返回
- java实现URL带参数请求(get/post)
- Eclipse中安装Extjs插件(Spket IDE)
- .net笔试常见题(四) webservice