如何验证机器人是否正在输入信息

时间:2009-08-06 14:33:16

标签: captcha robot

我有一个用户填写的网页表单,信息发送到服务器并存储在数据库中。我担心机器人可能会填写表格,我最终会得到一个充满无用记录的数据库。如何防止机器人填写表格?我想也许像Stackoverflow的机器人检测,如果它认为你是一个机器人,它会要求你验证你不是。 Perl,Java或PHP中是否有服务器端API?

6 个答案:

答案 0 :(得分:10)

有几种解决方案。

  1. 使用验证码。据我所知,SO使用reCAPTCHA

  2. 在表单中添加一个额外字段并使用CSS隐藏它(display:none)。普通用户不会看到此字段,因此不会填写该字段。如果此字段为空,请检查提交。如果没有,那么您正在处理一个仔细填写所有表单字段的机器人。这种技术通常被称为“蜜罐”。

  3. 添加JavaScript计时器功能。在页面加载时,它会从零开始一个值,然后随着时间的推移逐渐增加。普通用户会在一段时间内阅读并填写您的表单,然后才能提交。机器人会在收到表格后立即填写并提交表格。您在提交时检查值是否从零开始变大。如果有,那么它可能是真正的用户。如果您只看到几秒钟(或者由于机器人没有执行JavaScript而根本没有任何值)那么它很可能是一个机器人。但是,只有当您决定要求您的用户使用JavaScript才能执行“写入”操作时,这才会起作用。

  4. 还有其他技术可以肯定。但这些都非常简单有效。

答案 1 :(得分:5)

您可以使用reCAPTCHA(与stackoverflow相同) - 对于许多编程语言,它们都有libraries

答案 2 :(得分:4)

我一直偏爱Honeypot验证码(article by phil haack),因为它对用户的侵害性较小。

答案 3 :(得分:3)

Captchas带来了可访问性问题,最终将被软件识别所击败。

我建议阅读这篇关于机器陷阱的short article,其中包括隐藏的领域,正如Matthew Vines和New in town所暗示的那样。

无论如何,你仍然可以同时使用验证码和僵尸陷阱。

答案 4 :(得分:2)

CAPTCHA很棒。您可以做的另一件事是阻止99%的机器人流量但不会惹恼您的用户是验证字段。

我的网站,我检查邮政编码和电话号码等字段中的文字。这已经消除了所有非目标机器人的错误信息。

答案 5 :(得分:0)

您可以创建一个两步系统,用户填写表单,但必须回复电子邮件,以便在一段时间内(例如24小时)“激活”记录。

在后端,您可以将它们放入临时表中,而不是使用所有表单提交填充当前表,而是自动删除比您的时间分配旧的任何行。除非你有一个严重的机器人问题,否则我认为表格不会那么大,特别是如果第一个表格只是几个字段。

这种方法的一个好处是,您不必使用验证码或其他可能会产生一些辅助功能问题的技术。