Данный макрос выполняет 2 HTTP запроса (GET и POST) для авторизации на сайте atsenergo.ru
В случае успешной авторизации, функция возвращает идентификатор сессии,
который используется в дальнейших запросах для скачивания файлов.
Макрос представляется сайту браузером Google Chrome
Чтобы код сработал, надо задать правильные логин-пароль
Макрос опубликован в качестве примера использования объекта WinHttpRequest для работы с сайтами.
Const КодУчастника = "ABCDEFGH" Const Пользователь = "ABCDEFGH" Const Пароль = "qwerty" Function atsenergo_auth() As String ' возвращает идентификатор сессии в случае удачной авторизации, или пустую строку при ошибке On Error Resume Next Dim oXMLHTTP As New WinHttpRequest With oXMLHTTP ' первый запрос - для получения идентификатора сессии .Open "GET", "https://www.atsenergo.ru/auth", False .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" .setRequestHeader "Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7" .setRequestHeader "Host", "www.atsenergo.ru" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "Connection", "keep-alive" .setRequestHeader "Origin", "https://www.atsenergo.ru" .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36" .send cookie$ = .getResponseHeader("Set-Cookie") ' берем заголовок Set-Cookie из ответа сервера If Not cookie$ Like "*JSESSIONID=*" Then MsgBox "Ошибка получения идентификатора сессии", vbCritical, "Обратитесь к разработчику программы" Exit Function End If ' отключаем редирект .Option(WinHttpRequestOption_EnableRedirects) = False ' второй запрос - для авторизации .Open "POST", "https://www.atsenergo.ru/auth", False PostData = "partcode=" & КодУчастника & "&username=" & Пользователь & "&password=" & Пароль .setRequestHeader "Cookie", cookie$ .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" .setRequestHeader "Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7" .setRequestHeader "Host", "www.atsenergo.ru" .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "Connection", "keep-alive" .setRequestHeader "Origin", "https://www.atsenergo.ru" .setRequestHeader "Referer", "https://www.atsenergo.ru/auth" .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36" .send PostData Location$ = .getResponseHeader("Location") ' при удачной авторизации сайт перенаправляет на указанную страницу If Not Location$ Like "*www.atsenergo.ru/nreports*" Then MsgBox "Ошибка авторизации на сайте atsenergo.ru", vbCritical, "Обратитесь к разработчику программы" Exit Function End If atsenergo_auth = cookie$ ' возвращает ID сессии, если авторизация прошла удачно End With End Function
Комментарии
Отправить комментарий