Использование файла cookie IE 11 в vbscript WinHttp.WinHttpRequest.5.1 GET

Я пытаюсь получить данные веб-сайта с помощью WinHttp.WinHttpRequest.5.1. Веб-сайт требует входа в систему, а файл cookie хранится в IE11. WinHttp.WinHttpRequest.5.1 создает собственный экземпляр и, следовательно, не входит на запрошенный веб-сайт. Есть ли способ использовать активный файл cookie из IE11 в запросе WinHttp.WinHttpRequest.5.1?

myURL = "https://postman-echo.com/get?foo1=bar1&foo2=bar2"
Set oXMLHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oXMLHttp.Open "GET", myURL , False
oXMLHttp.send
    ohtmlFile.Write oXMLHttp.responseText
    ohtmlFile.Close

person Cody Matthew    schedule 08.10.2019    source источник
comment
Взгляните на Получить ВСЕ файлы cookie из Internet Explorer. В ответ файлы cookie извлекаются из текстовых файлов в папке IE. Если вам просто нужно войти в API, я предлагаю вам напрямую передать необходимые учетные данные в своем HTTP-запросе.   -  person Étienne Laneville    schedule 08.10.2019


Ответы (2)


Вы можете попробовать использовать метод WinHttpRequest GetResponseHeader или проанализировать результат метода GetAllResponseHeaders, чтобы получить значение cookie. Затем с помощью метода SetRequestHeader добавляет, изменяет или удаляет заголовок HTTP-запроса. Более подробную информацию можно найти в этой статье и эта ветка.

person Zhi Lv    schedule 08.10.2019
comment
Я не думаю, что у него есть значения cookie по первоначальному запросу, это то, что он пытается получить. Он не может получить их из ответа, потому что не может разместить запрос без файлов cookie. - person Étienne Laneville; 08.10.2019

Если веб-сайт требует авторизации, обычно вы можете предоставить эту информацию с помощью базовой аутентификации HTTP. Обычно это делается добавлением специального заголовка (Authorization) мы добавляем username:password закодированный в base64.

Ваш код может выглядеть так:

Dim sAuthorization
sAuthorization = "Basic Zm9vOmJhcg=="

oXMLHttp.Open "GET", myURL , False
oXMLHttp.setRequestHeader "Authorization", sAuthorization
oXMLHttp.send

Однако это будет зависеть от API, вы можете проверить требования аутентификации. Он может использовать другой метод, и вам может не понадобиться кодировать файл username:password. Иногда вместо этого вы предоставляете ключ API. Какой бы метод ни использовался, вы должны иметь возможность обеспечить требуемую аутентификацию в своем HTTP-запросе.

person Étienne Laneville    schedule 08.10.2019