Джон Конде окреслює багато хорошого підходу. Проблема з вибором методики "боротьба з ботом" та "спам" - балансування ефективності та зручності. Було б дуже незручно заповнювати CAPTCHA кожного разу, коли ви хочете опублікувати коментар або повідомлення, але якщо вам потрібна лише CAPTCHA під час реєстрації, то іноді це не стримує спамерів.
Деякі з пасивних прийомів є хорошою альтернативою, оскільки не потребують людських дій. Проблема полягає в тому, що боти стають все складнішими, і якщо боти можуть вирішувати CAPTCHA, то вони, безумовно, можуть обробляти JS та CSS. Тому вам потрібно проявити трохи винахідливості, наприклад, використовувати менш очевидні CSS, щоб приховати свої бот-пастки поля.
Але виходячи з вашого питання, я думаю, ви, мабуть, розумієте, що сенс полягає не у створенні захищеного від ботів сайту, а просто у створенні достатньої кількості стримуючих факторів, що користувачі ботів просто обиратимуть інші простіші цілі. Отже, що тут потрібно, буде залежати від сайту до сайту, і, ймовірно, знадобиться тестування та перевірка помилок. Я спробував би найменш нав'язливих прийомів.
Нарешті, ще одним способом дезактивації вашого веб-сайту є використання одночасних модерацій для видалення будь-яких поданих ботом коментарів або поданих вручну спаму, який прослизає.