c.rauf1986
Новичок
- Сообщения
- 14
- Репутация
- 0
Пожалуйста помогите мне решить эту проблему.
при отправке с winhttprequest получаю ответ 謟
что это такое как с ним пользоваться не знаю.Хотя должно получить ответ если не смог авторизоваться простая html код страницы с не авторизованным пользователем.и наобарот если смог авторизоваться то html код с личным кабинетом сайта.
при отправке с winhttprequest получаю ответ 謟
что это такое как с ним пользоваться не знаю.Хотя должно получить ответ если не смог авторизоваться простая html код страницы с не авторизованным пользователем.и наобарот если смог авторизоваться то html код с личным кабинетом сайта.
Код:
#include <Process.au3>
#include <GUIConstantsEx.au3>
#include <IE.au3>
Global $oIE
Global $sHTML
Global $sUrl = 'http://www.seosprint.net'
Global $sUserAgent
Global $sReferer = "http://www.seosprint.net/index.php"
Global $InpBoxUserAgent
Global $InpBoxCookies
sLogin()
Func sLogin()
$IeVerResult = _IeBrowserVersion() ;Функция который Получает Версия браузера
;============================================================================================================================
;====================================================Проверить ответ функции=================================================
;============================================================================================================================
If $IeVerResult = -1 Then
$inpBox = InputBox("версия интернет браузера", "Невозможно автоматически определить версию интернет браузера" & _
@CRLF & "Пожалуйста укажите версию браузера" & @CRLF & "Например : internet explorer 9.0 --->9" & @CRLF & _
"Например : internet explorer 10.0 --->10","","",400,200)
If @error Then
MsgBox(0,'','Версия браузера не задано')
Return
ElseIf $inpBox = ""
MsgBox(0,'','Версия браузера не задано')
Return
Else
$IeVerResult = _IeBrowserVersion($inpBox)
If $IeVerResult = -2 Then
MsgBox(0,'','Версия браузера задано неправильно')
Return
EndIf
EndIf
EndIf
MsgBox(64,"","Пожалуйста Авторизуйтесь в браузере!" & @CR & "После авторизации закройте браузер")
;============================================================================================================================
;============================================================================================================================
;============================================================================================================================
$sResult = _Authorization() ;Функция который собирает куки с сайта
;============================================================================================================================
;====================================================Проверить ответ функции=================================================
;============================================================================================================================
If IsArray($sResult) = 0 Then
If $sResult = 2 Then
MsgBox(0,'','Страница задано не правильно')
ElseIf $sResult = 3 Then
MsgBox(0,'','Время ожидания истекло.')
ElseIf $sResult = 4 Then
MsgBox(0,'','ошибка в Браузере')
ElseIf $sResult = 5 Then
MsgBox(0,'','Браузер закрыт')
EndIf
Return
Else
$sCookie = $sResult[0]
EndIf
;============================================================================================================================
;============================================================================================================================
;============================================================================================================================
$sUserAgent = _IEUserAgent() ;Функция который бирает User-Agent с (Интернет експлорер)
;============================================================================================================================
;====================================================Проверить ответ функции=================================================
;============================================================================================================================
If $sUserAgent = 2 Then
MsgBox(0,'','Страница USER AGENT задано не правильно')
ElseIf $sUserAgent = 3 Then
MsgBox(0,'','Время ожидания истекло.')
ElseIf $sUserAgent = 4 Then
MsgBox(0,'','ошибка в Браузере')
ElseIf $sUserAgent = 5 Then
MsgBox(0,'','ошибка в USER AGENT')
EndIf
If $sUserAgent = 2 Or $sUserAgent = 3 Or $sUserAgent = 4 Or $sUserAgent = 5 Then
Return
EndIf
;============================================================================================================================
;============================================================================================================================
;============================================================================================================================
$ResultLogin = sLoginWinHttp($sUserAgent,$sCookie) ;Функция посылает данные и получает ответ с помощью winhttprequest 5.1
;============================================================================================================================
;====================================================Проверить ответ функции=================================================
;============================================================================================================================
Switch $ResultLogin[0]
Case -1
MsgBox(0,'','Неизвестная ошибка')
Case 0
MsgBox(0,'','Запрос на аутентификацию составлен неверно')
$sUserAgent = ""
$sCookie = ""
$sHTML = $ResultLogin[1]
$fnameLoginPage = FileOpen(@scriptdir & "/seosprint.html",2)
FileWrite($fnameLoginPage,$sHTML)
FileClose($fnameLoginPage)
Case 1
$sHTML = $ResultLogin[1]
$fnameLoginPage = FileOpen(@scriptdir & "/seosprint.html",2)
FileWrite($fnameLoginPage,$sHTML)
FileClose($fnameLoginPage)
If StringInStr($sHTML,"Мой баланс") Then
MsgBox(0,'','Авторизация прошла успешно')
Sleep(250)
Else
MsgBox(0,'','Запрос на аутентификацию составлен неверно')
$sUserAgent = ""
$sCookie = ""
$sHTML = $ResultLogin[1]
$fnameLoginPage = FileOpen(@scriptdir & "/seosprint.html",2)
FileWrite($fnameLoginPage,$sHTML)
FileClose($fnameLoginPage)
EndIf
EndSwitch
EndFunc
Func _Authorization() ;Функция который собирает куки с сайта
;2 ~~ "Site page is not defined"
;3 ~~ "TimeOut"
;4 ~~ "Object is not defined"
;5 ~~ "Browser closed by user"
;$sResult[0] -- "Cookies"
;$sResult[1] -- "Referer"
Local $sResult[2]
$oIE = 0
$oIE = ObjCreate("Shell.Explorer.2")
$IE_Form = GUICreate("Web control", @DesktopWidth - @DesktopWidth * 0.2, @DesktopHeight - @DesktopHeight * 0.2, @DesktopWidth * 0.1, @DesktopHeight * 0.075)
GUICtrlCreateObj($oIE, @DesktopWidth * 0.01, @DesktopWidth * 0.01, (@DesktopWidth - @DesktopWidth * 0.2) - (@DesktopWidth * 0.02),(@DesktopHeight - @DesktopHeight * 0.2) - (@DesktopWidth * 0.02))
GUISetState(@SW_SHOW,$IE_Form) ;Show GUI
$IEnav = IENavigateUrl($oIE,$sUrl,$IE_Form)
If $IEnav = 2 Then
GUIDelete($IE_Form)
Return 4
ElseIf $IEnav = 3 Then
GUIDelete($IE_Form)
Return 2
ElseIf $IEnav = 4 Then
$MsgBoxStatus = MsgBox(4,"","Время ожидания истекло" & @CRLF & "Продолжить ?")
If $MsgBoxStatus = 7 Then ;No
GUIDelete($IE_Form)
Return 3
EndIf
ElseIf $IEnav = 5 Then
GUIDelete($IE_Form)
Return 5
EndIf
$oDoc = _IEDocGetObj($oIE)
While 1
$nMsgLogin = GUIGetMsg($IE_Form)
If $nMsgLogin = $GUI_EVENT_CLOSE Then
$sResult[0] = $oDoc.cookie
$sResult[1] = $oDoc.location.href
ExitLoop
EndIf
WEnd
GUIDelete($IE_Form)
Return $sResult
EndFunc
Func _IEUserAgent() ;Функция который бирает User-Agent с (Интернет експлорер)
;2 ~~ "Site page is not defined"
;3 ~~ "TimeOut"
;4 ~~ "Object is not defined"
;5 ~~ "User-Agent not found"
$oIE = 0
$oIE = ObjCreate("Shell.Explorer.2")
$IE_Form = GUICreate("Web control", @DesktopWidth - @DesktopWidth * 0.2, @DesktopHeight - @DesktopHeight * 0.2, @DesktopWidth * 0.1, @DesktopHeight * 0.075)
GUICtrlCreateObj($oIE, @DesktopWidth * 0.01, @DesktopWidth * 0.01, (@DesktopWidth - @DesktopWidth * 0.2) - (@DesktopWidth * 0.02),(@DesktopHeight - @DesktopHeight * 0.2) - (@DesktopWidth * 0.02))
GUISetState(@SW_SHOW,$IE_Form) ;SHOW GUI
$IEnav = IENavigateUrl($oIE,"http://www.whoishostingthis.com/tools/user-agent/")
If $IEnav = 2 Then
GUIDelete($IE_Form)
Return 4
ElseIf $IEnav = 3 Then
GUIDelete($IE_Form)
Return 2
ElseIf $IEnav = 4 Then
$MsgBoxStatus = MsgBox(4,"","Время ожидания истекло" & @CRLF & "Продолжить ?")
If $MsgBoxStatus = 7 Then ;No
GUIDelete($IE_Form)
Return 3
EndIf
EndIf
$oDoc = _IEDocGetObj($oIE)
$sHtml = $oDoc.body.innerHTML
$UserAgent = StringRegExp($sHtml,'"info-box user-agent">(.*?)<',3)
If @error Then
GUIDelete($IE_Form)
Return 5
EndIf
GUIDelete($IE_Form)
Return $UserAgent[0]
EndFunc
Func sLoginWinHttp($sUserAgent,$sCookie) ;Функция посылает данные и получает ответ с помощью winhttprequest 5.1
;Return -1 "Неизвестная ошибка"
;Return 0 "Error"
;Return 1 "OK"
Local $result[2]
If $sUserAgent = "" Or $sCookie = "" Then
$result[0] = -1
$result[1] = 0
Return $result
EndIf
Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
;******************************************************
$oHTTP.Open("GET", $sUrl & "/index.php", true)
$oHTTP.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
$oHTTP.SetRequestHeader("Referer", "http://www.seosprint.net/index.php")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,az;q=0.2,tr;q=0.2")
$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
$oHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
$oHTTP.SetRequestHeader("Host", "www.seosprint.net")
$oHTTP.SetRequestHeader("Connection", "Keep-Alive")
$oHTTP.SetRequestHeader("Cookie", $sCookie)
$oHTTP.Send()
$oHTTP.WaitForResponse()
;******************************************************
If $oHTTP.Status = 200 Then
$sHTML = $oHTTP.ResponseText()
If StringInStr($sHTML,"Мой баланс") Then
$ResponseText = $oHTTP.ResponseText()
$result[0] = 1
$result[1] = $ResponseText
Return $result
Else
$ResponseText = $oHTTP.ResponseText()
$result[0] = 0
$result[1] = $ResponseText
Return $result
EndIf
EndIf
$result[0] = -1
$result[1] = 0
Return $result
EndFunc
Func _IeBrowserVersion($IeVersion = "") ;Функция который Получает Версия браузера
;Return -1 "Невозможно определить версию Интернет Браузера"
;Return -2 "Неправильно заданы параметры интернет Браузера"
Local $regValue
If $IeVersion = "" Then
Local $sVersion = FileGetVersion("C:\Program Files\Internet Explorer\iexplore.exe")
If @error Then
Return -1
EndIf
$IEver = StringRegExp($sVersion,"^(.*?)\.",3)
If @error Then
Return -1
EndIf
If $IEver[0] = 11 Then
$regValue = "0x2AF8"
ElseIf $IEver[0] = 10 Then
$regValue = "0x2710"
ElseIf $IEver[0] = 9 Then
$regValue = "0x2328"
ElseIf $IEver[0] = 8 Then
$regValue = "0x1F40"
ElseIf $IEver[0] = 7 Then
$regValue = "0x1B58"
Else
Return -1
EndIf
Else
If $IeVersion = 11 Then
$regValue = "0x2AF8"
ElseIf $IeVersion = 10 Then
$regValue = "0x2710"
ElseIf $IeVersion = 9 Then
$regValue = "0x2328"
ElseIf $IeVersion = 8 Then
$regValue = "0x1F40"
ElseIf $IeVersion = 7 Then
$regValue = "0x1B58"
Else
Return -2
EndIf
EndIf
RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID))
If @error Then
RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID), "REG_DWORD", $regValue)
EndIf
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID))
If @error Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID), "REG_DWORD", $regValue)
EndIf
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID))
If @error Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", _ProcessGetName(@AutoItPID), "REG_DWORD", $regValue)
EndIf
EndFunc
Func IENavigateUrl($IEObject,$sUrl,$GuiWindow = 0,$TimeOutSecond = 60) ;Функция навигейт в браузера
;1 ~~ "Success"
;2 ~~ "Object is not defined"
;3 ~~ "Site page is not defined"
;4 ~~ "TimeOut"
;5 ~~ "Browser closed by user"
If Not IsObj($IEObject) Then
Return 2
EndIf
$IEObject.navigate($sUrl)
If @error Then
Return 3
EndIf
Local $NowTime = @HOUR * 3600 + @MIN * 60 + @SEC
Local $n = 0
While 1
If $GuiWindow <> 0 Then
$nMsgLogin = GUIGetMsg()
If $nMsgLogin = $GUI_EVENT_CLOSE Then
Return 5
EndIf
EndIf
If $IEObject.readyState = 4 Or String($IEObject.readyState) = "complete" Then
$shtml = _IEBodyReadHTML($IEObject)
If StringInStr($IEObject.document.body.innerHTML,'This page can’t be displayed') = 0 And StringInStr($IEObject.document.body.innerHTML,'Navigation to the webpage was canceled') = 0 Then
Return 1
EndIf
EndIf
If $NowTime + $TimeOutSecond <= @HOUR * 3600 + @MIN * 60 + @SEC Then
Return 4
EndIf
WEnd
EndFunc