VBS获取GZIP压缩的HTTP内容的实现代码
来源:易贤网 阅读:855 次 日期:2016-06-30 10:00:54
温馨提示:易贤网小编为您整理了“VBS获取GZIP压缩的HTTP内容的实现代码”,方便广大网友查阅!

这篇文章主要介绍了VBS获取GZIP压缩的HTTP内容的实现代码,需要的朋友可以参考下

不少网站为了提高加载速度,启用HTTP服务器的GZIP压缩功能,当客户端发送的HTTP请求中声明可以接受GZIP编码时,服务器自动对HTTP响应内容进行GZIP压缩。但是,在VBS中想自动对GZIP编码进行解压就没有那么容易了。

不同组件对GZIP压缩的处理不尽相同,首先看Msxml2.XMLHTTP:

'By Demon

'http://demon.tw

Dim http

Set http = CreateObject("Msxml2.XMLHTTP")

http.open "GET", "https://www.baidu.com", False

http.setRequestHeader "Accept-Encoding", "gzip"

http.send

WScript.Echo http.responseText

从测试的结果看,Msxml2.XMLHTTP会自动进行GZIP解压,GOOD!

其次是Msxml2.ServerXMLHTTP:

'By Demon

Dim http

Set http = CreateObject("Msxml2.ServerXMLHTTP")

http.open "GET", "https://www.baidu.com", False

http.setRequestHeader "Accept-Encoding", "gzip"

http.send

WScript.Echo http.responseText

很可惜,返回的是乱码。再看看WinHttp.WinHttpRequest.5.1:

'By Demon

Dim http

Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

http.open "GET", "https://www.baidu.com", False

http.setRequestHeader "Accept-Encoding", "gzip"

http.send

WScript.Echo http.responseText

依然是乱码。虽然说一般情况下用Msxml2.XMLHTTP组件已经绰绰有余了,但是有些时候还是不行的,比如不能发送Cookie,不能伪造Referer等等。所以还是得想办法对GZIP进行解码,办法无外乎两种,自己用VBS写算法或者调用第三方组件。

算法我就偷懒不写了,感觉效率不会太高,哪位朋友感兴趣可以写来玩玩。找了个不错的第三方组件(居然用第三方,我果然老了)Chilkat.Gzip:

Dim Gzip

Set Gzip = CreateObject("Chilkat.Gzip")

Gzip.UnlockComponent ""

'By Demon

Dim http

Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

http.open "GET", "https://www.baidu.com", False

http.setRequestHeader "Accept-Encoding", "gzip"

http.send

WScript.Echo Gzip.UncompressString(http.responseBody, "utf-8")

顺便说一下这个组件是收费的,可以免费试用30天,所以还是应该用VBS来实现?

更多信息请查看脚本栏目
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标