vbs判断http服务器文件是否存在,VBS获取GZIP压缩的HTTP内容

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

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

'By Demon

'http://demon.tw

Dimhttp

Sethttp =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

'http://demon.tw

Dimhttp

Sethttp =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

'http://demon.tw

Dimhttp

Sethttp =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:

DimGzip

SetGzip =CreateObject("Chilkat.Gzip")

Gzip.UnlockComponent""

'By Demon

'http://demon.tw

Dimhttp

Sethttp =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来实现?

随机文章:

这篇文章发布于 2015年10月17日,星期六,18:29,归类于 程序设计。您可以跟踪这篇文章的评论通过 RSS 2.0 feed。

您可以留下评论,或者从您的站点trackback。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值