captcha
Автостереограмма и роботы
Давно хотел проверить идею нельзя ли защищаться от роботов, кодируя капчу в автостереограмму. Для людей она тоже не очень удобна, — даже умеющие их смотреть, не имеют навыка делать это быстро. Но если бы автостереограммы были последним бастионом, думаю, все научились бы
Я сделал несколько автостереограмм с рисунками, надписями и абстрактными фигурами и попробовал спросить у ЧатГПТ 5.2 что там нарисовано «в глубине». Ожидаемо, кроме галлюцинаций ничего не получил.
Но потом оказалось, что если попросить нейросеть программно восстановить рисунок, она его успешно восстанавливает и не менее успешно разбирает. Казалось, затея сорвалась и мне даже было не жаль, — всё же разглядывать автостереограммы для некоторых людей мучительное занятие. Но потом я попробовал ещё одну идею.
Оказалось, что если карта глубины почти плоская и пятна на ней очень абстрактные (я использовал близко расположенные буквы), то я могу сосчитать сколько таких «пятен» я вижу на картинке, а ЧатГПТ считает, что «в глубине» ничего нет, пусто.
В общем, в этом
Реклама на CAPTCHA
CAPTCHA, как вы наверное уже поняли по иллюстрации, это те самые картинки, данные с которых приходится вводить, чтобы подтвердить, что написать сообщение или зарегистрироваться пытается человек, а не программа, созданная спамером для рассылки сообщений.
Мне нравятся нетрадиционные методы рекламы. Мне понравилась идея (англ.), немного развитая на блоге «Сделано легко», размещать рекламу на CAPTCHA, т. е. просить пользователя вводить название бренда, телефон поддержки или URL сайта. Идею так пока никто и не реализовал.
Проблема только в том, что должна быть широкая ротация, иначе роботу будет очень просто угадать что написать. Например, если я продам место на своей CAPTCHA, скажем, молокозаводу «Ромул и Рем», то, разместив там, в ротации, их телефон, название бренда и сайт, я даю, настроенному вводить
Распознавание CAPTCHA MTC
МТС сделал у себя на сайте защиту спама в сервисе отправки SMS. Защита, надо сказать плюшевая — усреднением помехи убираются почти подчистую, дальше распознать цифры очень просто — я пробовал. Удалось добиться стопроцентной вероятности распознавания.

Алгоритм на этот раз не публикую даже из исследовательских целей. Алгоритм для Beeline потом был использован в одной
Кстати, подходящее время вернуться к разговору о защите от спамовых роботов, специализирующихся на форумах, гостевых книгах и т. п. Поводом послужила попытка Helix (aka Ulitka) усовершенствовать предложенные мною методы CAPTHA.
Как уже было сказано, метод CAPTHA — помещение на картинку некого кода, который человек должен прочитать и ввести в особое текстовое поле, обладает следующим недостатком — слишком простое изображение читается роботом, слишком сложное — уже с трудом читается человеком и отпугивает посетителей.
Предлагаю, умозрительно, поискать другие способы защиты от роботов, в стороне от методов CAPTCHA. Скажем, некоторые форумы генерируют для каждого пользователя или хоста, заходящего к ним, идентификатор, который может зависеть, от IP
Всё бы ничего, но хорошие спамовые программы давно содержат средства для быстрой настройки обхода таких средств защиты — идентификатор легко изымается из кода страницы и отсылается серверу. Тем не менее, этот путь мне кажется плодотворным.
Как известно, в браузерах есть скриптовые языки. Наиболее распространённым является JavaScript — его понимает максимальное количество современных браузеров. Код на этом языке включается прямо в страницу браузера «как есть», что делает заимствование кода на JavaScript часто минутным делом. Это положение вещей не устраивает некоторых разработчиков, что привело к появлению (обычной для интерпретируемых языков) защиты — программ изменяющих код таким образом, чтобы его было трудно прочитать человеку (такие программы часто называют «obfuscator»).
Обычно такие программы изменяют имена пользовательский функций, процедур и переменных, убирают форматирование и, иногда, модифицируют сам код программы. Даже программисту средней руки вполне по силам создать неплохой obfuscator, делающий над строкой такие преобразования, чтобы JavaScript смог восстановить исходную строку, а написание
Таким образом, объединение «маркеров», которыми помечаются пользователи
Будущее CAPTCHA
Кажется, перед разработчиками начинает маячить проблема роботов, оставляющих спам в форумах или выполняющих автоматическую регистрацию (часто — для того чтобы спамить в тех форумах, где анонимно это сделать не получается).
Традиционно, разработчики либо мирятся с неизбежным злом, либо используют так называемый
Если сильно исказить картинку, пользователь может не понять (со мной такое бывало), что на ней, собственно, изображено и после первой же неудачно попытки ввода уйти — робота же это не смутит. Если, скажем, вероятность распознавания составить всего лишь 20%, ничего не мешает роботу сделать несколько попыток до успеха.
Второй недостаток… Недавнее изобретение спамеров — метод «леммингов». Спамер открывает порносайт и… предлагает всем желающим войти, в качестве «платы», ввести код, написанный на картинке. Картинка берётся с сайта «жертвы». Как только «лемминг» вводит код,
Разновидность этого
Защиту от техники леммингов, в общем случае, я предложить не берусь — разве что отлавливать подозрительную активность
Образы.

