VBA - https响应文本解密
VBA - https response text decryption
在VBA中,我需要请求http消息并解析响应文本。
我已成功获得 http 状态为“200”的响应文本,但 body 已加密。 (headers 不是)所以我一直在尝试解密消息,但由于对 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中,如何使用证书解码响应body
- 我真的不知道如何解密响应文本。我知道我的本地计算机上有一个适当的证书,证书中的密钥可以用来解密消息,但我如何在 VBA 中做到这一点?我真的找不到任何关于此的有用文章。
请让我知道我的误解,并给我任何解决问题的线索。
[+编辑]
在脚本中,有一行:
.SetRequestHeader "Accept-Encoding", "gzip , deflate"
我在问题中省略了这一行。因为我认为这个问题是关于 SSL 的,所以我故意删除了一些我猜想的不是真正必要的行。 (这是完全错误的)
去掉这条线,就可以了。
I've succeeded to get the response text with http status '200', but the body is encrypted.
这没有道理。在 HTTPS 中,所有内容都是加密的:请求 header 和 body 以及响应 header 和 body。我宁愿你得到解密的响应 header 和 body 但 body 可能是压缩的或者是你不认识的格式所以它看起来像你的加密.
'SetClientCertificate()' is necessary? How could I get the response text successfully?
如果服务器要求客户端使用客户端证书对自己进行身份验证,则需要这样做。大多数网站不需要这个。
In VBA, how to use certificate to decode the response body
你不能。你得到的 body 可能没有加密,或者至少没有用任何与 TLS (HTTPS) 连接相关的东西加密(见上文)。
在VBA中,我需要请求http消息并解析响应文本。 我已成功获得 http 状态为“200”的响应文本,但 body 已加密。 (headers 不是)所以我一直在尝试解密消息,但由于对 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中,如何使用证书解码响应body
- 我真的不知道如何解密响应文本。我知道我的本地计算机上有一个适当的证书,证书中的密钥可以用来解密消息,但我如何在 VBA 中做到这一点?我真的找不到任何关于此的有用文章。
请让我知道我的误解,并给我任何解决问题的线索。
[+编辑]
在脚本中,有一行:
.SetRequestHeader "Accept-Encoding", "gzip , deflate"
我在问题中省略了这一行。因为我认为这个问题是关于 SSL 的,所以我故意删除了一些我猜想的不是真正必要的行。 (这是完全错误的)
去掉这条线,就可以了。
I've succeeded to get the response text with http status '200', but the body is encrypted.
这没有道理。在 HTTPS 中,所有内容都是加密的:请求 header 和 body 以及响应 header 和 body。我宁愿你得到解密的响应 header 和 body 但 body 可能是压缩的或者是你不认识的格式所以它看起来像你的加密.
'SetClientCertificate()' is necessary? How could I get the response text successfully?
如果服务器要求客户端使用客户端证书对自己进行身份验证,则需要这样做。大多数网站不需要这个。
In VBA, how to use certificate to decode the response body
你不能。你得到的 body 可能没有加密,或者至少没有用任何与 TLS (HTTPS) 连接相关的东西加密(见上文)。