Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - RioT

Pages: [1]
1
Прочее / Антигейт и вопросы по нему
« on: January 10, 2014, 12:17:53 AM »
В общем-то попытался разобраться в этом коде, но не всё нужное нашел.
[spoiler]
В последнее время народ всё чаще спрашивает про антикапчу. Но внятно связать работу со своим скриптом не могут.
Хочу выложить шаблон для капчи Вконтакте. Здесь один из вариантов. Оформлена как #include

Скачиваем AGClient v1.2
Читаем инструкцию. Настраиваем, запускаем.
Вставляем в свой скрипт #include "Антикапча 0.2 ВК include"

Code: (clickermann) [Select]
GOSUB(capcha)// гле нужно вызываем подпрограмму проверки вылезла ли капча.
сам include (скачиваем в этом посте вместе с картинками) состоит:
Code: (clickermann) [Select]
SUB(capcha) //========== Ловим капчу ===========================================
   
   MOVE(0,0)
   WAITMS(100)
   GETSCREEN
   IF_PICTURE_IN (0,0,$_xmax,$_ymax, "capcha_NEW.bmp",-1,80) //есть капча
      $x1 = $_return1+17
      $y1 = $_return2+40
      $x2 = $_return1+146
      $y2 = $_return2+89
     
      $hwnd = wndFind("AGClient v1.2") // находим окно
      // последовательное задание координат
      PostMessage($hwnd, 0x555, 1, $x1)
      PostMessage($hwnd, 0x555, 2, $y1)
      PostMessage($hwnd, 0x555, 3, $x2)
      PostMessage($hwnd, 0x555, 4, $y2)
     
      repeat:
      waitms(200)
      PostMessage($hwnd, 0x555, 5, 0) // распознать
      waitms(1000)
     
      GETSCREEN
      IF_PICTURE_IN (0,0,$_xmax,$_ymax, "AGClient.bmp")
         $AGC_x = $_return1-25
         $AGC_y = $_return2-56
         LOGWRITE("AGClient X=", $_return1, ", Y=", $_return2)
      END_IF
     
      $pic=0
      WHILE($pic=0)
         GETSCREEN
         IF (PXL($AGC_x, $AGC_y)=65535) // жёлтый
            WAITMS(300)
         END_IF
         IF (PXL($AGC_x, $AGC_y)=65280) // зелёный
            WAITMS(100)
            $pic=1 // выходим из цикла
         END_IF
         IF (PXL($AGC_x, $AGC_y)=255) // красный
            LOGWRITE("Не распознали")
            HINTPOPUP("Не распознали")
            //HALT
            $pic=2
         END_IF
      END_CYC
     
      IF($pic=2) // если не распознали отправляем повторно новую капчу
         TOCLIP("12345")
         WAITMS(100)
         GOSUB(paste)
         WAITMS(1500)
         GOTO(repeat)
      END_IF
     
      GOSUB(paste)
      WAITMS(300)
   END_IF
END_SUB

SUB(paste) //========== Вставить ===============================================
   KEYDOWN (#CTRL) // Ctrl+V
   WAITMS (50)
   KEYDOWN (#V)
   WAITMS (50)
   KEYUP (#V)
   WAITMS (50)
   KEYUP (#CTRL)
   WAITMS (50)
   KEYDOWN (#ENTER)
   KEYUP (#ENTER)
   WAITMS (50)
END_SUB


В указанном скрипте, если AGClient прислал, что капча не распознана, вводим что попало обновляя капчу и отсылаем заново. Если при нераспознавании нужно станавливаться, раскомментируем строку //HALT
[/spoiler]
Скажу сразу, перечитал форум, справку и справку языка, может я тугой, но нужна помощь, не прошу сделать за меня, а просто подтолкнуть к решению.
Ситуация: Браузерная игрушка, периодическая капча в одном месте(т.е. первая часть кода, как я понимаю, не нужна, ибо корды капчи можно забить заранее).
Что нужно:На пиксель цвета капчи ставим инклюд, который запускает распознавание, это сделал (адекватное и правильное ли такое решение?).Нужна помощь именно от перехода с оконного режима браузерак антигейту(там нажимаем на распознать, проверяем цвет индикатора, при красном репетим, при желтом ждем, при зеленом идем дальше) и переход обратно к этому браузеру и вводом капчи (думаю, реализовать через ctrl+v , нормально будет?), ну дальше основной скрипт продолжаем.

Pages: [1]