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

  • Автор темы Автор темы lybimiy86
  • Дата начала Дата начала

lybimiy86

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

Стандартными средствами 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");


Помогите сэмулировать введение капчи!
 
Поделись наработками с ImageMagick (думаю это эффективнее чем метод подбора, который я использовал) и я поделюсь нужным шаблоном. Работает в браузере если не более пары потоков на один сайт. Если больше то капча адаптируется и перестаёт принимать ответ, нужно делать перерыв в несколько часов.
 
Не могу к сожалению протестировать, версия 5.9.9.1

Поделись наработками с ImageMagick (думаю это эффективнее чем метод подбора, который я использовал) и я поделюсь нужным шаблоном. Работает в браузере если не более пары потоков на один сайт. Если больше то капча адаптируется и перестаёт принимать ответ, нужно делать перерыв в несколько часов.

1.Ставим фиксированное разрешение экрана кубиком:
PHP:
Развернуть Свернуть Копировать
instance.SetWindowSize(1024, 768);

2.Нужно определиться, как можно идентифицировать элементы, в моем примере если нажать на ползунок, то появляется пазл который нужно вставлять и куда нужно вставить. Отлично, делаем скриншот инстанса до и после нажатия (имена 1.png и 2.png). Cм. картинку, выделил эти элементы:
c8087692974a.png
7a173560161d.png

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% фильтр погрешности, а также нужную цветовую гамму. Получаем:
141b8a750361.png


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

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
Получаем маленькую белую область, вставил в проект в фотошопе ее, чтоб было понятно что мы получаем (получаем только белый квадратик с красным пазлом)
645913f9940e.png

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

7.Удаляем со списка лишнее, нам нужны данные о самом крайнем пикселе красного цвета, чтоб от него отталкиваться, там самым узнаем границы, где начинается этот пазл
31326431ab11.png

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



1.Ставим фиксированное разрешение экрана кубиком:
PHP:
Развернуть Свернуть Копировать
instance.SetWindowSize(1024, 768);

2.Нужно определиться, как можно идентифицировать элементы, в моем примере если нажать на ползунок, то появляется пазл который нужно вставлять и куда нужно вставить. Отлично, делаем скриншот инстанса до и после нажатия (имена 1.png и 2.png). Cм. картинку, выделил эти элементы:
c8087692974a.png
7a173560161d.png

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% фильтр погрешности, а также нужную цветовую гамму. Получаем:
141b8a750361.png


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

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
Получаем маленькую белую область, вставил в проект в фотошопе ее, чтоб было понятно что мы получаем (получаем только белый квадратик с красным пазлом)
645913f9940e.png

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

7.Удаляем со списка лишнее, нам нужны данные о самом крайнем пикселе красного цвета, чтоб от него отталкиваться, там самым узнаем границы, где начинается этот пазл
31326431ab11.png

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 - это и есть наше расстояние. На фото наглядно показано
86a308c8e358.png
Картинки не отображаются, можешь перезалить? )
 
Поделись наработками с ImageMagick (думаю это эффективнее чем метод подбора, который я использовал) и я поделюсь нужным шаблоном. Работает в браузере если не более пары потоков на один сайт. Если больше то капча адаптируется и перестаёт принимать ответ, нужно делать перерыв в несколько часов.
Привет. У тебя есть решение по эмеляции мышки, чтобы медленно перемещалась?
 
Есть капча:
Координаты куда нужно вставлять пазл получаю через ImageMagick
7d4160c95753.png

Стандартными средствами 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?
 
Не могу к сожалению протестировать, версия 5.9.9.1



1.Ставим фиксированное разрешение экрана кубиком:
PHP:
Развернуть Свернуть Копировать
instance.SetWindowSize(1024, 768);

2.Нужно определиться, как можно идентифицировать элементы, в моем примере если нажать на ползунок, то появляется пазл который нужно вставлять и куда нужно вставить. Отлично, делаем скриншот инстанса до и после нажатия (имена 1.png и 2.png). Cм. картинку, выделил эти элементы:
c8087692974a.png
7a173560161d.png

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% фильтр погрешности, а также нужную цветовую гамму. Получаем:
141b8a750361.png


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

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
Получаем маленькую белую область, вставил в проект в фотошопе ее, чтоб было понятно что мы получаем (получаем только белый квадратик с красным пазлом)
645913f9940e.png

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

7.Удаляем со списка лишнее, нам нужны данные о самом крайнем пикселе красного цвета, чтоб от него отталкиваться, там самым узнаем границы, где начинается этот пазл
31326431ab11.png

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 - это и есть наше расстояние. На фото наглядно показано
86a308c8e358.png
Привет, у меня такую же капчу нужно разгадать. Но сравнивать 2 картинки не могу, т.к. дается сразу ползунок и пазл, а если сместить ползунок и не попасть в пазл, то капча меняется. Можешь подсказать, как в моем случае реализовать?
bunkan1975.png
 
Ищу через поиск картинок цельное изображение и сравниваю с уже имеющимся. проблема в том, что не всегда изображение прям 100% подходит(точнее никогда) и получается вот такое
123.png

Слишком уж много красного)
 
Ищу через поиск картинок цельное изображение и сравниваю с уже имеющимся. проблема в том, что не всегда изображение прям 100% подходит(точнее никогда) и получается вот такое
Посмотреть вложение 35816
Слишком уж много красного)
Скорее всего, сравниваемые картинки смещены друг относительно друга на 1 пиксель по вертикали
 
Скорее всего, сравниваемые картинки смещены друг относительно друга на 1 пиксель по вертикали
Изображение всегда будет смещено или какая-то надпись будет, т.к. это поиск картинок из инета
 

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