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

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
188
Баллы
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");

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

White trash

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

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
188
Баллы
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 - это и есть наше расстояние. На фото наглядно показано
 

Zoron

Client
Регистрация
24.09.2014
Сообщения
146
Благодарностей
38
Баллы
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 - это и есть наше расстояние. На фото наглядно показано
Картинки не отображаются, можешь перезалить? )
 

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
Сообщения
423
Благодарностей
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
Сообщения
423
Благодарностей
122
Баллы
43
Ищу через поиск картинок цельное изображение и сравниваю с уже имеющимся. проблема в том, что не всегда изображение прям 100% подходит(точнее никогда) и получается вот такое
123.png

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

Evgeny76

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

Alex733

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

Master4eg

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

Master4eg

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

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