Страницы: 1
RSS
Авторизация через msxml2.xmlhttp
 
Добрый день!

Подскажите, пожалуйста, как авторизироваться на сайте из-под Excel через msxml2.xmlhttp? Перечитал, наверное, все форумы, ответа так и не нашел, точнее нашел, но не понимаю какому заголовку передавать значения.

Прошу подсказать как заставить макрос авторизироваться. Спасибо.
Код вкратце получился такой, где URL = "https://provagon.com";, а заголовок Authorization взят из одного из примеров, найденных на форумах. Поля login и Password заданы корректно, и в ручную с их помощью можно пройти авторизацию.
Код
...
With oHttp
   .Open "get", URL, False, login, Password
   .setRequestHeader "Authorization", "Basic " + login + ":" + Password
   .send
   arr = Split(.responsetext, vbLf)
'   MsgBox .getAllResponseHeaders()
End With
....
Изменено: Arfonit - 20.11.2019 13:52:37
 
Информация для размышления.
Скрытый текст
 
Цитата
doober написал:
Информация для размышления.
doober, спасибо за наводку. Однако, мне явно не хватает знаний, чтобы сообразить что к чему.

Правильно ли я понял, что:
1. В качестве URL должна быть указана ссылка на страницу с авторизацией?
2. Я должен в SiteID вместо "Ник" и "Пароль" подставить свои значения и отправить эту строку запросом?
3. В чем отличие методов get от post? Где можно подробнее про них почитать?
4. Я могу как-то проверить, что авторизация на сайте прошла успешно?

В целом буду рад советам, где почитать побольше про эту функцию.
 
Вы нашли где-то кусок кода для авторизации, но у вас не тот случай
В вашем случае (как и на 99% сайтов) авторизацию надо выполнять POST запросом
пример кода можно посмотреть здесь:
https://excelvba.ru/code/atsenergo_login

видеоинструкция, где посмотреть в браузере, какие данные нужны для POST запроса:
https://www.youtube.com/watch?v=4bRwPIX8Wc0&feature=youtu.be&t=568
 
Игорь, спасибо большое! Все получилось!
 
Добрый день!

К сожалению, вынужден опять вернуться к этому вопросу.

Иногда при попытке авторизоваться выдает такую ошибку (Сбой скачивания указанного ресурса).

Вот часть кода, в котором ошибка (на строке с .Send).

Код
PostData = "username=" & login & "&password=" & Password
'авторизация на сайте
With oHttp
   .Open "post", URL_autorization, False
   .send PostData
End With

Подскажите, пожалуйста, с чем она может быть связана?
Изменено: Arfonit - 27.11.2019 15:32:24
 
надо не кусок кода показывать, а макрос целиком
как у вас создается объект oHttp?
так?
Код
 oHttp = CreateObject("MSXML2.XMLHTTP")

а надо так:
Код
 oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
 
Цитата
Игорь написал:
а надо так:Код ? 1oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
Игорь, спасибо за ответ.

Поправил объявление как Вы сказали, однако теперь я получаю другую ошибку: "Время ожидания операции истекло".

Я пробовал использовать метод .SetTimeouts с различными значениями, однако и это не помогло. Ошибка появляется на той же строчке .send PostData.

Подскажите, пожалуйста, в какую сторону копать?

Код выглядит так:
Код
Sub Парсер()

Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1") 
Set objRegExp = CreateObject("VBScript.RegExp") 

URL = "https://provagon.com/rolling%20stock"
URL_autorization = "https://provagon.com/web/CloseSitePS.nsf?Login"
login = "****"
Password = "****"
Chapter_to_find = "****"
PostData = "username=" & login & "&password=" & Password

With oHttp
   .Open "post", URL_autorization, False
   .send PostData
End With

end sub 
Страницы: 1
Наверх