找不到任何方式来获取请求 headers

Can't find any way to get request headers

我正在尝试使用 vba 获取 request headers。在 python 等其他语言中,有一种非常简单的方法可以获得 .headers。但是,在 vba 的情况下,我被卡住了。 我知道 vba 中有一种方法可以通过使用 .getAllResponseHeaders.

获得 response headers

如何使用 vba 获得 request headers

我就是这样得到的 response headers:

Sub GetRequestHeaders()
    Const URL$ = "https://whosebug.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

您应该使用 .setRequestHeader() 方法以编程方式设置您的请求 headers,否则它将成为默认的 IE 设置。 为什么需要取回已有的数据?

Python .headers(假设使用 requests 库)提供响应 headers,而不是请求 headers。您在使用 get 传递的字典中添加自定义请求 headers。正如您所见,您可以使用 getAllResponseHeaders 读取 vba 中的响应 headers 并发送自定义 headers 以及键值对中的 setRequestHeader

我通常会使用 Fiddler/Dev 工具网络 tab/Wireshark 之类的东西来查看发送了哪些请求 header 然后模仿这些请求或阅读相关的 API 指导说明预计自定义请求 header。

这是 Fiddler 请求 header 捕获 url

的快照

WinHTTP 可能有一种使用 winhttpqueryheaders 的方法,但研究还不够,在大多数情况下使用网络选项卡要简单得多。

没有与 xmlhttp request/response 关联的方法来获取请求 headers。查看相关方法的 specification (WHATWG living standard)(在 VBA 实现中可能会有一些变化):

要处理 cookie,请参阅 MSXML2.ServerXMLHTTP。 Example.