代码之家  ›  专栏  ›  技术社区  ›  kdragon

VBA-https响应文本解密

  •  0
  • kdragon  · 技术社区  · 8 年前

    在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()”是必需的吗?我如何才能成功获得回复文本?

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

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

    [+编辑]

    脚本中有一行:

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

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

    移除线路后,它就可以工作了。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Steffen Ullrich    8 年前

    我已成功获取http状态为“200”的响应文本,但正文已加密。

    这没有道理。在HTTPS中,所有内容都是加密的:请求标头和正文,以及响应标头和正文。我更希望您能够同时获得解密的响应头和正文,但正文可能是压缩的,或者是以您无法识别的格式,因此看起来像是加密。

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

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

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

    你不能。你的身体可能没有加密,或者至少没有用任何与TLS(HTTPS)连接相关的东西加密(见上文)。