Excel VBA宏;页面重定向之前可以获取Cookies吗?

时间:2020-04-08 06:34:34

标签: excel vba authentication redirect cookies

这是我第一次进行任何形式的编码(当然,这是我第一次接触VBA ...);如果我的问题太基本了,请忍受。

我正在尝试使用excel VBA宏登录网站。 登录后,网站会自动重定向到另一个页面。 在页面重定向之前,如何从响应标头中获取Cookie?

我尝试了以下代码,但是返回的响应标头来自重定向后的页面,而不是先前的登录页面。

在代码中以stackoverflow.com为例。

从Chrome检查了网络活动,结果似乎不是我需要的结果:

Request URL: https://stackoverflow.com/users/login? 
Status Code: 302 

已经研究了一段时间,但找不到解决方案。你能帮我吗?

代码:

Private Sub login()

Dim http As New ServerXMLHTTP60
Dim html As New HTMLDocument

Dim url As String
url = "https://stackoverflow.com/users/login?"

http.Open "GET", url, False
http.send

Dim fkeyString As String
fkeyString = getFkeyString(url, http, html)

Dim login_id As String
login_id = InputBox("Login ID")

Dim login_pwd As String
login_pwd = InputBox("Password")

Dim login_data As String
login_data = _
    "fkey=" & fkeyString & _
    "ssrc=login" & _
    "email=" & login_id & _
    "password=" & login_pwd & _
    "oauth_version=" & _
    "oauth_server="

Dim post_request As Object
Set post_request = CreateObject("WinHttp.WinHttpRequest.5.1")

Dim header As String

With post_request
    .Open "POST", url, False
    .setRequestHeader "content-type", "application/x-www-form-urlencoded"
    .setRequestHeader "user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
    .send login_data
End With

Cells(1, 1) = http.getAllResponseHeaders

End Sub

Private Function getFkeyString( _
    ByVal url As String, _
    ByVal http As ServerXMLHTTP60, _
    ByVal html As HTMLDocument _
    )

html.body.innerHTML = http.responseText

getFkeyString = Trim(CStr(html.getElementsByName("fkey")(0).Value))

End Function

0 个答案:

没有答案
相关问题