Личный опыт тестов Тьюринга

Публикация № 102154

Разработка - Системная интеграция - Интеграция с WEB

Личный опыт использования тестов тьюринга в администрировании форума PHPBB

Я не люблю, когда на форумах анонимным пользователям отказывают в праве ответить на сообщение. Однако причина понятна - анонимным пользователем может оказаться обычный робот-спаммер, засоряющий форумы. Так вот из-за спама страдают ленивые пользователи, которым лень регистрироваться на ресурсе, который они может быть больше и не посетят, если им не ответят, или у которых нет e-mail.

Если бы существовал способ, который 100% мог бы отличить робота от человека, анонимным пользователям можно было бы разрешить оставлять сообщения в форуме. Не так уж много может человек вручную накидать сообщений. Администратор гораздо быстрее их удалит.

В то время я узнал, что такая защита существует и называется графическим тестом Тьюринга. Пользователю предлагается картинка, на которой изображено число. Он должен ввести это число, когда отправляет сообщение, подтверждая, что он человек, а не робот.

Я поискал сайты с таким текстом и составил небольшую коллекцию картинок:


yahoo.com
 

captcha
 

mail.ru
 

Немного попрограммировав, я написал код, который рисовал самую простую картинку и выводил ее пользователю. Однако мой тестировщик (спаммер) смог сломать защиту. Анализируя логи, я обнаружил, что его спам-программа иногда делает ошибки, следовательно при взломе защиты используются алгоритмы распознавания образов (OCR). Вот мой первый тест:

Я изложу вам историю нашего противостояния, чтобы вы могли представить себе состояние искусственного интеллекта в области OCR. В конечном итоге способ защиты был обнаружен. Он оказался не по зубам современному ИИ, но к этому результату привела длительная и головоломная борьба со спаммером. :) За это ему и спасибо.

Я подумал - зачем писать самому, если можно найти бесплатный готовый тест. И я действительно нашел его в коде одного из беслатных порталов. Теперь защита выглядела так:

Как видно, буквы стали размытыми, появилась вносящая наводки на распознавание сеть и вместо 10 объектов распознавания (цифры), появились буквы и знаки. Но и эту картинку ИИ переварил, правда знаки *+- и т.п. он не очень хорошо распознавал.

Постепенно я дорабатывал этот тест, размер и позиция букв становились случайными, кроме того я подключил несколько TTF шрифтов и выдавал случайный тест тьюринга.

В конце концов движение в этом направлении привело к тому, что пользователям стало трудно распознавать тест, а защита по-прежнему взламывалась.

Я пробовал добавлять снег (короткие случайные линии), сетку, играть с цветом, но все взламывалось:

Тогда я отошел от классического теста тьюринга - давать пользователю повторить то, что нарисовано на картинке, а заставил его вводить ту информацию, что получается из информации на картинке - короче задавать ему ребусы. Пользователь должен был посчитать сколько фигурок разного вида присутствует на картинке и ввести это число (подсчитывая фигурки в произвольном порядке). Для фигурок я использовал картинки из символьных TTF-шрифтов - тогда я еще не умел работать с графикой.

   

5451
   

243

Это был сложный тест и в нем легко было запутаться и сбиться со счета. Но картинки были одинаковы, хоть и разного размера. И спаммер этим воспользовался, легко взломав тест. Распознать одинаковые картинки, даже с учетом поворота и изменения размера, достаточно легко. Буквы же, хоть и были написаны разными шрифтами, но распознавались по форме. В конечном итоге тест представлял смесь латинских букв, написанных разными шрифтами и картинок. Чтобы пользователю не выискивать одинаковые фигурки,они были вынесены в рамку в левый верхний узел.

Тут я совсем зашел в тупик. Помог мне мой друг Саня Fduch из Кенига, он сказал - тебе нужно рисовать картинку и спрашивать у пользователя - сколько ежиков сидит под сколькими елочками? Ну он немножко не так сказал, выразительнее, используя силу русского и могучего языка, но это подтолкнуло меня к идее.


3332

В первом варианте использовался тот же принцип подсчета одинаковых картинок. Однако один и тот же объект мог изображаться абсолютно разными картинками, непохожими друг на друга. Посмотрите, на картинке три совершенно разных картинки. Сначала я ограничился небольшим набором картинок, тест стал ломаться реже.

Но пользователям было неудобно считать картинки, я немного изменил логику работы, пользователь должен был ввести пятизначное число, заменяя звездочки соответствующими номерами картинок:


11342

Тест получился удобным и при большом наборе картинок неломаемым. Однако его можно было еще улучшить.Картинок предлагается больше, чем требуется ввести, что еще больше усложняет задачу спаммера. В последней версии тест выглядит так:


