Это мой первый раз, когда я пишу код (и, конечно, я впервые касаюсь VBA ...); пожалуйста, потерпите меня, если мой вопрос слишком базовый c.
Я пытаюсь войти на сайт с помощью макроса Excel VBA. После входа сайт автоматически перенаправляется на другую страницу. Как я могу получить повар ie из заголовков ответов до перенаправления страницы?
Я попробовал приведенный ниже код, но возвращаемый заголовок ответа пришел со страницы после перенаправления вместо предыдущей страницы входа.
Использовал 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