Капча на Canvas, помогите с эмуляцией мыши

Discussion in 'Вопросы новичков' started by lybimiy86, Jan 30, 2018.

  1. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    84
    Likes Received:
    104
    Есть капча:
    Координаты куда нужно вставлять пазл получаю через ImageMagick
    [​IMG]

    Стандартными средствами drag drop пазл вставляется, но палится, что делал не человек и капча не срабатывает, через данный код тоже палит
    PHP:
    1. instance.ActiveTab.MouseClick(355, 372, "left", "down");
    2.  
    3. int x = 355;
    4. int y = 372;
    5.  
    6. Random rnd = new Random();
    7. //x += rnd.Next(50, 200);
    8. //y += rnd.Next(50, 200);
    9. // массив точек, по которым будет двигаться курсор мыши
    10. Point[] points = new Point[10]
    11. {
    12.     new Point(x, y),
    13.     new Point(x + 10, y + 2),
    14.     new Point(x + 20, y + 0),
    15.     new Point(x + 30, y + 1),
    16.     new Point(x + 40, y + 3),
    17.     new Point(x + 50, y - 6),
    18.     new Point(x + 60, y + 0),
    19.     new Point(x + 70, y + 0),
    20.     new Point(x + 80, y + 0),
    21.     new Point(x + 90, y + 0)
    22. };
    23. // случайные задержки между движениями
    24. int[] delay = new int[10] {
    25.     rnd.Next(50, 150),
    26.     rnd.Next(50, 150),
    27.     rnd.Next(50, 150),
    28.     rnd.Next(50, 150),
    29.     rnd.Next(50, 150),
    30.     rnd.Next(50, 150),
    31.     rnd.Next(50, 150),
    32.     rnd.Next(50, 150),
    33.     rnd.Next(50, 150),
    34.     rnd.Next(50, 150)
    35. };
    36.  
    37. instance.ActiveTab.MouseMove(points, delay, false);
    38. instance.ActiveTab.MouseClick(442, 348, "left", "up");

    Помогите сэмулировать введение капчи!
     
  2. doc

    doc Client

    Joined:
    Mar 30, 2012
    Messages:
    6,848
    Likes Received:
    3,208
  3. White trash

    White trash Client

    Joined:
    Jun 9, 2014
    Messages:
    511
    Likes Received:
    194
    Поделись наработками с ImageMagick (думаю это эффективнее чем метод подбора, который я использовал) и я поделюсь нужным шаблоном. Работает в браузере если не более пары потоков на один сайт. Если больше то капча адаптируется и перестаёт принимать ответ, нужно делать перерыв в несколько часов.
     
  4. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    84
    Likes Received:
    104
    Не могу к сожалению протестировать, версия 5.9.9.1

    1.Ставим фиксированное разрешение экрана кубиком:
    PHP:
    1. instance.SetWindowSize(1024, 768);
    2.Нужно определиться, как можно идентифицировать элементы, в моем примере если нажать на ползунок, то появляется пазл который нужно вставлять и куда нужно вставить. Отлично, делаем скриншот инстанса до и после нажатия (имена 1.png и 2.png). Cм. картинку, выделил эти элементы:
    [​IMG] [​IMG]

    3.Дальше работа с ImageMagick и с программами, которые входят в комплект с ней:
    Через стандартный экшен Запуск программы:
    PHP:
    1. {-Project.Directory-}\service\ImageMagick-7.0.7-22-portable-Q16-x86\compare.exe
    2. -metric AE -fuzz 15% -highlight-color red -lowlight-color white 1.png 2.png 123.png
    Этой командой мы сравниваем 1.png и 2.png, сохраняем в 123.png, используя 15% фильтр погрешности, а также нужную цветовую гамму. Получаем:
    [​IMG]


    4.Определяем границы капчи, т.е. границы куда этот пазл может быть помещен. Делал с помощью направляющих в фотошопе. Также замеряем границы, которые понадобятся для обрезки, пометил на картинке:
    [​IMG]

    5.Через стандартный экшен Запуск программы обрезаем нужную нам часть (сохраняем в 123.png):
    PHP:
    1. {-Project.Directory-}\service\ImageMagick-7.0.7-22-portable-Q16-x86\convert.exe
    2. 123.png -crop 194x157+430+194 123.png
    Получаем маленькую белую область, вставил в проект в фотошопе ее, чтоб было понятно что мы получаем (получаем только белый квадратик с красным пазлом)
    [​IMG]

    6.Через стандартный экшен Запуск программы сохраняем данные о цвете, координатах в .txt файл:
    PHP:
    1. {-Project.Directory-}\service\ImageMagick-7.0.7-22-portable-Q16-x86\convert.exe
    2. 123.png 1.txt
    7.Удаляем со списка лишнее, нам нужны данные о самом крайнем пикселе красного цвета, чтоб от него отталкиваться, там самым узнаем границы, где начинается этот пазл
    [​IMG]

    8.Сортируем список по возрастанию, Получаем список такого содержания:
    41,53: (65535,0,0) #FF0000 red
    42,50: (65535,0,0) #FF0000 red
    42,51: (65535,0,0) #FF0000 red
    42,52: (65535,0,0) #FF0000 red
    42,53: (65535,0,0) #FF0000 red
    41 - самый крайний пиксель нашего пазла, чтоб передвинуть правильно пазл, нужно определить абсолютное положение пазла на границе, для этого прибавляем расстояние слева до начала нашей области, где может быть пазл, 430+41=471 - это и есть наше расстояние. На фото наглядно показано
    [​IMG]
     
    qazqaz2016, kibnet, yriy158 and 3 others like this.
  5. IgorSush

    IgorSush Client

    Joined:
    Feb 11, 2016
    Messages:
    306
    Likes Received:
    101
    Фига себе "вопрос новичка"
     
    lybimiy86 and yriy158 like this.
  6. Zoron

    Zoron Client

    Joined:
    Sep 24, 2014
    Messages:
    69
    Likes Received:
    13
    Картинки не отображаются, можешь перезалить? )
     
  7. IgorSush

    IgorSush Client

    Joined:
    Feb 11, 2016
    Messages:
    306
    Likes Received:
    101
    Все отображается
     
  8. Zoron

    Zoron Client

    Joined:
    Sep 24, 2014
    Messages:
    69
    Likes Received:
    13
    А да, сейчас норм :-) Сорян тогда )
     
  9. bodrov0055

    bodrov0055 Новичок

    Joined:
    Feb 28, 2018
    Messages:
    5
    Likes Received:
    0
    Привет. У тебя есть решение по эмеляции мышки, чтобы медленно перемещалась?
     
  10. bodrov0055

    bodrov0055 Новичок

    Joined:
    Feb 28, 2018
    Messages:
    5
    Likes Received:
    0
    Привет. Крутой метод описал по распознаванию координат капчи. Удалось найти решение по медленному перемещению drug drop?
     
  11. Master4eg

    Master4eg Client

    Joined:
    Apr 6, 2016
    Messages:
    151
    Likes Received:
    16
    Привет, у меня такую же капчу нужно разгадать. Но сравнивать 2 картинки не могу, т.к. дается сразу ползунок и пазл, а если сместить ползунок и не попасть в пазл, то капча меняется. Можешь подсказать, как в моем случае реализовать?
    bunkan1975.png
     
  12. Master4eg

    Master4eg Client

    Joined:
    Apr 6, 2016
    Messages:
    151
    Likes Received:
    16
    Ищу через поиск картинок цельное изображение и сравниваю с уже имеющимся. проблема в том, что не всегда изображение прям 100% подходит(точнее никогда) и получается вот такое
    123.png
    Слишком уж много красного)
     
  13. Evgeny76

    Evgeny76 Client

    Joined:
    Sep 11, 2015
    Messages:
    139
    Likes Received:
    54
    Скорее всего, сравниваемые картинки смещены друг относительно друга на 1 пиксель по вертикали
     
  14. Alex733

    Alex733 Client

    Joined:
    Nov 27, 2017
    Messages:
    150
    Likes Received:
    85
    Еще есть фильтр у imagemagick, который удаляет мелкие детали, размером до 5х5 пикселей.
     
  15. Master4eg

    Master4eg Client

    Joined:
    Apr 6, 2016
    Messages:
    151
    Likes Received:
    16
    подскажи, как применить
     
  16. Master4eg

    Master4eg Client

    Joined:
    Apr 6, 2016
    Messages:
    151
    Likes Received:
    16
    Изображение всегда будет смещено или какая-то надпись будет, т.к. это поиск картинок из инета
     

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)