Джон Конде обрисовывает в общих чертах много хорошего. Проблема с выбором анти-бот / анти-спам техники заключается в балансе эффективности и удобства. Было бы очень неудобно заполнять CAPTCHA каждый раз, когда вы хотите опубликовать комментарий или сообщение, но если вам требуется только CAPTCHA при регистрации, то иногда это не удерживает спамеров.
Некоторые из пассивных методов являются хорошей альтернативой, так как они не требуют никаких действий со стороны человека. Проблема в том, что боты становятся все более изощренными, и если боты могут решать CAPTCHA, то они, безусловно, могут обрабатывать JS и CSS. Таким образом, вам нужно проявить немного изобретательности, например, использовать менее очевидный CSS, чтобы скрыть поля ловушки для ботов.
Но, основываясь на вашем вопросе, я думаю, вы, вероятно, понимаете, что цель состоит не в том, чтобы создать сайт, защищенный от ботов, а в том, чтобы создать достаточно сдерживающего фактора, чтобы пользователи ботов просто выбирали другие более простые цели. Таким образом, то, что требуется здесь, будет варьироваться от сайта к сайту, и, вероятно, потребует некоторого тестирования методом проб и ошибок. Сначала я бы попробовал наименее навязчивые приемы.
Наконец, еще один способ снять спам с вашего сайта - использовать модерацию, чтобы удалить любые комментарии, отправленные ботом, или спам, переданный вручную.