VBS获取GZIP压缩的HTTP内容的实现代码
导读:收集整理的这篇文章主要介绍了VBS获取GZIP压缩的HTTP内容的实现代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 不少网站为了提高加载速度,启用HTTP服务器的GZIP压缩功...
收集整理的这篇文章主要介绍了VBS获取GZIP压缩的HTTP内容的实现代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 不少网站为了提高加载速度,启用HTTP服务器的GZIP压缩功能,当客户端发送的HTTP请求中声明可以接受GZIP编码时,服务器自动对HTTP响应内容进行GZIP压缩。但是,在vbS中想自动对GZIP编码进行解压就没有那么容易了。
不同组件对GZIP压缩的处理不尽相同,首先看MsXMl2.XMLHTTP:
'By Demon'http://demon.twDim httpSet http = CreateObject("Msxml2.XMLHTTP")http.oPEn "GET", "https://www.baidu.COM", Falsehttp.setRequestHeader "Accept-Encoding", "gzip"http.sendWScript.Echo http.responseText从测试的结果看,Msxml2.XMLHTTP会自动进行GZIP解压,GOOD!
其次是Msxml2.ServerXMLHTTP:
'By DemonDim httpSet http = CreateObject("Msxml2.ServerXMLHTTP")http.open "GET", "https://www.baidu.com", Falsehttp.setRequestHeader "Accept-Encoding", "gzip"http.sendWScript.Echo http.responseText很可惜,返回的是乱码。再看看WinHttp.WinHttPRequest.5.1:
'By DemonDim httpSet http = CreateObject("WinHttp.WinHttpRequest.5.1")http.open "GET", "https://www.baidu.com", Falsehttp.setRequestHeader "Accept-Encoding", "gzip"http.sendWScript.Echo http.responseText依然是乱码。虽然说一般情况下用Msxml2.XMLHTTP组件已经绰绰有余了,但是有些时候还是不行的,比如不能发送Cookie,不能伪造Referer等等。所以还是得想办法对GZIP进行解码,办法无外乎两种,自己用VBS写算法或者调用第三方组件。
算法我就偷懒不写了,感觉效率不会太高,哪位朋友感兴趣可以写来玩玩。找了个不错的第三方组件(居然用第三方,我果然老了)Chilkat.Gzip:
Dim GzipSet Gzip = CreateObject("Chilkat.Gzip")Gzip.Unlockcomponent ""'By DemonDim httpSet http = CreateObject("WinHttp.WinHttpRequest.5.1")http.open "GET", "https://www.baidu.com", Falsehttp.setRequestHeader "Accept-Encoding", "gzip"http.sendWScript.Echo Gzip.UncomPressString(http.responseBody, "utf-8")顺便说一下这个组件是收费的,可以免费试用30天,所以还是应该用VBS来实现?
原文:http://demon.tw/programming/vbs-http-gzip.html
您可能感兴趣的文章:- 在IIS上启用Gzip压缩详细方法(HTTP压缩)
- 在IIS上启用Gzip压缩 (HTTP压缩)
- PHP中HTTP方式下的Gzip压缩传输方法举偶
- 关于HTTP传输中gzip压缩的秘密探索分析 @H_512_46@
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: VBS获取GZIP压缩的HTTP内容的实现代码
本文地址: https://pptw.com/jishu/610105.html
