看起来我们将为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>兼容的验证码,如果可能的话。

想法吗?


当前回答

如果您希望使用基于ascii的方法,可以考虑如何集成FIGlet。你可以制作一些自定义字体,并对每个字符进行一些字体选择随机化,以增加熵。字距调整使文本在视觉上更赏心悦目,也使机器人更难进行逆向工程。

如:

    ______           __     ____               _____          
   / __/ /____ _____/ /__  / __ \_  _____ ____/ _/ /__ _    __
  _\ \/ __/ _ `/ __/  '_/ / /_/ / |/ / -_) __/ _/ / _ \ |/|/ /
 /___/\__/\_,_/\__/_/\_\  \____/|___/\__/_/ /_//_/\___/__,__/ 

其他回答

我编写了一个相当大的新闻网站,一直在摆弄验证码和分析垃圾邮件机器人。

我所有的解决方案都是针对中小型网站的(就像这个主题中的大多数解决方案一样) 这意味着他们可以防止垃圾邮件机器人发布,除非他们为你的网站(当你很大的时候)制定了特定的解决方案。


我发现一个很好的解决方案是垃圾邮件机器人不会访问你的文章后48小时后,你发布它。 由于新闻网站上的一篇文章在发布后48小时内就能获得大部分浏览量,因此它允许非注册用户在无需输入验证码的情况下发表评论。


我见过的另一个很好的验证码系统是WebDesignBeach做的。 你有几个对象,你必须拖放一个到一个特定的区域。很有创意,不是吗?

reCAPTCHA大学赞助并帮助图书数字化。

我们生成和检查扭曲的图像,所以你不需要运行昂贵的图像生成程序。

不是最精致的反垃圾邮件武器,但是微软支持:

Nobot-Control (AjaxControlToolkit的一部分)。

NoBot可以通过违反上述任何技术进行测试:快速回发、多次回发或禁用浏览器中的JavaScript。

演示:

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/NoBot/NoBot.aspx

利用社区本身来仔细检查这里的每个人是否都是人,比如像信任网一样的东西,怎么样?为了找到一个真正值得信赖的人来创建网站,我建议使用这个验证码来确保他绝对是100%的人类。

Rapidshare验证码-黎曼假设http://codethief.eu/kram/_/rapidshare_captcha2.jpg

当然,有一个很小的机会,他会忙着准备他的菲尔兹奖演讲,来帮助我们建立信任的网络,但是……

我认为一个定制的验证码是你最好的选择。这种方法需要一个专门针对机器人/脚本来破解它。这种努力因素应该会减少尝试的次数。人类毕竟是懒惰的