在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
之前碰到用wininet下载下来的网页的源码为乱码的现象,刚开始以为是编码所致,但尝试各种解码方法之后发现,原来不是编码的问题。而是代码经过压缩了。在HTTP请求头里加上“accept-encoding: gzip, deflat”,可返回压缩之后的代码。如果不加,返回的就是未经过处理的代码。
但是,有些网站,不加“accept-encoding: gzip, deflat”HTTP头,还是返回经过压缩的代码。这就需要解压了。解压其实很简单,ZLibEx里的一个函数就搞定了。
1 procedure DecompressGZip(AInStream, AOutStream: TStream);
2 var 3 pb1, pb2: Byte; 4 begin 5 AInStream.Seek(1, 0); 6 AInStream.Read(pb1, 1); 7 AInStream.Seek(2, 0); 8 AInStream.Read(pb2, 1); 9 AInStream.Position := 0; 10 AOutStream.Position := 0; 11 if (pb1 = $8B) and (pb2 = $8) then 12 ZDecompressStream2(AInStream, AOutStream, 47) 13 else 14 AOutStream.CopyFrom(AInStream, AInStream.Size); 15 end; 前面比较开头的两个字节$8B和$8是为了判断代码是否经过压缩。至于ZDecompressStream2的第三个参数“47”,在网上看到还有为“-10”的,不过在我这里写“-10”不行,这个参数还有待研究。
另一篇对windowbits研究的博客
连上网搜资料加读代码,一共花了大约3个小时,到现在,大约清楚了这么几个问题:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论