如何防止机器人自动填表?

新手上路,请多包涵

我正试图想出一个足够好的反垃圾邮件机制来防止自动生成的输入。我读过像验证码这样的技术,1+1=?东西运行良好,但它们还提供了一个额外的步骤,阻碍了应用程序的免费快速使用(我不是在寻找类似的东西)。

我已经尝试在我的所有表单中设置一些隐藏字段,使用 display: none; 但是,我确信可以配置一个脚本来跟踪该表单字段 ID 而只是不填写它。

您是否实施/知道一种很好的反自动填表机器人方法?是否可以通过 HTML 和/或服务器端处理无缝地完成一些事情,并且(几乎)是防弹的? (没有 JS,因为可以简单地禁用它)。

我试图不为此依赖会话(即计算单击按钮的次数以防止过载)。

原文由 Gal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 685
2 个回答

一种易于实施但并非万无一失(尤其是针对“特定”攻击)的反垃圾邮件解决方法是跟踪表单提交和页面加载之间的时间。

机器人请求页面、解析页面并提交表单。这很快。

人们输入 URL,加载页面,在页面完全加载之前等待,向下滚动,阅读内容,决定是否评论/填写表格,需要时间填写表格,然后提交。

时间差异可能很微妙;以及如何在没有 cookie 的情况下跟踪这个时间需要某种服务器端数据库方式。这可能会影响性能。

您还需要调整阈值时间。

原文由 Pindatjuh 发布,翻译遵循 CC BY-SA 2.5 许可协议

实际上,我发现一个简单的 Honey Pot 字段效果很好。大多数机器人会填写他们看到的 每个 表单字段,希望绕过必填字段验证器。

http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

如果您创建一个文本框,将其隐藏在 javascript 中,然后验证服务器上的值是否为 _空_,这将淘汰 99% 的机器人,并且根本不会让 99% 用户感到沮丧。其余 1% 禁用了 javascript 的用户仍会看到该文本框,但您可以为这些情况添加一条消息,例如“将此字段留空”(如果您完全关心它们的话)。

(另外,请注意,如果您在场上执行 style=“display:none”,那么机器人很容易看到它并丢弃该场,这就是我更喜欢 javascript 方法的原因)。

原文由 Ben Scheirman 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题