Незаслуженно редко используют в качестве
- Они предлагают пользователю ввести слово
целиком. Пользователю неудобно. Я предлагаю использоватьradio-кнопки , вероятность
угадывания роботом увеличивается, но смотри пункт 2. - Они ничего не делают в случае неправильного ответа. Единственное, что сразу приходит
в голову — сразу блокировать IP нарушителя. Делать так можно, но существует
опасность заблокировать весьdialup-пул какого-нибудь провайдера, всех пользователей
какого-нибудь NATили прокси-серверов.
Пользователь (см. иллюстрацию)
может не попасть по «зайцу»(кто-то отвлёк, мышка заела) и выбрать «дрезину», но
он не за что не кликнет в «рукомойник». Человек, в здравом уме, не спутает зайца с рукомойником.
Ошибки позиционирования для близлежащих элементов можно и нужно прощать, за остальные —
наказывать: для этого IP переходить к другому, более неприятномуCAPTHA-методу ,
заставляя вводить слово целиком. - Они не пытаются запутать робота. Базу картинок, можно слить, если спам на
данный сервер очень важен или у спамера много свободного времени,
составить hash каждой иллюстрации и занести в базу.
Несложно увеличить стоимость взлома — достаточно выводить не одну картинку, а, например,
вывести в одну картинку сразу три изображения и туда же (в картинку) писать вопросы вида:
«что изображено на картинке в центре».
Количество вариантов изображения увеличивается
до N*M*S, где N — количество изображений в базе, M — количество изображений, печатаемых
в одну иллюстрацию, S — количество вариантов фраз. Важно, кстати, не делать изображения
фиксированными по ширине — иначе их легко будет разделить. Проявите фантазию — изображения
можно чуть масштабировать, инвертировать или перечеркнуть, фразу — писать в случайном месте
и так далее. Число вариантов увеличивается настолько, что базу можно и не менять. А методы
разделения и распознавания изображения по его участку не сработают.
Figlet.
История FIGlet началась весной 1991 года. Frank Sheeran написал другу автора первой версии Ian Chai письмо, где в качестве подписи использовалась строка, написанная
С тех пор появилось несколько версий подобных программ, библиотеки на различных языках, я сам, относительно недавно, написал библиотеку Text_Figlet для PHP (скоро войдёт в PEAR). В данный момент доступно примерно 420 шрифтов для написания.
Шрифт в изображении можно уменьшить, например, до 4 пикселей и фраза на экране будет занимать вполне приемлемое пространство. Жизнь спамера осложняется не только тем, что количество шрифтов довольно велико, но и эффектом „smushing“ (горизонтальная склейка), который используется в некоторых шрифтах. Посмотрите внимательно на написанную фразу — соседние буквы в ней „склеены“.
В начале было слово…
В начале было слово, но записать его, думаю, было нечем — Богу вряд ли нужна авторучка с бумагой, а людей тогда ещё не было. Первые люди писать тоже не могли, но могли говорить. Так что голос — довольно древнее средство общение, но с его распознованием у роботов всё ещё большие проблемы.
Некоторые сервисы (LiveJournal), например, используют альтернативный
Активный контент.
Надеюсь, этот метод распространения не получит распространения — я такой контен недолюбливаю, но спам не люблю ещё больше. В браузерах есть такая вещь как плагины — наиболее распространнёными, наверное, можно считать Flash и Java — два языка программирования, на которых вполне можно написать приложение выводящее текст или цифры.
Разобраться в том, как это приложение работает, чтобы понять что оно выводит роботу не по силам. В принципе, можно было бы давать
Animated GIF.
Несколько более простая разновидность предыдущего метода не требующая отдельного плагина — Animated GIF. Если бы вы смогли разыскать
Хитрость заключается в том, что GIF позволяет создавать анимации, где каждый кадр может иметь свою локальную палитру. Предел палитры в GIFе, как мы знаем — 256 цветов. Но никто не говорил, что нельзя записать 10 кадров, в каждом из которых было бы по максимуму цветов и которые были бы все одновременно видны. В результате мы получим 2560 цветов. Неплохо для начала.
Подобная идея приходила в голову не одному только Лебедеву, конечно. Картинка — одна из иллюстраций из статьи True Color GIF, где в формате GIF используются 32796 цветов. Заливка, которую вы видите, нужна лишь для демонстрации — в „Ководстве“ Лебедева GIF, содержащий 1792 цвета отображался без заливки, сразу целиком.
Пора, наверное, уже сказать к чему я клоню, если вы ещё сами не догадались. Разбор GIF’a, скомпонованного подобным образом — задача довольно сложная. Писать можно полноцветными буквами, части которых находятся в разных кадрах, играя с их перекрытием (например, заслонять символы или их части).
Безусловно, задача решаемая — нужно только последовательно разобрать все кадры и наложить их один на другой, но для этого нужно уметь работать с animated GIF, да и правильно наложить один кадр на другой — в общем, тут есть где споткнуться спамеру.