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

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
187
Баллы
33
Есть капча:
Координаты куда нужно вставлять пазл получаю через ImageMagick

Стандартными средствами drag drop пазл вставляется, но палится, что делал не человек и капча не срабатывает, через данный код тоже палит
PHP:
instance.ActiveTab.MouseClick(355, 372, "left", "down");

int x = 355;
int y = 372;

Random rnd = new Random();
//x += rnd.Next(50, 200);
//y += rnd.Next(50, 200);
// массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[10]
{
    new Point(x, y),
    new Point(x + 10, y + 2),
    new Point(x + 20, y + 0),
    new Point(x + 30, y + 1),
    new Point(x + 40, y + 3),
    new Point(x + 50, y - 6),
    new Point(x + 60, y + 0),
    new Point(x + 70, y + 0),
    new Point(x + 80, y + 0),
    new Point(x + 90, y + 0)
};
// случайные задержки между движениями
int[] delay = new int[10] {
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150)
};

instance.ActiveTab.MouseMove(points, delay, false);
instance.ActiveTab.MouseClick(442, 348, "left", "up");

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

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

White trash

Client
Регистрация
09.06.2014
Сообщения
829
Благодарностей
362
Баллы
63
Поделись наработками с ImageMagick (думаю это эффективнее чем метод подбора, который я использовал) и я поделюсь нужным шаблоном. Работает в браузере если не более пары потоков на один сайт. Если больше то капча адаптируется и перестаёт принимать ответ, нужно делать перерыв в несколько часов.
 

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
187
Баллы
33
Не могу к сожалению протестировать, версия 5.9.9.1

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

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


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

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

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

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 - это и есть наше расстояние. На фото наглядно показано
 

IgorSush

Client
Регистрация
11.02.2016
Сообщения
312
Благодарностей
108
Баллы
43
Фига себе "вопрос новичка"
 
  • Спасибо
Реакции: lybimiy86 и yriy158

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28
Не могу к сожалению протестировать, версия 5.9.9.1



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

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


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

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

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

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 - это и есть наше расстояние. На фото наглядно показано
Картинки не отображаются, можешь перезалить? )
 

IgorSush

Client
Регистрация
11.02.2016
Сообщения
312
Благодарностей
108
Баллы
43

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28

bodrov0055

Новичок
Регистрация
28.02.2018
Сообщения
5
Благодарностей
0
Баллы
1
Поделись наработками с ImageMagick (думаю это эффективнее чем метод подбора, который я использовал) и я поделюсь нужным шаблоном. Работает в браузере если не более пары потоков на один сайт. Если больше то капча адаптируется и перестаёт принимать ответ, нужно делать перерыв в несколько часов.
Привет. У тебя есть решение по эмеляции мышки, чтобы медленно перемещалась?
 

bodrov0055

Новичок
Регистрация
28.02.2018
Сообщения
5
Благодарностей
0
Баллы
1
Есть капча:
Координаты куда нужно вставлять пазл получаю через ImageMagick

Стандартными средствами drag drop пазл вставляется, но палится, что делал не человек и капча не срабатывает, через данный код тоже палит
PHP:
instance.ActiveTab.MouseClick(355, 372, "left", "down");

int x = 355;
int y = 372;

Random rnd = new Random();
//x += rnd.Next(50, 200);
//y += rnd.Next(50, 200);
// массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[10]
{
    new Point(x, y),
    new Point(x + 10, y + 2),
    new Point(x + 20, y + 0),
    new Point(x + 30, y + 1),
    new Point(x + 40, y + 3),
    new Point(x + 50, y - 6),
    new Point(x + 60, y + 0),
    new Point(x + 70, y + 0),
    new Point(x + 80, y + 0),
    new Point(x + 90, y + 0)
};
// случайные задержки между движениями
int[] delay = new int[10] {
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150),
    rnd.Next(50, 150)
};

instance.ActiveTab.MouseMove(points, delay, false);
instance.ActiveTab.MouseClick(442, 348, "left", "up");

Помогите сэмулировать введение капчи!
Привет. Крутой метод описал по распознаванию координат капчи. Удалось найти решение по медленному перемещению drug drop?
 

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
Не могу к сожалению протестировать, версия 5.9.9.1



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

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


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

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

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

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 - это и есть наше расстояние. На фото наглядно показано
Привет, у меня такую же капчу нужно разгадать. Но сравнивать 2 картинки не могу, т.к. дается сразу ползунок и пазл, а если сместить ползунок и не попасть в пазл, то капча меняется. Можешь подсказать, как в моем случае реализовать?
bunkan1975.png
 

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
Ищу через поиск картинок цельное изображение и сравниваю с уже имеющимся. проблема в том, что не всегда изображение прям 100% подходит(точнее никогда) и получается вот такое
123.png

Слишком уж много красного)
 

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
Ищу через поиск картинок цельное изображение и сравниваю с уже имеющимся. проблема в том, что не всегда изображение прям 100% подходит(точнее никогда) и получается вот такое
Посмотреть вложение 35816
Слишком уж много красного)
Скорее всего, сравниваемые картинки смещены друг относительно друга на 1 пиксель по вертикали
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
Скорее всего, сравниваемые картинки смещены друг относительно друга на 1 пиксель по вертикали
Изображение всегда будет смещено или какая-то надпись будет, т.к. это поиск картинок из инета
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)