Какой способ защиты от ботов (публикаторов для доски объявлений) лучший?
Есть у нас достаточно капризный клиент. Сделали ему доску объявлений. Работает всё отлично, он в целом доволен, но одно но: не можем с ним договориться насчёт защиты от автоматических публикторов.
Реализовали капчу и фильтрацию по юзер-агенту, говорит "мало, можно обойти".
Провели митинг с командой, пришли к выводу, что если так смотреть, то любой способ защиты можно рано или поздно обойти.
Решил ещё раз поговорить с клиентом, он говорит "Вот сделайте мне как на Авито". Аргументирует тем, что он где-то слышал, что разрабы всяких публикаторов за Авито берут в разы больше денег, т.к. там сложная защита.
Я посмотрел - там только капча, ну может на сервере проверки, а так - ничего особенного.
В общем вопрос: какой бы вы предложили способ недопустить публикацию объявлений ботом, причём чтоб он был действительно трудно обходим, не создавал трудностей пользователю и не создал головной боли нам во время цикла разработки и поддержки.
Ну и второй вопрос: может кто работал с Авито, что там за защита такая легендарная?
Предложите схему - обязательная регистрация на сайте + не просто почта а аккаунт в какой нибудь соц сети + подтверждение регистрации через смс + подтверждения добавления объявления через смс + капча (куда же без нее), затем предложите клиенту самому побывать в роли того бедного человека который пройдет все эти процедуры и все же добавит объявление а не пойдет на тот же авито.
В авито есть правила - www.avito.ru/help/osnovnye_prichiny_blokirovki_oby...
И скорее всего используется автоматическая проверка соответствия этим правилам + ручная проверка подозрительных объявлений.
На Авито сидят модераторы, которые круглые сутки ищут дубликаты, затем звонят публикаторам (правила читать и соблюдать не любят).
Любая антиспам-защита будет мешать обычному пользователю выполнять действия на сайте. Обычно заказчику наплевать на такие тонкости, но раз спросили... вижу такой концепт.
Группа доверенных зарегистрированных пользователей, которым не нужно вводить капчи и другие дополнительные поля (тут понадобится только 1 модератор, а куда без него. Надеюсь, графа "обслуживание" у вас в прайсе есть?).
Для всех остальных вместо капчи использовать текстовые вопросы "Какой цвет у травы?", или с динамической обработкой "Назовите текущее время года" (всё зависит от бюджета заказчика). Причём данное поле с ответом должно быть перед полем ответа, чтобы пользователь смог сосредоточится на теме ответе.
Все вопросы держать в БД и там же контролировать, если бот смог найти ответ (для блокирования неэффективного вопроса).
СМС - номер телефона просто способ сбора личной информации, можно отпугнуть потенциальных клиентов.
Банально: при регистрации дать прочитать большой текст, затем заставить ответить на вопросы (но нужно потратить время на составление теста и вопросов, чтобы нельзя было сходу нащёлкать верные ответы, как на хабаре).
ЗЫ: Клиент у вас не капризный, а особенный. Для особенных клиентов нужен особенный прайс ;)
Насчёт вопросов - это действительно идея: боту будет очень тяжело напарсить все возможныне вопросы. Наверное будем предлагать именно этот вариант.
Естественно с заказчиком всё обговаривается :)
Но это, само собой, не должно быть единственным решением. Я бы добавил ещё рандомизацию названий полей формы, валидация поля почты (ботам тяжелее будет угадать, какая там по счету почта). Ну и в начале/в конце формы по 2-3 скрытых поля, при заполнении которых мы говорим, что ты бот.