Excel VBA Macro; Могу ли я получить Cookies до перенаправления страницы? - PullRequest
0 голосов
/ 08 апреля 2020

Это мой первый раз, когда я пишу код (и, конечно, я впервые касаюсь 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...