В 2010 году я придумал то, что чтобы защититься от ботов - нужно просто проверить, что это человек. Как это сделать? Достаточно просто: человек пишет текст. Бот сразу его вставляет. Т.е. есть время. Бот тоже может ждать время - но очень мало, пока загружается страница. Значит надо как-то считать.
Итак, пользователь пишет текст, надо его как-то посчитать. У всех пользователей стоит включенный JavaScript в браузере (кроме параноиков в фольгированной шапочке). Делаем условие:
1 способ Ввод данных с клавиатуры идет посимвольно, скрипт умеет считать только отдельные символы и на каждый символ отводим 0.1-0.3 секунды, как угодно, количество символов умножаем на время - результат проведенный на сайте минимальный. Если время меньше, чем нам дает уравнение - бот.
2 способ: Символы вводятся в строку ввода только по одному, если они вставляются сразу 2 и более - бот.
Данная функция работает достаточно давно на моих ресурсах и никакого спамбота нет и даже близко! Если отключить спамбот, то через несколько дней будет картина такая (Хорошо, что хоть отключена работа тегов в публикации):

Или вы предпочитаете все же пользоваться капчей, уравнениями и прочей ерисью? 4 года работает уже антиспамот моей выдумки и реализации моего напарника. Помню ржали над народом из-за того, что те вставляли текст написанный заранее в комментарий - и не публиковалось))
Journal information