我一直在阅读关于在我的表单中添加蜂蜜罐字段来打击机器人/垃圾邮件.唯一的问题是他们没有指导或任何开始的地方.许多网站表示要隐藏一个只有垃圾邮件机器人才能填写的字段.但是,就我而言,我不知道从哪里开始我的应用程序.有人可以给我关于如何设置这个的建议吗?我试图让我的Devise注册页面使用蜂蜜罐田.
解决方法
honeypot captchas背后的基本思想是,您有一个隐藏的(通过CSS)字段命名为“form”或“email”或“content”(对于刚读取字段名称的机器人),它应该被填写.然后,当服务器查看提交时,您确保这些隐藏的字段为空.如果没有,那么你将这个帖子标记为机器人.
Here’s a well explained example(在ASP中有一些代码)和here’s a Rails Gem that provides honeypot captchas.
<% form_tag comments_path,:honeypot => true do -%> ... <% end -%>
虽然如果您有兴趣了解该方法,而不仅仅是实现该方法,我建议您自己滚动.如果你自己滚动,重要的是确保该字段被CSS隐藏(或其他一些样式/定位技巧),而不是输入type =“hidden” – 否则bot可能不会填写该字段.
正如迈克尔·米尔(Michael Mior)在评论中指出的那样,隐藏的字段旁边会显示一条消息,告诉用户将其留空,否则带屏幕阅读器的用户可能会错误地填入该信息.我链接到的宝石中缺少此功能 – 所以如果你做一个可访问的网站(你几乎肯定应该是),你可能需要修改它或自己滚动.
请记住,这个伎俩不是万无一失的 – 没有什么可以阻止机器人渲染页面,并确定在填写任何内容之前,用户实际上可以看到哪些字段 – 但是那种机器人会比刚才看起来复杂得多以html的形式.蜜罐验证码在停止简单机器人时可能非常有效.