утконос, есть еще
Is Bot: Registration Time Check - измеряет время, которое проходит между отправкой формы регистрации и ее получением в заполненом виде: человеку требуется какое-то время, чтобы внести свои данные, а бот это делает и отправляет обратно меньше чем за секунду.
Есть еще
vbStopForumSpam – сверяется со списком спамеров на в базе
http://www.stopforumspam.com/. Можно проверять имя, почту и ip-адрес.
Можно еще добавить в форму регистрации какое-нибудь дополнительное обязательное для заполнения поле. Например:
HTML Code:
Пол: <select name="your_sex">
<option value="0"></option>
<option value="1">М</option>
<option value="2">Ж</option>
</select>
Вовсе не обязательно потом значение из этого сохранять (хотя и можно) – нужно только проверить, что оно заполнено, т.е. не 0 и не пустая строка.
Или наоборот. Создать поле которое не надо заполнять, но дать ему какое-нибудь «важное» имя. И сделать скрытым:
HTML Code:
<input type="password" name="password2" style="disply:none" />
И проверять потом, что в нем есть – пользователь не увидит этого поля и ничего туда не впишет, а бот парсит HTML-код и наткнется на поле и, возможно, что-то попробует туда внести.
Есть еще способ: переименовывать названия полей в форме. Т.е. вместо
HTML Code:
<input type="text" name="username" />
<input type="password" name="password" />
, например, сделать поля
HTML Code:
<input type="text" name="imja_uzvera" />
<input type="password" name="der_parol" />
. Только придется для всего этого править и шаблоны и сам код.
Вдобавок повесь на периодическое исполнение скрипт (придется немного попрограммировать), который будет вести лог ip-адресов, с которых пытаются сделать на твоем форуме что-то, чо запрещено. Например я раз в полчаса запускаю запрос:
Code:
INSERT INTO spamlog
SELECT host, 1, UNIX_TIMESTAMP()
FROM session
WHERE userid=0
AND badlocation=1
AND location LIKE '%/newthread.php?do=newthread&f=%'
ON DUPLICATE KEY UPDATE cnt=cnt+1, dateline=UNIX_TIMESTAMP()
Этот запрос смотрит, кто в течении получаса пытался создать тему, не имея на то прав и записывает это в табличку spamlog. Потом я уж вручную просматриваю эту табличку, выбираю диапазоны ip-адресов с которых чаще всего ко мне лезут всякие нехорошие личности, проверяю эти адреса через WhoIs и, если эти адреса принадлежат хостерам (т.е. это не реальные люди, а скрипты на чьем-то хостинге), блокирую их.
И запрети на форуме вообще все, что у тебя сейчас разрешено, но с поддтверждением через captcha (например, добавление сообщений и поиск). Пусть регистрируются!
Короче, способов много. Выбирай на вкус. ;)