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 |