Основная идея, стоящая за капчами honeypot, заключается в том, что у вас есть скрытое (через CSS) поле с именем что-то вроде «form», «email» или «content», которое (для бота, просто читающего имя поля) выглядит так, как должно быть заполнено. Затем, когда сервер просматривает отправку, вы убедитесь, что эти скрытые поля не заполнены. Если это не так, то вы помечаете пост как бот.
Вот хорошо объясненный пример (с некоторым кодом в ASP), а - это Rails Gem, который предоставляет капчи honeypot.
То, что Rails Gem Я связал, похоже, что его очень легко использовать после установки:
<% form_tag comments_path, :honeypot => true do -%>
...
<% end -%>
Хотя, если вам интересно узнать о подходе, а не просто реализовать его, я бы порекомендовал вам сделать свой собственный. Если вы катаетесь по своему усмотрению, важно убедиться, что поле скрыто с помощью CSS (или другого стиля / позиционирования), а не input type="hidden"
- иначе бот может не заполнить поле.
Как отметил Майкл Миор в комментариях, важно, чтобы рядом со скрытым полем было сообщение, в котором пользователь оставлял бы его пустым - в противном случае пользователи с программами чтения с экрана могут ошибочно его заполнить. Эта функция отсутствует в жемчужине I связан с - так что если вы делаете доступный веб-сайт (которым вы почти наверняка должны быть), вам может понадобиться изменить его или свернуть свой собственный.
Имейте в виду, что этот трюк не является надежным - ничто не мешает боту отображать страницу и определять, какие поля действительно видны пользователю, прежде чем заполнять какие-либо, - но этот тип бота будет значительно сложнее, чем один что только что посмотрел на форму HTML. Сапча-приманка, вероятно, будет очень эффективна при остановке простых ботов.