看起来我们将为Stack Overflow添加CAPTCHA支持。这对于防止机器人、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只希望人类在这里发布或编辑东西!

我们将使用JavaScript (jQuery)验证码作为第一道防线:

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs

这种方法的优点是,对于大多数人来说,CAPTCHA永远不会可见!

然而,对于禁用JavaScript的人,我们仍然需要一个备用方案,这就是棘手的地方。

我为ASP编写了一个传统的CAPTCHA控件。NET,我们可以重复使用。

但是,我更倾向于使用一些文本化的东西,以避免为每个请求在服务器上创建所有这些图像的开销。

我见过这样的事情…

ASCII文本验证码:\/\/(_)\/\/ 数学难题:7减3乘以2等于多少? 小问题:癞蛤蟆和冰棍,哪个更好吃?

也许我只是在风车这里倾斜,但我希望有一个更少的资源密集型,非图像为基础的<noscript>兼容的验证码,如果可能的话。

想法吗?


当前回答

Asirra是史上最可爱的验证码。

其他回答

请打电话给xxxxx,让我们谈谈你那里的天气。

但是,现在的发展太快了,利润导向也太大了,对我们选择的服务提供商来说,即使是一个电话也太贵了(时间很宝贵)。

我们接受了大部分时间与机器交谈。

悲伤的时光...

除非我遗漏了什么,否则使用reCAPTCHA有什么问题,因为所有的工作都是在外部完成的。

只是一个想法。

如果你使用你所拥有的验证码想法的组合(选择其中任何一个-或随机选择一个):

ASCII文本验证码://(_)// 数学难题:7减3乘以2等于多少? 小问题:癞蛤蟆和冰棍,哪个更好吃?

加上在页面的CSS隐藏部分放置完全相同的验证码-蜜罐的想法。这样,你就有了一个地方可以得到正确答案,而另一个地方的答案应该是不变的。

回答最初的问题:

ASCII很糟糕:我不得不眯着眼睛才能找到“WOW”。这是正确的吗?它可以是“VVOVV”或其他什么; 非常简单的算术很好。盲人也能回答。(但正如Jarod所说,要注意操作符优先级。)我想有人可以编写一个解析器,但这使得垃圾邮件的成本更高。 琐事是可以的,但你必须把它们都写出来:-(

我看过动物的照片[那是什么?]。漫画投票使用一个人物的图片,他们的名字写在图像的某处[输入名字]。不可能解析,对盲人来说不行。

您可以使用音频回退读取字母和数字(与验证码中的字母和数字相同)。

最后一道防线:使垃圾邮件易于报告(一键)和易于删除(一个重述屏幕检查是否是垃圾邮件帐户,显示最后十条消息,一键删除帐户)。不过,这仍然很费时。

有人还建议使用Raphael JavaScript库,它显然可以让你在所有流行的浏览器的客户端上作画:

http://dmitry.baranovskiy.com/raphael/

.. 但这并不完全适用于我的<noscript>情况,不是吗?:)