- Регистрация
- 02.06.2015
- Сообщения
- 1 777
- Благодарностей
- 1 447
- Баллы
- 113
Имеем капчу:
Нужно получить координаты клика мышки по требуемому числу.
с 8 утра играюсь с этой капчей, что я пробовал делать:
Первое что пришло мне в голову, очистить от линий.
С помощью C# я получил имя каждого оттенка цвета в Hex на картинке например: ffb5e442
Оттенков очень много, для любого цвета получается около 100 оттенков, Кубик попиксельно отрабатывает около 5 сек на 1 цвет
Наглядный код:
Для каждого цвета нужны свои оттенки
Попробовал на 2 капчах:
И вторая капча:
Казалось бы победа уже близко, осталось прогнать через тессеракт, сравнить цифры, получить координаты клика и все) Но не тут то было... Дело в том что оттенки всегда разные даже если они похожи на глаз(
Ребят может у кого то есть какие то идеи? Как победить не побеждаемое? Побороть не непоборимое?
У меня уже мозги за целый день не соображают, вата в голове, надо отдохнуть...
Прикреплю архив с капчами может кто захочет поиграться)
Нужно получить координаты клика мышки по требуемому числу.
с 8 утра играюсь с этой капчей, что я пробовал делать:
Первое что пришло мне в голову, очистить от линий.
С помощью C# я получил имя каждого оттенка цвета в Hex на картинке например: ffb5e442
Оттенков очень много, для любого цвета получается около 100 оттенков, Кубик попиксельно отрабатывает около 5 сек на 1 цвет
Наглядный код:
C#:
string PathImg = project.Variables["PicOriginal"].Value; // путь к оригинальной картинке
string NewPathImg = Path.GetDirectoryName(PathImg) + @"\" + Path.GetFileNameWithoutExtension(PathImg) + "__" + Path.GetExtension(PathImg);
project.Variables["PicMonoChrome"].Value = NewPathImg.ToString();
Bitmap bmpRes = new Bitmap(PathImg);
Color color = new Color();
for (int y = 0; y < bmpRes.Height; y++)
{
for (int x = 0; x < bmpRes.Width; x++)
{
if (bmpRes.GetPixel(x, y).Name == "ff6e8966" ||
bmpRes.GetPixel(x, y).Name == "ffb6c4b2" ||
bmpRes.GetPixel(x, y).Name == "ff28501b" ||
bmpRes.GetPixel(x, y).Name == "ffabbba6" ||
bmpRes.GetPixel(x, y).Name == "ff1f4911" ||
bmpRes.GetPixel(x, y).Name == "ff3c6131" ||
bmpRes.GetPixel(x, y).Name == "ff77916f" ||
bmpRes.GetPixel(x, y).Name == "fffdfdfd" ||
bmpRes.GetPixel(x, y).Name == "ff8ca185" ||
bmpRes.GetPixel(x, y).Name == "ff2d5521" ||
bmpRes.GetPixel(x, y).Name == "ff9eb099" ||
bmpRes.GetPixel(x, y).Name == "ff204a13" ||
bmpRes.GetPixel(x, y).Name == "ff9bad95" ||
bmpRes.GetPixel(x, y).Name == "ff1d470f" ||
bmpRes.GetPixel(x, y).Name == "ff2a521d" ||
bmpRes.GetPixel(x, y).Name == "ff63805a" ||
bmpRes.GetPixel(x, y).Name == "ff65825c" ||
bmpRes.GetPixel(x, y).Name == "ff244d17" ||
bmpRes.GetPixel(x, y).Name == "ff5a7950" ||
bmpRes.GetPixel(x, y).Name == "ff224c15" ||
bmpRes.GetPixel(x, y).Name == "ffecefeb" ||
bmpRes.GetPixel(x, y).Name == "fffbfbfb" ||
bmpRes.GetPixel(x, y).Name == "ff2f5623" ||
bmpRes.GetPixel(x, y).Name == "ffb4c2b0" ||
bmpRes.GetPixel(x, y).Name == "ffc0cbbc" ||
bmpRes.GetPixel(x, y).Name == "ff406435" ||
bmpRes.GetPixel(x, y).Name == "ffced7cc" ||
bmpRes.GetPixel(x, y).Name == "ffa0b29b" ||
bmpRes.GetPixel(x, y).Name == "ffeaeee9" ||
bmpRes.GetPixel(x, y).Name == "ff748e6b" ||
bmpRes.GetPixel(x, y).Name == "ff335927" ||
bmpRes.GetPixel(x, y).Name == "ffc1cdbe" ||
bmpRes.GetPixel(x, y).Name == "ff99ac93" ||
bmpRes.GetPixel(x, y).Name == "ffadbca8" ||
bmpRes.GetPixel(x, y).Name == "ff54744a" ||
bmpRes.GetPixel(x, y).Name == "fff7f8f7" ||
bmpRes.GetPixel(x, y).Name == "ff496b3e" ||
bmpRes.GetPixel(x, y).Name == "ff3e6233" ||
bmpRes.GetPixel(x, y).Name == "ff768f6d" ||
bmpRes.GetPixel(x, y).Name == "ffdde3db" ||
bmpRes.GetPixel(x, y).Name == "ff527348" ||
bmpRes.GetPixel(x, y).Name == "ff708b68" ||
bmpRes.GetPixel(x, y).Name == "ffc5d0c2" ||
bmpRes.GetPixel(x, y).Name == "ff698560" ||
bmpRes.GetPixel(x, y).Name == "ff889e81" ||
bmpRes.GetPixel(x, y).Name == "ffbcc8b8" ||
bmpRes.GetPixel(x, y).Name == "ff67835e" ||
bmpRes.GetPixel(x, y).Name == "fff2f4f1" ||
bmpRes.GetPixel(x, y).Name == "ffdfe5dd" ||
bmpRes.GetPixel(x, y).Name == "ff6a8662" ||
bmpRes.GetPixel(x, y).Name == "ff849b7d" ||
bmpRes.GetPixel(x, y).Name == "ff93a78d" ||
bmpRes.GetPixel(x, y).Name == "ffb1bfac" ||
bmpRes.GetPixel(x, y).Name == "fff3f5f3" ||
bmpRes.GetPixel(x, y).Name == "ffbac7b6" ||
bmpRes.GetPixel(x, y).Name == "ffd6ddd3" ||
bmpRes.GetPixel(x, y).Name == "ff7d9575" ||
bmpRes.GetPixel(x, y).Name == "ff9caf97" ||
bmpRes.GetPixel(x, y).Name == "ffa9b9a4" ||
bmpRes.GetPixel(x, y).Name == "fff0f2ef" ||
bmpRes.GetPixel(x, y).Name == "ffd4dcd1" ||
bmpRes.GetPixel(x, y).Name == "ff819879" ||
bmpRes.GetPixel(x, y).Name == "ff3a5f2f" ||
bmpRes.GetPixel(x, y).Name == "ff2c531f" ||
bmpRes.GetPixel(x, y).Name == "ff517146" ||
bmpRes.GetPixel(x, y).Name == "ffd2dacf" ||
bmpRes.GetPixel(x, y).Name == "fff9faf9" ||
bmpRes.GetPixel(x, y).Name == "ff264f19" ||
bmpRes.GetPixel(x, y).Name == "ffa8b8a2" ||
bmpRes.GetPixel(x, y).Name == "ffe5e9e3" ||
bmpRes.GetPixel(x, y).Name == "ffa6b6a0" ||
bmpRes.GetPixel(x, y).Name == "ff6c8864" ||
bmpRes.GetPixel(x, y).Name == "ffb3c1ae" ||
bmpRes.GetPixel(x, y).Name == "ff5e7c54" ||
bmpRes.GetPixel(x, y).Name == "ff375c2b" ||
bmpRes.GetPixel(x, y).Name == "ff315825")
{
color = bmpRes.GetPixel(x, y);
bmpRes.SetPixel(x, y, Color.Black);
}
else
{
color = bmpRes.GetPixel(x, y);
bmpRes.SetPixel(x, y, Color.White);
}
}
}
bmpRes.Save(NewPathImg, System.Drawing.Imaging.ImageFormat.Png);
bmpRes.Dispose();
Для каждого цвета нужны свои оттенки
Попробовал на 2 капчах:
И вторая капча:
Казалось бы победа уже близко, осталось прогнать через тессеракт, сравнить цифры, получить координаты клика и все) Но не тут то было... Дело в том что оттенки всегда разные даже если они похожи на глаз(
Ребят может у кого то есть какие то идеи? Как победить не побеждаемое? Побороть не непоборимое?
У меня уже мозги за целый день не соображают, вата в голове, надо отдохнуть...
Прикреплю архив с капчами может кто захочет поиграться)
Вложения
-
276,8 КБ Просмотры: 4
Последнее редактирование: