VBA-https响应文本解密



在VBA中,我需要请求http消息并解析响应文本。我已经成功地获得了http状态为"200"的响应文本,但正文是加密的。(头不是)所以我一直在尝试解密消息,但由于对SSL概念和编程技能了解不足,我陷入了困境。

With oRequest
.Open "GET", sUrl, False
.SetRequestHeader "Accept", "*/*"
.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
.SetRequestHeader "Connection", "Keep -Alive"
'.SetClientCertificate ("HKEY_LOCAL_MACHINE/Software/Microsoft/SystemCertificates/CA/Certificates")   
.Send 
sResult = .GetAllResponseHeaders
Debug.Print sResult
sResult = .ResponseText
Debug.Print sResult

上面的剧本就是我写的。对此,我有一些问题。

1.是否需要"SetClientCertificate()"?我如何才能成功获得回复文本

  • 正如我所搜索的,"SetClientCertificate()"是向服务器发送ssl消息的方法。但是,我已经在没有该方法的情况下成功地发送了一条消息(并得到了响应)。我不明白这是怎么回事

2.在VBA中,如何使用证书对响应体进行解码

  • 我真的不知道如何解密响应文本。我知道我的本地计算机中有一个合适的证书,证书中的密钥可以用来解密消息,但我如何在VBA中做到这一点?我真的找不到任何关于这方面的有用文章

请让我知道我误解了什么,并给我任何解决问题的线索。

[+编辑]

在脚本中,有一行:

.SetRequestHeader "Accept-Encoding", "gzip , deflate"

我在问题中省略了这一行。因为我认为问题是关于SSL的,所以我故意删除了一些我猜测不是真正必要的行。(这完全是错误的)

去掉这条线就行了。

我成功地获得了http状态为"200"的响应文本,但正文是加密的。

这没有意义。在HTTPS中,所有内容都是加密的:请求标头和正文,以及响应标头和正文。我更希望你能得到解密的响应头和正文,但正文可能是压缩的,或者是你无法识别的格式,所以它看起来像是加密的。

是否需要"SetClientCertificate()"?我如何才能成功获得回复文本?

如果服务器要求客户端使用客户端证书对自己进行身份验证,则需要这样做。大多数网站都不需要这个。

在VBA中,如何使用证书对响应体进行解码

你不能。您所拥有的主体可能没有加密,或者至少没有使用与TLS(HTTPS)连接相关的任何内容进行加密(见上文)。

最新更新