我正在尝试使用vba获取request headers
。在类似python
的其他语言中,有一种非常简单的方法来获取.headers
。但是,在vba的情况下,我会卡住。
我知道vba中有一种方法可以使用response headers
来获取.getAllResponseHeaders
。
如何使用vba获得
request headers
?
这就是我得到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
答案 0 :(得分:3)
Python .headers
(假设使用requests
库)提供响应标头,而不是请求标头。您可以在get
传递的字典中添加自定义请求标头。正如您所看到的,您可以使用getAllResponseHeaders
在vba中读取响应标头,并在键,值对中使用setRequestHeader
发送自定义标头。
我通常会使用诸如Fiddler / Dev工具的“网络”选项卡/ Wireshark之类的东西来查看发送了哪些请求标头,然后模仿这些请求标头,或者阅读相关的API指南,以指定期望的自定义请求标头。
这是该网址的Fiddler请求标头捕获的快照
WinHTTP可能有一种使用winhttpqueryheaders的方法,但是研究还不够,在大多数情况下,仅使用“网络”选项卡要简单得多。
没有与xmlhttp请求/响应关联的方法来获取请求标头。看看specification(WHATWG居住standard)中的相关方法(可能是VBA实现中的一些变化):
要处理cookie,请查看MSXML2.ServerXMLHTTP。 Example。
答案 1 :(得分:0)
您应该使用.setRequestHeader()方法以编程方式设置请求标头,否则它将成为默认的IE设置。 为什么您需要取回已经获得的数据?