我有一个Web形式的用户填写和信息发送到服务器和存储在数据库中。 我很担心,机器人可能只是填写表格,我会在最后一个完整的无用记录的数据库。 如何防止机器人在我填写表格? 我想,也许像#1的机器人检测,如果它认为你在哪里一个机器人,它要求你确认你不是。 是否有一个服务器端API在Perl,Java或PHP?
Answer 1:
有几种解决方案。
使用CAPTCHA。 SO使用验证码 ,据我所知。
一个额外的字段添加到您的形式,并与CSS隐藏(显示:无)。 普通用户将不会看到这个领域,因此不会填满它。 你检查在提交如果该字段为空。 如果没有,那么你面对的已认真填写所有表单域的机器人。 这种技术通常被称为“蜜罐”。
添加JavaScript的定时器功能。 在页加载它开始于零的值,然后随着时间的推移增大它。 普通用户将阅读和填写表单一段时间,然后才提交。 机器人将只需填写并立即提交表单在收到它。 您是否值已在提交了太多从零。 如果有,那么它可能是一个真实的用户。 如果你看到的只是几秒钟(或全部因不执行JavaScript的机器人甚至没有值),那么它可能是一个机器人。 如果你决定,你会需要你的用户的JavaScript上,以执行“写”操作,但会才起作用。
还有其他的技术是肯定的。 但是,这些都是非常简单和有效。
Answer 2:
您可以使用验证码 (与计算器) -他们有库可用于许多编程语言。
Answer 3:
我总是优选的蜜罐验证码( 本文由菲尔哈克 ),作为它的微创给用户。
Answer 4:
验证码带来的可访问性问题,并通过软件识别最终被击败。
我这个推荐的阅读简短的文章有关机器人的陷阱,其中包括隐藏字段,如马修藤蔓和新城镇已经建议。
无论如何,你仍然可以自由地使用这两种验证码和BOT陷阱。
Answer 5:
CAPTCHA是巨大的。 你可以做其他的事情,以防止你的机器人的流量99%,但不惹恼你的用户是验证领域。
我的网站,我检查的文字像邮政编码和电话号码字段。 这消除了所有非目标机器人误传。
Answer 6:
你可以创建一个两步的系统,其中用户填写表单,但随后必须回复电子邮件“激活”设定的时间期限内记录 - 说24小时。
在后端,而不是所有的表单提交填充当前表,你可以把它们放入一个临时表中自动删除任何行比你的时间分配更旧。 除非你有一个严重的机器人问题,那么我会认为该表不会得到那么大,尤其是如果第一种形式是只有几个领域。
这种方法的benifit是,你不必使用验证码或一些其他技术一样,可能会产生一些可访问性问题。