61242

Очевидно, что чем больше картинок в коллекции, тем надежнее работает тест и тем более он устойчив к взлому. Дополнительно я добавил небольшой поворот картинок (0-15 градусов) и помехи - не просто линии, а разноцветные треугольники, квадраты, точки, окружности и т.п. Некоторые картинки, которые допускают поворот, я поворачиваю на случайный угол от 0 до 360 градусов. Работает быстро:


25528

Что касается дополнительных доработок, можно бросать картинки не в фиксированные по размерам ячейки, а пододвигать их друг к другу, пока они не соприкоснуться и номер картинки впечатывать в свободное место на ней. Это запутает робота, но не затруднит человека. Как видно, можно использовать и рисунки и фотографии.

Думаю, на данный момент можно построить тест, который компьютер не одолеет за разумное время, даже после предварительной подготовки. Удачи вам в нелегкой борьбе с компьютерными преступниками и ворами, коллеги!

Специальные предложения

См. также

Получение html-кода страницы. JS из 1С

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования WEB

Получение исходника страницы, выполнение произвольного js-кода. Теперь с WebKit от 1С.

18.02.2020    1486    Yashazz    1       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

Отладка конфигурации в режиме веб-клиента

Статья Программист Нет файла v8 Windows Бесплатно (free) WEB

После очередного обновления платформы при попытке запуска отладки в веб-клиенте стало появляться сообщение. Собственно, до этого момента никогда веб-клиентом особо не пользовался и необходимости в отладке как-то не возникало. Данное сообщение заставило задуматься, что не так с отладкой в веб-клиенте и как ее собственно включить? Тот самый неловкий момент, когда программа просит обратиться к администратору, а администратор - это вы.

12.02.2020    1533    gamletspb    1       

Анализ работы внешней обработки сервиса МодульКасса применительно к задаче фискализации чеков при доставке

Статья Программист Нет файла v8 УТ11 Россия Бесплатно (free) Кассовые операции WEB

В статье разберу работу внешней обработки для работы с МодульКасса, опишу недочеты и применимость для организации доставки, предложу собственный вариант реализации.

11.02.2020    498    malikov_pro    0       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Вариант реализации REST API для 1С-Битрикс Управление сайтом

Статья Программист Нет файла v8 Россия Бесплатно (free) WEB

В статье опишу вариант обмена 1С УТ 11.4 и 1С-Битрикс УС 18.5 с иcпользованием компонентов Symfony, в качестве примера обмен данными по складам.

28.01.2020    1199    malikov_pro    2       

Вариант реализации работы с сервисом Dadata применительно к конфигурации УТ 11.4 и подобным

Статья Программист Нет файла v8 УТ11 Россия Бесплатно (free) WEB

В статье описывается реализация получения данных с сервиса DaData при работе с формами справочников в конфигурации УТ 11 для дополнения информации по ФИО, ИНН, Адресу.

22.01.2020    935    malikov_pro    0       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Двусторонний обмен с поставщиком через интернет-магазин для реализации товаров с ответственного хранения (с 01.02.2020 "Партии" не используются)

Статья Программист Нет файла v8 УНФ Оптовая торговля, дистрибуция, логистика Россия УУ Windows Бесплатно (free) Файловые протоколы обмена, FTP WEB

Рассмотрены реализация двустороннего обмена данными с использованием API-сервиса сайта поставщика при продаже товаров со склада ответственного хранения, алгоритм движения товаров и обмена документами на примере конфигурации 1С: УНФ у партнера, который взаимодействует с поставщиком "ООО Пауэр-Интернэшнл-шины" - одним из крупнейших в России поставщиков автомобильных шин и дисков.

16.01.2020    1412    chkurs    0       

Проброс IP-адреса клиента в http-сервис 1С. Реализация для IIS

Статья Системный администратор Программист Нет файла Windows Бесплатно (free) WEB Администрирование веб-серверов IIS

Настраиваем веб-сервер IIS для передачи в 1С IP-адреса клиента, вызвавшего http-сервис. Разбираемся с этим же вопросом при использовании фронтэнд вебсервера на примере nginx.

01.12.2019    3359    -vito-    5       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Немного о интеграции с CRM AMO

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) WEB

Немного информации о том, как настроить интеграцию с CRM AMO. Пример функций для подключения к АМО и обновления заказа. Пример на основе API авторизации.

15.11.2019    1713    xxxAndricxxx    6       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Ещё немного о ИНН и сервисе DaData

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) WEB

Об использовании сервиса dadata и немного информации о возможностях получать данные по ИНН. Возможно, кому-то будет полезным.

