Авторизация на сайте atsenergo.ru

Данный макрос выполняет 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

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  _   _   _       ____                _        
| \ | | | |__ | _ \ _ __ ___ | | ___
| \| | | '_ \ | |_) | | '_ ` _ \ | | / __|
| |\ | | | | | | _ < | | | | | | | | | (__
|_| \_| |_| |_| |_| \_\ |_| |_| |_| |_| \___|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.