excel - 找不到任何获取请求 header 的方法

标签 excel vba web-scraping request-headers

我正在尝试获取 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 捕获的快照

enter image description here

WinHTTP 可能有一种使用 winhttpqueryheaders 的方法但是还没有进行足够的研究,并且在大多数情况下仅使用网络选项卡要简单得多。

没有与 xmlhttp 请求/响应关联的方法来获取请求 header 。看看specification (WHATWG living standard )用于相关方法(可能是 VBA 实现的一些变化):



要处理 cookie,请查看 MSXML2.ServerXMLHTTP。 Example .

关于excel - 找不到任何获取请求 header 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53928849/

相关文章:

excel - 使用数组使用 VBA 绘制树/格子

common-lisp - 用于解析无效 HTML 的 Common Lisp 包?

python - 如何将 url 值传递给 Scrapy 爬取中的所有后续项目?

vba - PowerPoint VBA 打开“修剪音频”对话框

arrays - 为什么 VBA 类不能通过 ByRef Array()?

python-2.7 - Scrapy没有进入解析函数

vba - 范围(单元格(...工作不正确

c# - 如果整数,OpenXML 读取错误的单元格值

vba - 对象所需的错误,数组

c# excel在excel工作表上创建一个按钮