14.11.2019    3893    xxxAndricxxx    21       

Вариант реализации клиента SOAP на примере получения остатков из MERLION

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) WEB

В статье приведу пример клиента к сервису SOAP, функции которого принимают несколько значений типа строка или массив строк.

14.11.2019    1603    malikov_pro    0       

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

Разбор любого JSON-объекта в соответствующую структуру

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Инструментарий разработчика WEB

Данная публикация предназначена разработчикам 1С, которым приходиться разбирать данные формата JSON. Выложенный пример кода создает объект типа Структура, полностью повторяющий структуру данных формата JSON.

13.11.2019    3564    user665435_al.windstorm    14       

Проверка reCAPTCHA от Google на стороне HTTP-Сервиса

Статья Программист Нет файла v8 Россия Бесплатно (free) WEB

Код проверяет переданный токен reCAPTCHA от Google при вызове HTTP-Сервиса. Таким образом проверяем, отправил ли данные на наш HTTP-Сервис робот или реальный пользователь.

06.11.2019    2604    AVR    0       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Swagger для 1С.

Статья Системный администратор Программист Нет файла Бесплатно (free) OneScript WEB

Решение для формирования Swagger спецификаций, описывающих HTTP сервисы конфигураций 1С.

21.10.2019    6754    botokash    27       

Простой способ опубликовать базу 1C из дома в интернет, когда Ваш провайдер этого не обеспечивает (3G, 4G модем и т.п.)

Статья Системный администратор Нет файла v8 1cv8.cf Бесплатно (free) WEB Облачные сервисы, хостинг

Если у Вас возникла потребность опубликовать из дома во всемирную паутину базу 1С (например, для тестирования), в т.ч. интерфейс OData, HTTP или Web-сервисы, а интернет-провайдер (например, 3G Мегафон) не предоставляет возможности инициировать соединения извне, то в конце статьи Вы найдете простой, быстрый и условно-бесплатный способ это сделать.

14.10.2019    6682    uno-c    25       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.

6500 рублей

Самый примитивный HTTP-сервис в мире

Статья Программист Нет файла v8 Бесплатно (free) WEB

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    12111    YPermitin    26       

Работа из 1С с API PayPal

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) WEB

PayPal - международная платежная система является очень популярной за пределами СНГ для онлайн торговли и не только. API PayPal достаточно хорошо документирован. При попытке связать 1C с PayPal пришлось столкнуться с несколькими нюансами, которыми и хотелось бы поделиться в этой статье с примерами программного кода.

08.09.2019    2946    da_1c    0       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) WEB Администрирование данных 1С

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    6834    Fragster    9       

Вывод отчетов из Штрих-М Торговое предприятие 5 на кассовое ПО Кассир 5 через веб-сервис

Статья Системный администратор Программист Нет файла v8 1cv8.cf Розничная и сетевая торговля (FMCG) Россия УУ Windows Розничная торговля Бесплатно (free) WEB

Универсальный механизм вывода отчетов товароучетной системы Штрих-М Торговое предприятие в кассовое ПО Кассир 5 посредством веб-сервиса.

14.08.2019    3087    Van2507    1       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

Совсем простой обмен HTTP, 2 функции

Статья Программист Нет файла v8 Бесплатно (free) WEB

Функция для вызова рест-сервиса и функция для разбора результата. Быстро, просто, универсально.

12.08.2019    5964    Yashazz    15       

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery. Продолжение

Статья Программист Расширение (cfe) v8 1cv8.cf Бесплатно (free) WEB

Получение изображений из информационной базы и отправка файлов через "фронт" на HTML/CSS/JS.

08.08.2019    5366    Sedaiko    1       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

1Script.Web. Интернет-приложения на языке 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB OneScript Инструментарий разработчика

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    15593    Evil Beaver    32       

Неверные остатки на сайте битрикс

Статья Программист Нет файла v8 УТ11 Бесплатно (free) WEB

Исправление процедуры выгрузки остатков на сайт битрикс из УТ 11

25.04.2019    3594    distorshion    4       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Отправка файлов через SOAP. SOAP with attachments, MTOM

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) WEB

В продолжение «своеобразной» поддержки 1С протокола SOAP, описанной в https://infostart.ru/public/965259/, опишу еще одну особенность. 1С не поддерживает возможность отправки файлов-вложений. Для решения этой проблемы пришлось самостоятельно писать формирование пакетов SOAP и разбор ответов сервера.

18.04.2019    5321    mysm    2       

HTML-клиент у конфигурации 1С

Статья Программист Нет файла v8 Бесплатно (free) WEB

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    13894    Smaylukk    119