我正在尝试获取 request headers
使用 vba。在其他语言中,例如 python
有一个非常简单的方法可以得到 .headers
.但是,在 vba 的情况下,我被卡住了。
我知道虽然在 vba 中有一种方法可以获取 response headers
通过使用 .getAllResponseHeaders
.
我怎样才能得到request headers
使用vba?
这就是我得到 response headers
的方式:
Sub GetRequestHeaders()
Const URL$ = "https://stackoverflow.com/questions/tagged/web-scraping"
Dim Http As New XMLHTTP60, S$
With Http
.Open "GET", URL, False
.send
S = .getAllResponseHeaders
MsgBox S
End With
End Sub
最佳答案
python .headers
(假设使用 requests
库)提供响应 header ,而不是请求 header 。您在使用 get
传递的字典中添加自定义请求 header .正如您所看到的,您可以使用 getAllResponseHeaders
读取 vba 中的响应 header 。并使用 setRequestHeader
发送自定义 header 在键值对中。
我通常会使用 Fiddler/Dev 工具网络选项卡/Wireshark 之类的东西来查看发送了哪些请求 header ,然后模仿这些 header 或阅读相关的 API 指南,指定预期的自定义请求 header 。
这是该 url 的 Fiddler 请求 header 捕获的快照
WinHTTP 可能有一种使用 winhttpqueryheaders 的方法但是还没有进行足够的研究,并且在大多数情况下仅使用网络选项卡要简单得多。
没有与 xmlhttp 请求/响应关联的方法来获取请求 header 。看看specification (WHATWG living standard )用于相关方法(可能是 VBA 实现的一些变化):
要处理 cookie,请查看 MSXML2.ServerXMLHTTP。 Example .
关于excel - 找不到任何获取请求 header 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53928849/