【发布时间】:2010-12-15 05:15:56
【问题描述】:
我讨厌验证码,你认为有没有更好的解决方案
【问题讨论】:
-
这里已经有一些答案了:stackoverflow.com/questions/2940887/…。但是,为“我讨厌验证码”+1。
-
我也一样:我也讨厌验证码。几周前,我不得不设置一个 gmail 帐户。我没能正确输入验证码。我尝试了音频,结果更糟。经过几次尝试,我和两个朋友成功了。
我讨厌验证码,你认为有没有更好的解决方案
【问题讨论】:
数学问题越来越受欢迎
例如: 什么是 3 + 2?
这些通常比验证码更容易阅读,这可能会让某些用户感到非常困惑。
【讨论】:
您可以查看Practical non-image based CAPTCHA approaches?
我之前问过一个问题Need suggestions/ideas for easy-to-use but secure captchas
但是,如果您因为验证码的存在而对用户所面临的困难感到恼火,那么对此存在很多争论,人们仍在努力想出一个通用的解决方案,即使对于非常受欢迎的网站。
您应该看到http://nedbatchelder.com/text/stopbots.html 以实现Negative captchas。但遗憾的是,据我所知,这对于特定于站点的垃圾邮件攻击(当您的站点非常受欢迎时)还没有效果。作者说他已经成功地将这些技术用于不太受欢迎的网站。最先进的否定验证码的总体结论是,无论您使用什么技术,垃圾邮件发送者都可以对他们的机器人进行编程,以便在一段时间内破解它如果他们针对您的网站。当您的网站非常受欢迎时,他们可能会瞄准您的网站。但是在您的网站不是很受欢迎之前,您绝对可以使用它们。
【讨论】:
我有一个带有visibility: hidden; position: absolute 的虚假表单输入(类似zip 或机器人喜欢填写但您真的不需要的任何其他信息)。这背后的动机是获得对用户不可见但对机器人可见的输入。因此,每当您收到填写了特定输入的请求时,您就知道这不是人类。
我使用visibility: hidden; position: absolute,这样它仍然会占用空间,但不会使设计混乱。这适用于使用更复杂的技术来检测隐藏输入的机器人,因为对于 JS,如果占用任何空间,则不会隐藏某些内容。
到目前为止,我还没有在非常成功的网站上测试过这种技术,但它仍然值得一试。但是请注意,某些浏览器(我正在查看您的 Safari/OSX!)从您的联系人列表中获取信息并自动为您填写所有输入字段(甚至可能是您的隐藏输入),以便您更好地检查该方向的错误。
【讨论】:
几年前我以一种可爱的方式解决了这个问题。
我在一个小型企业网站上有一个“给我发电子邮件”表单,我希望它能够最大限度地被访问;垃圾邮件机器人发现了它并开始淹没合法邮件。通过阅读服务器日志,我了解到机器人在提交表单时没有先重新获取它——有人缓存了我的表单,只要他们有一些垃圾需要我阅读,他们就会发送一个 POST。隐藏的表单输入会在几天内有所帮助,但随后某些机器人的所有者会找出正确的输入并将其缓存,然后洪水将再次开始。
我没有任何可以在表单中添加会话信息的后端,也不想添加任何内容。相反,在“在此处键入您的消息”框和隐藏元素之间,我插入了一个脚本的输出,该脚本的输出是
<!-- instructions for spam robots: we are a waste of your money, go away, thanks -->
<div class="float-left" style="font-size: x-small;">
There will be a short delay before you may submit the form. If you
have been typing in your information, the delay may already have
ended.
<br/><span>
4 ...
</span><span>
<!--
d92cbd14985295ac27929a6db7891a90ec4173a8358dcadab134cc589ce2de54
1468365bd33b520754ddb8223252e7e6e7584ddb956ef1bb28628e27cfea86c6
-->
垃圾块是随机生成的,很难压缩。我试验了垃圾块需要多长时间。当我将表单大小增加到大约 200K 时,垃圾邮件就停止了。
这实际上并不是很多额外的数据,就像在页面中添加一些额外的图像一样。即使对于假设的拨号客户,呈现文本框和呈现提交按钮之间的延迟也比实际撰写消息可能花费的时间要短。
【讨论】:
有一个不错的技巧,您可以通过将空输入 displayed none 设置给用户但对机器人可见。
如果输入的 !=="" 为空,则为表单返回 false。
这里还有更多 http://klauskjeldsen.dk/avoid-html-form-spam-using-css/
【讨论】:
如果你讨厌验证码,那么我可以给你两个快速的其他选择:
【讨论】: