游戏技术文章

解密gzip压缩的网页数据流

时间:2017-1-22 10:44:45  作者:棋牌资源网  来源:棋牌资源网  查看:5526  评论:0
内容摘要:因为采集某个网页遇到问题,一直无法获取页面数据。经过一番排查,发现该网站会检查客户端的Header信息,如果遇到不明确的Header信息就直接否定,返回0数据。如果Header信息正确,就会返回经过GZip压缩的数据,这样直接获取网页数据的想法破灭了。 实际上.NET已...
因为采集某个网页遇到问题,一直无法获取页面数据。

经过一番排查,发现该网站会检查客户端的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
 

标签:解密gzip压缩的网页数据流 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2021 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved