Что нового

[Сеть, интернет] Помогите с кодом

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Версия AutoIt:
Version 3.4.1

Описание:
Пытаюсь обойти капчу
Примечания:
Имею код вида:
Код:
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <IE.au3>
#include <ScreenCapture.au3>
#include <Crypt.au3>

Local $oIE = _IEAttach("http://rubserf.ru/serfbar.php?act=mend&key=76174 - Internet Explorer")

For $i = 1 To 500 Step 1

   WinActivate("http://rubserf.ru/serfbar.php?act=mend&key=76174 - Internet Explorer")

   $aPos = WinGetPos("http://rubserf.ru/serfbar.php?act=mend&key=76174 - Internet Explorer")

;~    _ScreenCapture_Capture(@ScriptDir & "\pergunta"&$i&".jpg", $aPos[0]+25, $aPos[1]+89, $aPos[0]+519, $aPos[1]+99)
   _ScreenCapture_Capture(@ScriptDir & "\ione"&$i&".jpg", $aPos[0]+32, $aPos[1]+111, $aPos[0]+87, $aPos[1]+166)
   _ScreenCapture_Capture(@ScriptDir & "\itwo"&$i&".jpg", $aPos[0]+117, $aPos[1]+111, $aPos[0]+172, $aPos[1]+166)
   _ScreenCapture_Capture(@ScriptDir & "\ithree"&$i&".jpg", $aPos[0]+202, $aPos[1]+111, $aPos[0]+257, $aPos[1]+166)
   _ScreenCapture_Capture(@ScriptDir & "\ifour"&$i&".jpg", $aPos[0]+287, $aPos[1]+111, $aPos[0]+342, $aPos[1]+166)
   _ScreenCapture_Capture(@ScriptDir & "\ifive"&$i&".jpg", $aPos[0]+372, $aPos[1]+111, $aPos[0]+427, $aPos[1]+166)
   _ScreenCapture_Capture(@ScriptDir & "\isix"&$i&".jpg", $aPos[0]+457, $aPos[1]+111, $aPos[0]+512, $aPos[1]+166)

   _Crypt_Startup()
   $ione = "ione"&$i&".jpg"
   $ioneHash = _Crypt_HashFile($ione, $CALG_MD5) ; Create a hash of the file.

   $itwo = "itwo"&$i&".jpg"
   $itwoHash = _Crypt_HashFile($itwo, $CALG_MD5) ; Create a hash of the file.

   $ithree = "ithree"&$i&".jpg"
   $ithreeHash = _Crypt_HashFile($ithree, $CALG_MD5) ; Create a hash of the file.

   $ifour = "ifour"&$i&".jpg"
   $ifourHash = _Crypt_HashFile($ifour, $CALG_MD5) ; Create a hash of the file.

   $ifive = "ifive"&$i&".jpg"
   $ifiveHash = _Crypt_HashFile($ifive, $CALG_MD5) ; Create a hash of the file.

   $isix = "isix"&$i&".jpg"
   $isixHash = _Crypt_HashFile($isix, $CALG_MD5) ; Create a hash of the file.

   ;~ MsgBox(0, '', $bHash2)
   _Crypt_Shutdown() ; Shutdown the crypt library.

   $sPattern = '.*?0x\.*'
   $ioneResult = StringRegExpReplace($ioneHash, $sPattern, '\1')
   $itwoResult = StringRegExpReplace($itwoHash, $sPattern, '\1')
   $ithreeResult = StringRegExpReplace($ithreeHash, $sPattern, '\1')
   $ifourResult = StringRegExpReplace($ifourHash, $sPattern, '\1')
   $ifiveResult = StringRegExpReplace($ifiveHash, $sPattern, '\1')
   $isixResult = StringRegExpReplace($isixHash, $sPattern, '\1')



;~    ConsoleWrite($ioneResult & @CRLF)
;~    ConsoleWrite($itwoResult & @CRLF)
;~    ConsoleWrite($ithreeResult & @CRLF)
;~    ConsoleWrite($ifourResult & @CRLF)
;~    ConsoleWrite($ifiveResult & @CRLF)
;~    ConsoleWrite($isixResult & @CRLF)

   ;Запрос по первой картинке

   $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.Open("GET", "http://rubserf/index.php?otvet=" & $ioneResult & "&ind=" & '1')
   $oHTTP.Send()
   $oHTTP.WaitForResponse
   $mioneResult = $oHTTP.ResponseText

   If $mioneResult <> '' Then

	  ConsoleWrite('+ Ура в БД есть такая запись - ХЕШ='& $ioneResult &' Ответ='& $mioneResult & @LF)

   Else

	  $s = _Input("CAPTCHA=" & $ioneResult, $ione)

	  If $s <> '' Then

		 $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
		 $oHTTP.Open("GET", "http://rubserf/index.php?hash=" & $ioneResult & "&respond="  & $s & '&ind=1')
		 $oHTTP.Send()
		 $oHTTP.WaitForResponse
		 $mioneResult = $oHTTP.ResponseText

		 ConsoleWrite($s & $ioneResult & @LF)
	  EndIf
;~ 	  ConsoleWrite($mioneResult & @LF)

   EndIf

   ;Запрос по второй картинке

   $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.Open("GET", "http://rubserf/index.php?otvet=" & $itwoResult & "&ind=" & '2')
   $oHTTP.Send()
   $oHTTP.WaitForResponse
   $mitwoResult = $oHTTP.ResponseText

   If $mitwoResult <> '' Then

	  ConsoleWrite('+ Ура в БД есть такая запись - ХЕШ='& $itwoResult &' Ответ='& $mitwoResult & @LF)

   Else

	  $s = _Input("CAPTCHA=" & $itwoResult, $itwo)

	  If $s <> '' Then

		 $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
		 $oHTTP.Open("GET", "http://rubserf/index.php?hash=" & $itwoResult & "&respond="  & $s & '&ind=2')
		 $oHTTP.Send()
		 $oHTTP.WaitForResponse
		 $mitwoResult = $oHTTP.ResponseText

		 ConsoleWrite($s  & $itwoResult &  @LF)
	  EndIf
;~ 	  ConsoleWrite($mioneResult & @LF)

   EndIf

   ;Запрос по третьей картинке

   $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.Open("GET", "http://rubserf/index.php?otvet=" & $ithreeResult & "&ind=" & '3')
   $oHTTP.Send()
   $oHTTP.WaitForResponse
   $mithreeResult = $oHTTP.ResponseText

   If $mithreeResult <> '' Then

	  ConsoleWrite('+ Ура в БД есть такая запись - ХЕШ='& $ithreeResult &' Ответ='& $mithreeResult & @LF)

   Else

	  $s = _Input("CAPTCHA=" & $ithreeResult, $ithree)

	  If $s <> '' Then

		 $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
		 $oHTTP.Open("GET", "http://rubserf/index.php?hash=" & $ithreeResult & "&respond="  & $s & '&ind=3')
		 $oHTTP.Send()
		 $oHTTP.WaitForResponse
		 $mithreeResult = $oHTTP.ResponseText

		 ConsoleWrite($s & $ithreeResult & @LF)
	  EndIf
;~ 	  ConsoleWrite($mioneResult & @LF)

   EndIf

   ;Запрос по четвертой картинке

   $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.Open("GET", "http://rubserf/index.php?otvet=" & $ifourResult & "&ind=" & '4')
   $oHTTP.Send()
   $oHTTP.WaitForResponse
   $mifourResult = $oHTTP.ResponseText

   If $mifourResult <> '' Then

	  ConsoleWrite('+ Ура в БД есть такая запись - ХЕШ='& $ifourResult &' Ответ='& $mifourResult & @LF)

   Else

	  $s = _Input("CAPTCHA=" & $ifourResult, $ifour)

	  If $s <> '' Then

		 $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
		 $oHTTP.Open("GET", "http://rubserf/index.php?hash=" & $ifourResult & "&respond="  & $s & '&ind=4')
		 $oHTTP.Send()
		 $oHTTP.WaitForResponse
		 $mifourResult = $oHTTP.ResponseText

		 ConsoleWrite($s & $ifourResult & @LF)
	  EndIf
;~ 	  ConsoleWrite($mioneResult & @LF)

   EndIf

   ;Запрос по пятой картинке

   $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.Open("GET", "http://rubserf/index.php?otvet=" & $ifiveResult & "&ind=" & '5')
   $oHTTP.Send()
   $oHTTP.WaitForResponse
   $mfiveResult = $oHTTP.ResponseText

   If $mfiveResult <> '' Then

	  ConsoleWrite('+ Ура в БД есть такая запись - ХЕШ='& $ifiveResult &' Ответ='& $mfiveResult & @LF)

   Else

	  $s = _Input("CAPTCHA=" & $ifiveResult, $ifive)

	  If $s <> '' Then

		 $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
		 $oHTTP.Open("GET", "http://rubserf/index.php?hash=" & $ifiveResult & "&respond="  & $s & '&ind=5')
		 $oHTTP.Send()
		 $oHTTP.WaitForResponse
		 $mfiveResult = $oHTTP.ResponseText

		 ConsoleWrite($s  & $ifiveResult &  @LF)
	  EndIf
;~ 	  ConsoleWrite($mioneResult & @LF)

   EndIf

   ;Запрос по шестой картинке

   $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.Open("GET", "http://rubserf/index.php?otvet=" & $isixResult & "&ind=" & '6')
   $oHTTP.Send()
   $oHTTP.WaitForResponse
   $misixResult = $oHTTP.ResponseText

   If $misixResult <> '' Then

	  ConsoleWrite('+ Ура в БД есть такая запись - ХЕШ='& $isixResult &' Ответ='& $misixResult & @LF)

   Else

	  $s = _Input("CAPTCHA=" & $isixResult, $isix)

	  If $s <> '' Then

		 $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
		 $oHTTP.Open("GET", "http://rubserf/index.php?hash=" & $isixResult & "&respond="  & $s & '&ind=6')
		 $oHTTP.Send()
		 $oHTTP.WaitForResponse
		 $misixResult = $oHTTP.ResponseText

		 ConsoleWrite($s & $isixResult & @LF)
	  EndIf

   EndIf


 		 ConsoleWrite('! Уже посмотрели ' & $i &' раз'& @LF)
		 Send("{F5}")
		 _IELoadWait($oIE)

		 Sleep(1000)
Next

Func Example()

    ; Copy Au3 files in the temporary directory to a new folder/directory called Au3Files.
     FileMove(@ScriptDir & "\*.jpg", @ScriptDir & "\img\", $FC_OVERWRITE + $FC_CREATEPATH)

EndFunc   ;==>Example

__captchaClick($mioneResult, $mitwoResult, $mithreeResult, $mifourResult, $mfiveResult, $misixResult)

Func __captchaClick($mioneResult, $mitwoResult, $mithreeResult, $mifourResult, $mfiveResult, $misixResult)

;~     If IsObj $mioneResult Then
;~ 	   $test = $mioneResult

;~ 	   If IsObj $mitwoResult Then
;~ 		 $R = StringRegExp($mitwoResult, $test, 0)

;~     EndIf

EndFunc


Func _Input($Title, $img)

  Local $GUI = GUICreate($Title, 470, 600)
  Local $idPic = GUICtrlCreatePic($img, 50, 50, 56, 56)

  Local $BtnBanans = GUICtrlCreateButton("Банан", 10, 265, 00, -1, 0x01)
;~ 	  Local $Input = GUICtrlCreateInput($is, 50, 30, 90, 20)
  Local $BtnGuitars = GUICtrlCreateButton("Гитара", 10, 295, 00, -1, 0x01)
;~ 	  Local $Btnitwo = GUICtrlCreateInput("", 112, 30, 40, 20)
  Local $BtnGrib = GUICtrlCreateButton("Гриб", 10, 325, 00, -1, 0x01)
;~ 	  Local $Btnithree = GUICtrlCreateInput("", 174, 30, 40, 20)
  Local $BtnCats = GUICtrlCreateButton("Кошка", 10, 355, 00, -1, 0x01)
;~ 	  Local $Btnifour = GUICtrlCreateInput("", 236, 30, 40, 20)
  Local $BtnCars = GUICtrlCreateButton("Машина", 10, 385, 00, -1, 0x01)
;~ 	  Local $Btnifive = GUICtrlCreateInput("", 298, 30, 40, 20)
  Local $BtnMoneus = GUICtrlCreateButton("Монета", 10, 415, 00, -1, 0x01)
;~ 	  Local $Btnisix = GUICtrlCreateInput("", 360, 30, 40, 20)
  Local $BtnBols = GUICtrlCreateButton("Мяч", 10, 445, 00, -1, 0x01)

  Local $BtnOgyrci = GUICtrlCreateButton("Огурец", 100, 265, 00, -1, 0x01)
  Local $BtnPeixes = GUICtrlCreateButton("Рыба", 100, 295, 00, -1, 0x01)
  Local $BtnAviois = GUICtrlCreateButton("Самолет", 100, 325, 00, -1, 0x01)
  Local $BtnDogs = GUICtrlCreateButton("Собака", 100, 355, 00, -1, 0x01)
  Local $BtnFlors = GUICtrlCreateButton("Цветок", 100, 385, 00, -1, 0x01)
  Local $BtnRelogios = GUICtrlCreateButton("Часы", 100, 415, 00, -1, 0x01)
  Local $BtnMasas = GUICtrlCreateButton("Яблоко", 100, 445, 00, -1, 0x01)

  Local $BtnOK = GUICtrlCreateButton("ОК", 10, 565, 00, -1, 0x01) ; $BS_DEFPUSHBUTTON
  Local $BtnCancel = GUICtrlCreateButton("CANCEL", 150, 265, 100)

  GUISetState()
  Do
    Switch GUIGetMsg()
      Case $BtnCancel
        Return SetError(1, GUIDelete($GUI), "")
      Case $BtnOK
        Local $Text = GUICtrlRead($Input)
        Return SetError(0, GUIDelete($GUI), $Text)
      Case $BtnBanans
        Return SetError(0, GUIDelete($GUI), 'Банан')
      Case $BtnGuitars
        Return SetError(0, GUIDelete($GUI), 'Гитара')
      Case $BtnGrib
        Return SetError(0, GUIDelete($GUI), 'Гриб')
      Case $BtnCats
        Return SetError(0, GUIDelete($GUI), 'Кошка')
      Case $BtnCars
        Return SetError(0, GUIDelete($GUI), 'Машина')
      Case $BtnMoneus
        Return SetError(0, GUIDelete($GUI), 'Монета')
      Case $BtnBols
        Return SetError(0, GUIDelete($GUI), 'Мяч')
      Case $BtnOgyrci
        Return SetError(0, GUIDelete($GUI), 'Огурец')
      Case $BtnPeixes
        Return SetError(0, GUIDelete($GUI), 'Рыба')
      Case $BtnAviois
        Return SetError(0, GUIDelete($GUI), 'Самолет')
      Case $BtnDogs
        Return SetError(0, GUIDelete($GUI), 'Собака')
      Case $BtnFlors
        Return SetError(0, GUIDelete($GUI), 'Цветок')
      Case $BtnRelogios
        Return SetError(0, GUIDelete($GUI), 'Часы')
      Case $BtnMasas
        Return SetError(0, GUIDelete($GUI), 'Яблоко')
    EndSwitch
 Until 0
EndFunc


После чего получаю ответ от сервера:
+ Ура в БД есть такая запись - ХЕШ=60C9BDE1E89507DBDE38A6947995DB3D Ответ=Гриб
+ Ура в БД есть такая запись - ХЕШ=B00D5917690E875C64B8F5CA0127C990 Ответ=Монета
+ Ура в БД есть такая запись - ХЕШ=82C46D62BB499FD7F97E5B6276867ED7 Ответ=Гриб
+ Ура в БД есть такая запись - ХЕШ=56DD7FDD9EBAF1A8D18BAFB5FC139F61 Ответ=Гриб
+ Ура в БД есть такая запись - ХЕШ=B7FF8D34A9E0F5AA1E9AA36C9EB083B3 Ответ=Гриб
+ Ура в БД есть такая запись - ХЕШ=0FCD1853558EF3ED6EF3206EA1EF2C1C Ответ=Гриб
Нужно реализовать клик по символу МОНЕТА в данном случае, на том символе который всего 1 а не 5

Так же ответ может состоять из всего 3-5 вариантов, в случае если 3 варианта и из них 2 одинаковых а один различный то так же необходимо реализовать клик.

Есть идеи как реализовать логику?
 

Вложения

  • ifive1.jpg
    ifive1.jpg
    4.2 КБ · Просмотры: 43
  • ifour1.jpg
    ifour1.jpg
    4.3 КБ · Просмотры: 41
  • ione1.jpg
    ione1.jpg
    4.3 КБ · Просмотры: 41
  • isix1.jpg
    isix1.jpg
    4.4 КБ · Просмотры: 41
  • ithree1.jpg
    ithree1.jpg
    3.7 КБ · Просмотры: 42
Автор
ssvih-miaa

ssvih-miaa

Новичок
Сообщения
41
Репутация
0
Народ ну не ужели никто не поможет?
Уже пытался решить вариантом типа
Код:
If $mioneResult == $mitwoResult Then

			ConsoleWrite('! 1 и 2 ОДИНАКОВЫ' & @LF)

			If $mioneResult == $mithreeResult AND $mitwoResult == $mithreeResult Then

			   ConsoleWrite('! 1, 2 и 3 ОДИНАКОВЫ' & @LF)

			EndIf

		 EndIf

Но без положительного результата (


Добавлено:
Сообщение автоматически объединено:

ssvih-miaa сказал(а):
Народ ну не ужели никто не поможет?
Уже пытался решить вариантом типа
Код:
If $mioneResult == $mitwoResult Then

			ConsoleWrite('! 1 и 2 ОДИНАКОВЫ' & @LF)

			If $mioneResult == $mithreeResult AND $mitwoResult == $mithreeResult Then

			   ConsoleWrite('! 1, 2 и 3 ОДИНАКОВЫ' & @LF)

			EndIf

		 EndIf

Но без положительного результата (
Верхний вариант счел без логичным )
И так на данный момент помог код такого вида:
Код:
Func _search($text1)
    Local $text
    $text2 = $mioneResult
    $array = StringSplit(StringStripCR($text1), @LF)
    $search = _ArrayFindAll($array, $text2, '', '', 1)
    If $search = -1 Then
        MsgBox(0, '', 'совпадений нет')
    Else
        For $i = 0 To UBound($search) - 1
            $text &= $search[$i] & '; '
        Next
        MsgBox(0, '', 'найдено ' & UBound($search) & ' совпадений' & @CRLF & 'номера строк ' & $text)
    EndIf
EndFunc   ;==>_search

Получаю в ответе номера строк с совпадениями осталось выяснить куда кликнуть )
 
Верх