更难,更好,更快,更强...基于图像的验证码技术?

7
有很多非基于图像的CAPTCHA想法在流传,但是老式的方法呢?好的图像CAPTCHA包括哪些元素?哪些视觉元素对计算机来说很难,对人类来说却比较容易?那些容易被计算机识别的元素呢?增加CAPTCHA生成器速度的好技巧是什么?这是我正在开发的一个CAPTCHA示例。它会生成两个正弦波的函数,然后在它们之间拉伸一段文本。并在背景上叠加一幅从图像池中取出的图片。Image-based CAPTCHA如何改进它?(具体而言,我使用的是PHP GD。)能想到的有:

  • 改变文本的颜色,可能使其变成彩色。
  • 添加“划痕”或标记,轻微地遮盖文本。
  • 增加扭曲程度,使其水平受正弦波影响。

制作优秀图像CAPTCHA需要哪些因素?


编辑:我知道有一些非常有价值的第三方CAPTCHA资源。我正在寻找使它们好的属性。我想使用自己的CAPTCHA,仅出于自我提高的目的。所以,您可以谈论reCAPTCHA,但它并不完全是我要找的。

另外,有人提到不仅图像,体验也很重要,所以请随意评论。

10个回答

5

使用图案制作每个字母/数字,例如未连接的点。这意味着计算机无法知道一个点是字母的一部分,除非进行模式识别(他们尚未拥有)。然后进行通常的扭曲和随机线条。

如何实现这一点是挑战。

编辑:此外,对于不同形状的图案,可以尝试在字符上使用alpha透明度(在边缘或整个字符上),使其与背景融合。


这正是我正在寻找的那种想法。 - stalepretzel

4

让字母难以分离。使用类似手写的字体或添加连接字母的线条。减少并随机化字母间的间距。

在其他轴上加入波形扭曲。只扭曲一个轴相对容易分析和矫正。

完全不要纯色背景。自动过滤黑色与其他颜色非常容易,而您的背景只会给人带来困扰。

不要添加划痕或其他噪音,除非其厚度与字母相同。去噪算法可以轻松移除比字母更细的物体。


1

不必生成验证码,您可以在数据库中创建一个验证码表,并通过Google搜索好的验证码图像来自己创建该表。

因此,不需要担心“这种生成方法是否有效?”


1

如果字母的颜色逐渐变淡成其他颜色会怎样……例如数字5可以从黄色开始,逐渐变成蓝色或其他颜色。所选颜色应该是随机的。

有了多彩的背景,计算机可能很难分辨出背景和字符的分界线……希望对人类来说不会太难以识别模式。


0

你可以添加一个随机字体数组,这样GD就会使用不同的字体渲染每个字符。


0

关于剪切和洗牌带来的显示和仅鼠标输入的混淆,您怎么看?

首先,将您的正弦波变形文本分成水平带或甚至网格。

这使得光学识别更加困难,并且可能使您避免那些使一些验证码对人类而言很难的恶意背景游戏。

对于一个可以依赖于浏览器中的本地拖放的站点,而不是在输入框中输入条目,使用洗牌需要用户重新排序碎片(只需松散排序,而不像那些拼图一样)。或者,如果您只想使用点击,可以使用经典的滑动拼图

请注意,我曾经遇到过一个验证码,您必须确定N个卡通中哪一个有动物,这使我无法通过!

Wellington Grey 很好地总结了AI CAPTCHA竞赛。


0

我真的很讨厌网站上的验证码,它们只会让我烦恼。但是如果你想尝试制作一个强大的验证码,请尝试以下方法:

  • 能够在不提交的情况下获取新图像
  • 针对视力障碍者的语音版本
  • 非统一字符

我在几个网站上使用了Recaptcha,这是一个不错且强大的解决方案。

或者,如果你想要真正时髦,请查看这个链接:http://research.microsoft.com/asirra/


0
尝试破解验证码的算法是一些模式匹配器,它们通过几种不同的方式工作:缩放和扭曲它们已知的符号、查找和跟踪边缘以及计算内部孔来帮助。如果您可以将字母分成几个部分、改变字母质量或在字母上添加强线条或“划痕”,这些技术将有所帮助。然而,考虑到我们有recaptcha这样一个出色的第三方应用程序,这一切都相当无意义。此外,验证码将有助于您网站的安全性,但无法阻止那些真正受到诱惑的人。

0

对于ReCaptcha的建议要谨慎。我曾经多次提交错误的输入,其中有几次我提交了两个单词的错误输入而不仅仅是最难辨认的那个单词;正如我所说,成功率达到了100%。

我还认为基于图像的CAPTCHA对用户不友好,应尽可能避免使用。文本解决方案的优点在于您可以根据网站的受众量身定制它们,增加一定程度的模糊性,这可能会使机器在处理文本解决方案时变得更加聪明。

至少不要总是使用这个:orange
(来源: codinghorror.com)


我会争取做到“绿色”。 或者,也许是“柠檬”? - stalepretzel
我认为这是由于糟糕的实现造成的,大多数情况下,对于reCAPTCHA而言,这是因为“程序员”忘记检查合法单词,他/她认为reCAPTCHA会替他们完成,但实际上并不会。 - UnkwnTech

0

我喜欢KittenAuth和微软的Asirra项目的想法。这个想法是,虽然OCR最终会发展出破解传统验证码的能力,但区分小猫和小狗的能力对于人类来说要复杂得多,而对于人类来说却非常简单。

尽管这种解决方案可能是有史以来最性感的验证码想法,但它的局限性在于不易移植到听障方法中。


识别所有的猫:喵*。 好的,你说得对,关于音频... - stalepretzel
它还存在一组有限的图片——垃圾邮件发送者可以轻松地循环使用大约100张图片,手动对它们进行分类,然后只需识别图片。我怀疑这组图片已经被分类上传到网络上了。 - Martin Beckett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接