当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何防止机器人自动填写表格?》经验,为你挑选了8个好方法。

我正在尝试提出一个足够好的反垃圾邮件机制来防止自动生成的输入.我读过像captcha,1 + 1 =等技术?东西工作得很好,但他们也提出了一个额外的步骤阻碍了应用程序的免费快速使用(我不是在寻找类似的东西).

我已经尝试在我的所有表单中设置一些隐藏字段,display: none; 但是,我确定可以将脚本配置为跟踪表单字段ID并且根本不填充它.

您是否实施/了解了一种良好的防自动填充机器人方法?有没有什么可以与HTML和/或服务器端处理无缝地完成,并且(几乎)防弹?(没有JS就可以简单地禁用它).

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



1> Ben Scheirma..:

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

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

如果您创建一个文本框,把它藏在JavaScript,然后验证值是空白的服务器上,这会淘汰机器人的99%在那里,并不会引起用户的99%,任何挫折都没有.剩下1%的javascript已禁用仍会看到文本框,但您可以为这些情况添加"将此字段留空"等消息(如果您完全关心它们).

(另外,如果你在场上做了style ="display:none",那么对于机器人来说太容易看到并放弃该字段,这就是我更喜欢javascript方法的原因).


小点在这里:为了解决JS问题,只需使用CSS将蜜罐输入*置于*页面顶部以上 - 这样就可以将js禁用,并绕过它,机器人将必须能够解析CSS绝对定位,并就是否是蜜罐做出常识决定.这样一点防弹:)
@ alexy13是的,它更简单,但正如答案中所述,机器人更容易弄清楚你想要做什么,只测试一个CSS属性.但是,如果您使用绝对定位策略,机器人必须解析所有定位规则*和*大多数元素父母的规则,以便能够确定输入是否可见,然后图是否对这些信息采取行动 - 这对于大多数(如果不是全部)机器人来说都比它的价值更大.
我现在已经在两个受到抨击的站点上使用了此技术,并且两个站点的机器人注册现在都为零。它无助于针对性攻击,但是大多数人只是在寻找漏洞利用或垃圾邮件。

2> Pindatjuh..:

一种易于实现但不是万无一失的(特别是"特定"攻击)解决反垃圾邮件的方法是跟踪表单提交和页面加载之间的时间.

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

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

时间上的差异可能很微妙; 如何在没有cookie的情况下跟踪这个时间需要某种方式的服务器端数据库.这可能会对性能产生影响.
您还需要调整阈值时间.


注意是否要允许最终用户使用自动表单填充程序,例如https://addons.mozilla.org/en-US/firefox/addon/1882,这可能允许非常快速的提交.除了验证码,任何令最终用户烦恼的事情通常都不好,特别是在阻止一个人(非常)快速前进时.
请注意,SO就是这样的.连续快速或多次编辑评论,您将看到"你是一个人吗?" 页.
黑客不会总是要求表格.有时,精心设计的URL(使用GET或POST)足以轻松地多次发布表单.

3> Roko C. Bulj..:

如果 - Bot根本找不到任何东西form怎么办?

3个例子:

1.使用AJAX插入表单

如果您对使用JS已禁用但无法查看/提交表单的用户感到满意...您可以随时通知他们

ERROR: The form could not be loaded. Please, re-enable JavaScript in your browser to fully enjoy our services.

.比,

    创建一个form.html并放置form一个

    元素.

    在你需要调用该表单的页面内部使用一个空的

    和这个jQuery:

$("#dynamicForm").load("form.html #formContainer");
2.完全使用JS构建表单

// THE FORM
var $form = $("
", { appendTo : $("#formContainer"), class : "myForm", submit : AJAXSubmitForm }); // EMAIL INPUT $("",{ name : "Email", // Needed for serialization placeholder : "Your Email", appendTo : $form, on : { // Yes, the jQuery's on() Method input : function() { console.log( this.value ); } } }); // MESSAGE TEXTAREA $("
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有