2017-10-08 59 views
0

在VBA中,我需要請求http消息並解析響應文本。 我已經成功地獲得了http狀態爲'200'的響應文本,但正文已加密。 (頭文件不是)所以我一直試圖解密這個消息,但是由於對SSL概念和編程技巧的瞭解不多,我就陷入了困境。VBA - https響應文本解密

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()」是發送的消息發送到服務器的方法。但是,我沒有使用這種方法發送(並獲得響應)消息。我無法理解這是如何工作的。

2.在VBA中,如何使用證書進行解碼響應主體

  • 我真的沒有關於如何解密響應文本的想法。我知道我的本地計算機中有合適的證書,證書中的密鑰可用於解密該消息,但我如何在VBA中執行此操作?我真的找不到有關這方面的有用文章。

請讓我知道我誤解了什麼,並給我任何線索來解決問題。

[+編輯]

腳本

,有一句臺詞:

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

我省略了在這個問題這條線。因爲我認爲這個問題是關於SSL的,所以我故意刪除了一些根本沒有必要的行。 (這是完全錯誤的)

隨着刪除線,它的作品。

回答

2

我已經成功地獲得了http狀態'200'的響應文本,但正文已加密。

這沒有意義。在HTTPS中,所有內容都被加密:請求標頭和正文以及響應標題和正文。我寧可期望你得到解密的響應標題和正文,但是正文可能是壓縮的,或者是你無法識別的格式,因此它看起來像你的加密。

'SetClientCertificate()'是必要的嗎?我怎樣才能成功獲得回覆文本?

如果服務器要求客戶端使用客戶端證書對自身進行身份驗證,則這是必需的。大多數網站不需要這個。

在VBA中,如何使用證書進行解碼響應主體

你不能。並且您擁有的身體可能未加密或者至少沒有使用與TLS(HTTPS)連接相關的任何內容加密(請參閱上文)。

+0

非常感謝。問題不在於加密,而在於您提到的壓縮。我刪除了行 「.SetRequestHeader」Accept-Encoding「,」gzip,deflate「 然後它的工作原理是這樣的行不寫在我原來的問題(只是我錯誤張貼或編輯) 謝謝。我應該更多地研究這一點,坦率地說,我不會100%理解發生了什麼。 – kdragon