Function auth() As String
' возвращает идентификатор сессии в случае удачной авторизации, или пустую строку при ошибке
On Error Resume Next
Dim oXMLHTTP As New WinHttpRequest
With oXMLHTTP
' первый запрос - для получения идентификатора сессии
.Open "GET", "http://krsk.24au.ru/", False
.setRequestHeader "Host", "krsk.24au.ru"
.setRequestHeader "Connection", "keep-alive"
.setRequestHeader "Cache-Control", "max-age=0"
.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"
.setRequestHeader "Referer", "http://krsk.24au.ru/"
.setRequestHeader "Accept-Encoding", "gzip , deflate, sdch"
.setRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
.send
For Each .getResponseHeader("Set-Cookie") In .getAllResponseHeaders()
cookie$ = cookie$ + .getResponseHeader("Set-Cookie")
Next
If Not cookie$ Like "*SessionId=*" Then
MsgBox "Ошибка получения идентификатора сессии", vbCritical, "Обратитесь к разработчику программы"
Exit Function
End If
' отключаем редирект
.Option(WinHttpRequestOption_EnableRedirects) = False
' второй запрос - для авторизации
.Open "POST", "http://common.24au.ru/login/", False
PostData = "ReturnUrl=http://krsk.24au.ru/&UserName=" & Пользователь & "&Password=" & Пароль & "&RememberMe=false"
.setRequestHeader "Host", "common.24au.ru"
.setRequestHeader "Connection", "keep-alive"
.setRequestHeader "Content-Length", "88"
.setRequestHeader "Cache-Control", "max-age=0"
.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
.setRequestHeader "Origin", "http://krsk.24au.ru"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.setRequestHeader "Referer", "http://krsk.24au.ru/"
.setRequestHeader "Accept-Encoding", "gzip , deflate"
.setRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
.setRequestHeader "Cookie", cookie$
.send PostData
For Each .getResponseHeader("Set-Cookie") In .getAllResponseHeaders()
cookie$ = cookie$ + .getResponseHeader("Set-Cookie")
Next
Location$ = .getResponseHeader("Location") ' при удачной авторизации сайт перенаправляет на указанную страницу
MsgBox "Location " & Location
If Not Location$ Like "*http://krsk.24au.ru/*" Then
MsgBox "Ошибка авторизации на сайте atsenergo.ru", vbCritical, "Обратитесь к разработчику программы"
Exit Function
End If
'Идем на Location
.Open "GET", Location$, False
.setRequestHeader "Host", "krsk.24au.ru"
.setRequestHeader "Connection", "keep-alive"
.setRequestHeader "Cache-Control", "max-age=0"
.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"
.setRequestHeader "Referer", "http://common.24au.ru/login/"
.setRequestHeader "Accept-Encoding", "gzip , deflate, sdch"
.setRequestHeader "Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
.setRequestHeader "Cookie", cookie$
.send
cookie$ = .getResponseHeader("Set-Cookie")
auth = cookie$
htmlau = .responseText
Open "C:\test.txt" For Output As #1
Print #1, htmlau
Close #1
End With
End Function
|