解密gzip压缩的网页数据流(转)

因为采集某个网页遇到问题,一直无法获取页面数据。

经过一番排查,发现该网站会检查客户端的Header信息,如果遇到不明确的Header信息就直接否定,返回0数据。

如果Header信息正确,就会返回经过GZip压缩的数据,这样直接获取网页数据的想法破灭了。

实际上.NET已经为我们封装好了GZip和Deflate加解压算法类,都位于 System.IO.Compression 命名空间内。

下面我来演示如何分析并提取经过GZIP压缩的网页数据流。

Imports System.Net
Imports System.IO
Imports System.IO.Compression
Imports System.Text

Function GZip2Html(ByVal url AsString) AsString

‘ HTTP请求
Dim req As HttpWebRequest = HttpWebRequest.Create(url)
req.Method ="GET"‘GET 或 POST
req.Accept ="*/*"
req.UserAgent ="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;)"‘这里模拟 XP系统 IE7 的请求字段
req.Referer ="来源地址"

‘ 一些头信息的模拟
req.Headers("Accept-Language") ="zh-cn"
req.Headers("UA-CPU") ="x86"
req.Headers("Accept-Encoding") ="gzip, deflate"

‘ HTTP获取
Dim res As HttpWebResponse = req.GetResponse
‘ 获取数据文本编码
‘Dim enc As Encoding = Encoding.GetEncoding(res.CharacterSet) ‘如果出现乱码请换下面这种方式
Dim enc As Encoding = Encoding.Default

‘ 创建一个GZip解压流
Dim gz AsNew GZipStream(res.GetResponseStream, CompressionMode.Decompress)
‘ 用一个临时内存流来保存解压数据
Dim ms AsNew MemoryStream
‘ 缓冲数据
Dim buf(99) AsByte, i AsInteger=0
‘ 不断从流中解压数据
WhileTrue
i = gz.Read(buf, 0, 100)
If i =0ThenExitWhile
ms.Write(buf, 0, i)
EndWhile
‘ 将数据转换为字符
Dim ret AsString= enc.GetString(ms.ToArray)

‘ 关闭所有的流
gz.Close()
ms.Close()
res.Close()

Return ret
End Function

本人测试解压数据成功,其他环境未进行测试,请自行修改。

时间: 2024-11-08 12:33:59

解密gzip压缩的网页数据流(转)的相关文章

nginx优化--gzip压缩与expire浏览器缓存

gzip压缩 概述 网页在服务器端经过了gzip或者其他格式的压缩后的输出明显减少了content-length字节,当访问过百万时,这些减少的字节就会变为客观的流量给节约下来;从而减轻服务器的压力以及网页的访问速度; 原理 客户端在向服务端发送http请求时,在请求头中有一个Accept-Encoding的头信息,该头信息告知服务器端本客服端能接收什么样的压缩文件,如果服务器端配置了压缩的需求,就会返回相应的压缩文件,然后浏览器再解码呈现出来;我们在做采集时,需要采集的是未压缩的文件,所以在h

[转]PHP通过zlib扩展实现GZIP压缩输出

1. GZIP介绍 GZIP是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.GZIP主要用于Unix系统的文件压缩,我们经常看到的后缀为.gz的文件,它们就是GZIP格式的.GZIP的压缩效果比较明显,应用Gzip压缩网页时,网页可以压缩30%甚至更多. HTTP协议上的GZIP编码是一种用来改进WEB:应用程序性能的技术,Web开发中通过GZIP压缩页面来降低网站的流量,而且GZIP不会占用很多CPU.总体来考虑,启用GZIP还是非常划算的.通

网站启用GZip压缩后,速度快了3倍!

GZip压缩,是一种网站速度优化技术,也是一把SEO优化利器,许多网站都采用了这种技术,以达到提升网页打开速度.缩短网页打开时间的目的. 本文是一篇研究性文章,将通过某个案例来给大家显示网站采用GZip压缩前后的对比效果. 这里将要研究的对象是园子的博客http://www.yzznl.cn/,该博客已经采用了GZip压缩技术.你可以通过这里进行GZip压缩检测. 下面将要进行的实验是该网站在采用与不采用GZip压缩的情况下网页打开的速度和时间的比较. 选择的测试工具是webkaka网站测速工具

[Windows Server 2003] 网页Gzip压缩

★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZIP压缩·GZIP能对网页文件进行高效率压缩,一般压缩比率在50%以上,既能减少传输流量,又能提升访问 速度.·对图象文件(GIF/JPG)则没有什么效果,因为这些文件本身就是压缩后的. 1.启用GZIP压缩·在:IIS->网站->右键->属性->服务 ·如果更改了临时目录的位置,请注意

[Windows Server 2012] 网页Gzip压缩

★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:启用网站GZIP压缩·GZIP能对网页文件进行高效率压缩,一般压缩比率在50%以上,既能减少传输流量,又能提升访问速度.·对图象文件(GIF/JPG)则没有什么效果,因为这些文件本身就是压缩后的. 1.安装GZIP压缩在Windows Server 2012,GZIP是IIS的一个功能模块,先检查是否安装了GZI

网页启用Gzip压缩 提高浏览速度

启用Gzip压缩的好处 它的好处显而易见,提高网页浏览速度,无论是之前说的精简代码.压缩图片都不如启用Gzip来的实在.下图为启用Gzip后的效果. Gzip压缩效率非常高,通常可以达到70%的压缩率,也就是说,如果你的网页有30K,压缩之后就变成了9K左右. 第一步:打开IIS,启用HTTP压缩服务 右击“网站”->“属性”,选择“服务”.在“HTTP压缩”框中选中“压缩应用程序文件”和“ 压缩静态文件”,按需要设置“临时目录”和“临时目录的最大限制”; 第二步:启用web服务 第三步:修改M

linux PHP空间设置GZIP压缩网页方法!

网站设置GZIP压缩,缩小网页体积,让网站访问速度更快!方法很简单,只需要在你的网站根目录建立.htaccess文件并输入以下代码: 新建-记事本-复制以下代码:(如果网站已有.htaccess文件,直接在末尾加上下面代码)保存. # GZIP BEGIN <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/gif A2592000 ExpiresByType image/jpeg A2592000 ExpiresByTy

Apache启用GZIP压缩网页传输方法

一.gzip介绍 Gzip是一种流行的文件压缩算法,如今的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是很明显的,大约能够降低70%以上的文件大小.这取决于文件里的内容. 利用Apache中的Gzip模块,我们能够使用Gzip压缩算法来对Apacheserver公布的网页内容进行压缩后再传输到client浏览器.这样经过压缩后实际上降低了网络传输的字节数,最明显的优点就是能够加快网页载入的速度. 网页载入速度加快的优点不言而喻,除了节省流量,改善用户的浏览体验

网站SEO之网页压缩nginx gzip压缩

网站SEO之网页压缩nginx gzip压缩 ,gzip压缩作用:将响应报?发送?客户端之前可以启?压缩功能,这能够有效地节约带宽,并提?响应?客户端的速度,压缩会消耗nginx的cpu性能1,如何查看网站是否压缩 2,压缩语法location ~ .*.(jpg|gif|png|bmp)$ //~区分大小写, 匹配任意字符开头以.jpg或.bmp结尾,注意这里的jgp等类型需要使用gzip_types调用gzip on; //开启gzip压缩gzip_http_version 1.1 //压缩