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

想法吗?


当前回答

我所知道的一种清除机器人的方法是在用户的cookie中存储一个密钥,如果密钥或cookie不存在,则假设它们是机器人,忽略它们或退回到图像CAPTCHA。这也是一种非常好的方法,可以防止为机器人创建大量会话/跟踪,这些会话/跟踪会给您的数据库添加大量噪音,或增加系统性能的开销。

其他回答

将一个数学问题发布为IMAGE,为了清晰起见,可能会使用附图。

只是图像中清晰可见的文本。

(2+5)*2

这句话的第五个单词是什么颜色?红色的吗?,蓝色,绿色?

(适当的颜色词)

简单的数学并不是答案——垃圾邮件发送者甚至不需要编写一个简单的解析器。谷歌将为他们做这件事,即使你使用单词而不是数字,所以它只需要在谷歌上快速搜索,它就完成了。

它也可以很容易地进行文本到数字的转换。

似乎有某种错误在SO的渲染,因为它只显示第一个链接时,这是张贴,即使预览工作正常。第二个链接是-进入谷歌,搜索“1 * 42”

我有一个vBulletin论坛,收到了大量的垃圾邮件。添加一个额外的规则解决了这一切;让人们输入一个单词的大写字母。由于我们的网站名为“TrefPuntMagic”,他们不得不输入“TPM”。我知道它不是动态的,如果一个垃圾邮件制造者想要真正的垃圾邮件我们的网站,他们可以做一个工作,但我们只是许多许多vBulletin论坛他们的目标,这是一个简单的解决方案。

有史以来最好的验证码!也许你需要像这样的东西来注册,以防止庸人进入。