Автор Тема: Выдать сообщение при неверном логине или пароле входа на сайт (скрытый режим)  (Прочитано 4031 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн xmel-sera [?]

  • Новичок
  • *
  • Сообщений: 16
  • Репутация: 0
    • Награды
Здравствуйте.  Столкнулся с проблеммой. Есть программа. В окно скрипта забивается логин и пароль. Скрипт без браузера входит на сайт, вбивает логин и пароль, получает исходный код страницы, которая располагается после формы входа. Потом из этого кода выдергивает нужные значения, записывает их в массив, и из массива уже присваивает эти значения элементам Label в окне скрипта.
Задача такая.
При вводе неверного пароля прога вылетает с ошибкой типа

Код: AutoIt [Выделить]
$CTRL_lbl1 = GUICtrlCreateLabel ( $aResult[1], -140, 0, 140, 20)
$CTRL_lbl1 = GUICtrlCreateLabel ( ^ ERROR


Просто на странице после неверного ввода пароля в массив записывается только одно значение $aResult[0], так как больше скрипт ничего не находит кроме ай-пи адреса, который там же и на странице пишется. И который и записывается в этот $aResult[0].

Задача:
Как сделать так чтоб:
Если $aResult[1] нет значения в строке $CTRL_lbl1 = GUICtrlCreateLabel ($aResult[1], -140, 0, 140, 20) то было бы какое то сообщение.

Русское сообщество AutoIt


Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3680
  • Репутация: 934
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
xmel-sera  [?]
Цитировать
Как сделать так чтоб:Если $aResult[1] нет значения в строке $CTRL_lbl1 = GUICtrlCreateLabel ($aResult[1], -140, 0, 140, 20) то было бы какое то сообщение.

Проверить содержимое массива. Если у вас только два значения, можно сделать так.
Код: AutoIt [Выделить]
If UBound($aResult) = 1 Then GUICtrlCreateLabel ('Пароль неверный!', -140, 0, 140, 20)


Скорблю и помню.




Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7789
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
xmel-sera,
Можно, например, еще так:
Код: AutoIt [Выделить]
Dim $aLabel[3] = ['Test_1', 'Test_2', 'Test_3']

GUICreate('Test', 200, 200)
For $i = 0 To 5
    If $i > UBound($aLabel) - 1 Then
        GUICtrlCreateLabel('Error', 50, 10 + $i * 30, 100, 20)
    Else
        GUICtrlCreateLabel($aLabel[$i], 50, 10 + $i * 30, 100, 20)
    EndIf
Next
GUISetState()
Do
Until GUIGetMsg() = -3


Оффлайн SECTOR [?]

  • Продвинутый
  • ***
  • Сообщений: 387
  • Репутация: 56
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
А зачем мерить массив? Если пароль введен неверно, то наверняка в исх.коде это будет указано), просто надо поставить поиск этакой строки о неверном пароле) имхо так надежней будет, ежели мерить массив)

Русское сообщество AutoIt


Оффлайн xmel-sera [?]

  • Новичок
  • *
  • Сообщений: 16

  • Автор темы
  • Репутация: 0
    • Награды
А можно мне выложить сюда код скрипта чтоб кто-то на конкретном примере показал как это делать?

Оффлайн SECTOR [?]

  • Продвинутый
  • ***
  • Сообщений: 387
  • Репутация: 56
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Цитировать
А можно мне выложить сюда код скрипта чтоб кто-то на конкретном примере показал как это делать?
C этого, желательно, надо начинать ;)

Оффлайн xmel-sera [?]

  • Новичок
  • *
  • Сообщений: 16

  • Автор темы
  • Репутация: 0
    • Награды
Цитировать
А зачем мерить массив? Если пароль введен неверно, то наверняка в исх.коде это будет указано), просто надо поставить поиск этакой строки о неверном пароле) имхо так надежней будет, ежели мерить массив)

В принципе это и есть правильно. На странице точно пишет что пароль есть неверный. Попробую так. Но и проверять массив на наличие записей тоже может быть полезно, ведь со страницы берётся где-то 15-18 записей, а если есть только одно, или 2, то ясно что что-то не так...
Спасибо. Буду пробовать.


Добавлено: Июнь 21, 2011, 19:39:28
Извините за скорее всего корявый код :-\, недавно начал осваивать AutoIt. Некоторые части кода были взяты с этого форума.

Код: AutoIt [Выделить]
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <EditConstants.au3>
;#include <GuiStatusBar.au3>




; Перше вікно
$Form0 = GUICreate("IT-Status", 265, 125)
;Opt("GUICoordMode",2)
GUICtrlCreateLabel ("Перевірка стану рахунку абонента Інтертелеком:", 10, 8, 260, 15)
$modem = GUICtrlCreateButton ("Підключення через модем Інтертелеком", 8, 28, 250, 30)
$inet = GUICtrlCreateButton ("Інший тип підключення (без модему)", 8, 60, 250, 30)
;$hStatus = _GUICtrlStatusBar_Create($Form0)
;_GUICtrlStatusBar_SetText($hStatus, @TAB & 'Версія 1.1 від .......', 0)
$About = GUICtrlCreateButton("Про програму...", 65, 96, 140, 21, $BS_BITMAP)
GUISetState (@SW_SHOW, $Form0)
$Form1pos = WinGetPos($Form0)
$Form2 = GUICreate("Про програму...", 265, 186, $Form1pos[0],$Form1pos[1]+155, BitOR($WS_SYSMENU,$WS_CAPTION, $WS_POPUP), $WS_EX_TOOLWINDOW, $Form0)
GUICtrlCreateLabel ("IT-Status"&@CRLF&"Версія 1.1 від /////////2011 р.", 5, 5, 185, 28)
GUICtrlCreateLabel ("E-mail:", 5, 40, 185, 25)
GUICtrlCreateLabel ("[email protected]", 5, 55, 185, 25)
GUICtrlCreateLabel ("[email protected]", 5, 70, 185, 25)
GUICtrlCreateLabel ("IT-Status - зручна програма для відображення інформації про стан рахунку абонента Інтертелеком. Не потребує використання браузера та, що найголовніше - використовує меншу кількість трафіку, яку потребує браузер для відображення цієї ж інформації!", 5, 90, 255, 90)
GUISetState (@SW_HIDE, $Form2)

; вікно Інтертелеком

$FormInter = GUICreate("Стан рахунку абонента Інтертелеком", 350, 510)
Opt("GUICoordMode", 2)
GUICtrlCreateLabel ("Номер:", 30, 30 ,40)
GUICtrlCreateLabel ("Пароль:", 90, -1, 40)
$iphone = GUICtrlCreateInput ("", -125,  -25, 80, 20)
$ipass = GUICtrlCreateInput ("", 50, -20, 80, 20, $ES_PASSWORD)
;GUISetState()
GUICtrlCreateLabel ( "Особовий рахунок.............................:", -270, 10, 190)
GUICtrlCreateLabel ( "Абонент..............................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Номер.................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Стан....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакет..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Додаткова угода...............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Дата підключення..............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Абонентський стаж...........................:", -190, 0, 190)
GUICtrlCreateLabel ( "Лояльний стаж..................................:", -190, 0, 190)
GUICtrlCreateLabel ( "E-mail...................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "- (грн.)..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Сальдо................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Передплачені послуги на місяць......:", -190, 0, 190)
GUICtrlCreateLabel ( "Неактивовані бонуси (з 094).............:", -190, 0, 190)
GUICtrlCreateLabel ( "- (МБ)....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Трафік (Отримано+Передано)...........:", -190, 0, 190)
GUICtrlCreateLabel ( "Тип підключення.................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Спосіб авторизації..............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Трафік даного підключення (Мб).......:", -190, 0, 190)
GUICtrlCreateLabel ( "IP- адреса на даний момент..............:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакетний трафік (залишилось).........:", -190, 0, 190)
GUICtrlCreateLabel ( "", -90, -470, 130)
$iCTRL_btn0 = GUICtrlCreateButton ("Отримати дані", -180, 450, 100, 25)
$iCTRL_btn1 = GUICtrlCreateButton ( "Закрити",  25, -1, 100)
GUISetState (@SW_HIDE, $FormInter)

; вікно іншого типу підключення

$FormOther = GUICreate("Стан рахунку абонента Інтертелеком", 350, 440)
Opt("GUICoordMode", 2)
GUICtrlCreateLabel ( "Номер:", 30, 30 ,40)
GUICtrlCreateLabel ( "Пароль:", 90, -1, 40)

$phone = GUICtrlCreateInput ("", -125,  -25, 80, 20)
$pass = GUICtrlCreateInput ("", 50, -20, 80, 20, $ES_PASSWORD)
;GUISetState()
GUICtrlCreateLabel ( "Особовий рахунок.............................:", -270, 10, 190)
GUICtrlCreateLabel ( "Абонент..............................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Номер.................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Стан....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакет..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Додаткова угода...............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Дата підключення..............................:", -190, 0, 190)
GUICtrlCreateLabel ( "Абонентський стаж...........................:", -190, 0, 190)
GUICtrlCreateLabel ( "Лояльний стаж..................................:", -190, 0, 190)
GUICtrlCreateLabel ( "E-mail...................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "- (грн.)..................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Сальдо................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Передплачені послуги на місяць......:", -190, 0, 190)
GUICtrlCreateLabel ( "Неактивовані бонуси (з 094).............:", -190, 0, 190)
GUICtrlCreateLabel ( "- (МБ)....................................................:", -190, 0, 190)
GUICtrlCreateLabel ( "Трафік (Отримано+Передано)...........:", -190, 0, 190)
GUICtrlCreateLabel ( "Пакетний трафік (залишилось).........:", -190, 0, 190)
GUICtrlCreateLabel ( "", -90, -390, 130)
$CTRL_btn0 = GUICtrlCreateButton ("Отримати дані", -180, 380, 100, 25)
$CTRL_btn1 = GUICtrlCreateButton ("Закрити",  25, -1, 100)
GUISetState (@SW_HIDE, $FormOther)



While 1
   $msg = GUIGetMsg(1)
    Select

        ;головна форма
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Form0
            Exit
; про програму
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Form2
                GUISetState(@SW_HIDE, $Form2)
        Case $msg[0] = $About
                GUISetState(@SW_SHOW, $Form2)
        ;форма з підключенням через модем
        Case $msg[0] = $iCTRL_btn1
                GUISetState(@SW_HIDE, $FormInter)
        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $FormInter
                GUISetState(@SW_HIDE, $FormInter)
        Case $msg[0] = $modem
                GUISetState(@SW_SHOW, $FormInter)
        Case $msg[0] = $iCTRL_btn0
                GUICtrlSetState ( $iCTRL_btn0, $GUI_DISABLE )
       
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST","https://assa.intertelecom.ua/ru/login")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("Accept", "*/*")
$oHTTP.SetRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
$oHTTP.SetRequestHeader("Referer","https://assa.intertelecom.ua/ru/statistic")
$oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1")
$oHTTP.SetRequestHeader("Host","assa.intertelecom.ua")
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
$oHTTP.Send("phone=" & GUICtrlRead($iphone) & "&pass=" & GUICtrlRead($ipass))
$oHTTP.WaitForResponse


MsgBox (0, "Зачекайте...", "Очікування відповіді з сервера", 3)
; отримуємо код сторінки коли ми вже авторизувались
$oHTTP.Open("GET","https://assa.intertelecom.ua/ru/statistic")
$oHTTP.Send()
$oHTTP.WaitForResponse

; пошук необхідних змінних для програми
$sText = $oHTTP.ResponseText
$aTemp = StringRegExp($sText, '(?s)color:.*?;">\s*(.*?)\s*<', 3)
Dim $aResult [UBound($aTemp)]
$j = -1
For $i = 0 To UBound($aTemp) - 1
    If $aTemp[$i] Then
        $j += 1
        $aResult[$j] = $aTemp[$i]
    EndIf
Next
ReDim $aResult[$j + 1]

;MsgBox(0, "Вихід з програми", $oHTTP.ResponseText)
;_ArrayDisplay($aResult)

; виведення інформації у вікно програми
;_ArrayDisplay($aResult)
$CTRL_lbl0 = GUICtrlCreateLabel ( $aResult[0], -85, -445, 140, 20)
$CTRL_lbl1 = GUICtrlCreateLabel ( $aResult[1], -140, 0, 140, 20)
$CTRL_lbl2 = GUICtrlCreateLabel ( $aResult[2], -140, 0, 140, 20)
$CTRL_lbl3 = GUICtrlCreateLabel ( $aResult[3], -140, 0, 140, 20)
$CTRL_lbl4 = GUICtrlCreateLabel ( $aResult[4], -140, 0, 140, 20)
$CTRL_lbl5 = GUICtrlCreateLabel ( $aResult[5], -140, 0, 140, 20)
$CTRL_lbl6 = GUICtrlCreateLabel ( $aResult[6], -140, 0, 140, 20)
$CTRL_lbl7 = GUICtrlCreateLabel ( $aResult[7], -140, 0, 140, 20)
$CTRL_lbl8 = GUICtrlCreateLabel ( $aResult[8], -140, 0, 140, 20)
$CTRL_lbl9 = GUICtrlCreateLabel ( $aResult[9], -140, 0, 140, 20)
$CTRL_lbl10 = GUICtrlCreateLabel ( $aResult[10], -140, 0, 140, 20)
$CTRL_lbl11 = GUICtrlCreateLabel ( $aResult[11], -140, 0, 140, 20)
$CTRL_lbl12 = GUICtrlCreateLabel ( $aResult[12], -140, 0, 140, 20)
$CTRL_lbl13 = GUICtrlCreateLabel ( $aResult[13], -140, 0, 140, 20)
$CTRL_lbl14 = GUICtrlCreateLabel ( $aResult[14], -140, 0, 140, 20)
$CTRL_lbl15 = GUICtrlCreateLabel ( $aResult[15], -140, 0, 140, 20)
$CTRL_lbl16 = GUICtrlCreateLabel ( $aResult[16], -140, 0, 140, 20)
$CTRL_lbl17 = GUICtrlCreateLabel ( $aResult[17], -140, 0, 140, 20)
$CTRL_lbl18 = GUICtrlCreateLabel ( $aResult[18], -140, 0, 140, 20)
$CTRL_lbl19 = GUICtrlCreateLabel ( $aResult[19], -140, 0, 140, 20)
$CTRL_lbl20 = GUICtrlCreateLabel ( $aResult[21], -140, 0, 140, 20)
;_ArrayDisplay($aResult)
;$N = 1
;Dim $aResult[$N] = [1]
;_ArrayDisplay($aResult)
;Dim $aResult[$N]
;_ArrayDisplay($aResult)
;_ArrayDisplay($aResult)
;Введення даних в форму з підключенням іншого типу

                Case $msg[0] = $CTRL_btn0
                GUICtrlSetState ( $CTRL_btn0, $GUI_DISABLE )
               
                $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
                $oHTTP.Open("POST","https://assa.intertelecom.ua/ru/login")
                $oHTTP.setTimeouts(5000, 5000, 15000, 15000)
                $oHTTP.SetRequestHeader("Accept", "*/*")
                $oHTTP.SetRequestHeader("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3")
                $oHTTP.SetRequestHeader("Referer","https://assa.intertelecom.ua/ru/statistic")
                $oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
                $oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1")
                $oHTTP.SetRequestHeader("Host","assa.intertelecom.ua")
                $oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
                $oHTTP.Send("phone=" & GUICtrlRead($phone) & "&pass=" & GUICtrlRead($pass))
                $oHTTP.WaitForResponse

; отримуємо код сторінки коли ми вже авторизувались


                MsgBox (0, "Зачекайте...", "Очікування відповіді з сервера", 3)
               
                $oHTTP.Open("GET","https://assa.intertelecom.ua/ru/statistic")
                $oHTTP.Send()
                $oHTTP.WaitForResponse 

; пошук необхідних змінних для програми
$sText = $oHTTP.ResponseText
$aTemp = StringRegExp($sText, '(?s)color:.*?;">\s*(.*?)\s*<', 3)
Dim $aResult [UBound($aTemp)]
$j = -1
For $i = 0 To UBound($aTemp) - 1
    If $aTemp[$i] Then
        $j += 1
        $aResult[$j] = $aTemp[$i]
    EndIf
Next
ReDim $aResult[$j + 1]
;_ArrayDisplay($aResult)


; виведення інформації у вікно програми
If UBound($aResult) = 1 Then GUICtrlCreateLabel ('Пароль неверный!', -140, 0, 140, 20)
$CTRL_lbl0 = GUICtrlCreateLabel ( $aResult[0], -88, -375, 140, 20)
$CTRL_lbl1 = GUICtrlCreateLabel ( $aResult[1], -140, 0, 140, 20)
$CTRL_lbl2 = GUICtrlCreateLabel ( $aResult[2], -140, 0, 140, 20)
$CTRL_lbl3 = GUICtrlCreateLabel ( $aResult[3], -140, 0, 140, 20)
$CTRL_lbl4 = GUICtrlCreateLabel ( $aResult[4], -140, 0, 140, 20)
$CTRL_lbl5 = GUICtrlCreateLabel ( $aResult[5], -140, 0, 140, 20)
$CTRL_lbl6 = GUICtrlCreateLabel ( $aResult[6], -140, 0, 140, 20)
$CTRL_lbl7 = GUICtrlCreateLabel ( $aResult[7], -140, 0, 140, 20)
$CTRL_lbl8 = GUICtrlCreateLabel ( $aResult[8], -140, 0, 140, 20)
$CTRL_lbl9 = GUICtrlCreateLabel ( $aResult[9], -140, 0, 140, 20)
$CTRL_lbl10 = GUICtrlCreateLabel ( $aResult[10], -140, 0, 140, 20)
$CTRL_lbl11 = GUICtrlCreateLabel ( $aResult[11], -140, 0, 140, 20)
$CTRL_lbl12 = GUICtrlCreateLabel ( $aResult[12], -140, 0, 140, 20)
$CTRL_lbl13 = GUICtrlCreateLabel ( $aResult[13], -140, 0, 140, 20)
$CTRL_lbl14 = GUICtrlCreateLabel ( $aResult[14], -140, 0, 140, 20)
$CTRL_lbl15 = GUICtrlCreateLabel ( $aResult[15], -140, 0, 140, 20)
$CTRL_lbl16 = GUICtrlCreateLabel ( $aResult[17], -140, 0, 140, 20)

        ;форма для іншого типу підключення
        Case $msg[0] = $CTRL_btn1
                GUISetState(@SW_HIDE, $FormOther)

        Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $FormOther
                GUISetState(@SW_HIDE, $FormOther)
        Case $msg[0] = $inet
                GUISetState(@SW_SHOW, $FormOther)

    EndSelect

WEnd


Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
9 Ответов
2960 Просмотров
Последний ответ Февраль 29, 2012, 18:09:18
от _Lexa98_
3 Ответов
1621 Просмотров
Последний ответ Март 26, 2012, 18:41:34
от Leanna
8 Ответов
1910 Просмотров
Последний ответ Май 08, 2014, 07:29:14
от alex33
0 Ответов
617 Просмотров
Последний ответ Декабрь 10, 2014, 19:15:22
от povlenti
0 Ответов
451 Просмотров
Последний ответ Декабрь 11, 2014, 08:32:39
от madmasles
8 Ответов
4265 Просмотров
Последний ответ Май 05, 2015, 13:35:48
от madmasles
0 Ответов
700 Просмотров
Последний ответ Май 05, 2015, 14:05:31
от madmasles
0 Ответов
2692 Просмотров
Последний ответ Июнь 08, 2015, 10:14:40
от mef-t
3 Ответов
752 Просмотров
Последний ответ Сентябрь 23, 2016, 08:41:39
от sngr
40 Ответов
3204 Просмотров
Последний ответ Январь 21, 2017, 17:08:30
от VadimKHL