【问题标题】:Harder, Better, Faster, Stronger... Techniques for an image-based CAPTCHA?更难、更好、更快、更强……基于图像的验证码技术?
【发布时间】:2010-09-16 19:58:29
【问题描述】:

有很多非基于图像的验证码想法四处流传。但是老式的方式呢?

好的图片验证码有哪些要素?哪些视觉元素对计算机来说很难,但对人类来说更容易?那些错误,对于计算机来说比对人类来说更容易的元素呢?提高验证码生成器速度的好方法是什么?

这是我一直在研究的 CAPCHA 示例。它为两个正弦波生成函数,然后在它们之间拉伸一个文本。它将其放置在从图像池中提取的背景上。

如何改进? (具体来说,我使用的是 PHP GD。)想到的事情是:

  • 更改文本的颜色,可能使其变为多色。
  • 添加“划痕”或标记,使文本略微模糊。
  • 添加失真,使其也受到水平正弦波的影响。

什么是出色的图像验证码?


编辑: 我知道有一些非常有价值的第三方验证码资源。我正在寻找使它们好的属性。我想使用自己的验证码,只是为了自我提升。所以,你可以谈谈 reCAPTCHA,但这并不是我想要的。

此外,有人提出,不仅图像很重要,体验也很重要,因此请随时发表评论。

【问题讨论】:

    标签: captcha spam-prevention


    【解决方案1】:

    警惕 ReCaptcha 的建议。我已经向它提交了几十次错误的输入,并且每次都成功了。有几次我为这两个词提交了错误的输入,而不仅仅是最模糊的词;正如我所说,成功率是 100%。

    我还认为基于图像的验证码对用户不利,应尽可能避免。基于文本的解决方案的优势在于,您可以根据您网站的受众对其进行定制,增加一定程度的隐蔽性,当机器对基于文本的解决方案变得更加精通时,它们可能会绊倒机器。

    至少,不要一直使用这个:
    (来源:codinghorror.com

    【讨论】:

    • 我会为“绿色”拍摄。或者,也许,“柠檬”?
    • 我会说这是因为实施不佳,最常见的情况是 recaptcha 发生这种情况是因为“程序员”忘记检查合法词,他/她认为 recaptcha 会为他们做到这一点,并且确实没有。
    【解决方案2】:

    您可以在数据库中创建一个验证码表,而不是生成验证码,然后您自己通过在 google 上搜索好的验证码图片来创建该表。

    所以不用担心“这种生成方法会起作用吗?”

    【讨论】:

      【解决方案3】:

      您可以添加一个随机的字体数组,以便 GD 使用不同的字体呈现每个字符。

      【讨论】:

        【解决方案4】:

        如何剪切和洗牌以破坏显示和仅鼠标输入?

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

        这使得光学识别更难,并且可能让您避免那种让人类难以识别验证码的讨厌的背景游戏。

        对于您可以依靠浏览器中的本地拖动而不是输入条目的站点,使用随机播放要求用户重新排序片段(只是按照草率的顺序,而不像其中一个难题)。或者,如果您想单独使用点击次数,可以使用经典的 sliding tile 谜题。

        请注意,我遇到了一个验证码,您必须在其中识别 N 部卡通中的哪些有成功阻止我的动物!

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

        【讨论】:

          【解决方案5】:

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

          在其他轴上也添加波形失真。仅在一个轴上的失真可以相对容易地分析和反转。

          根本不用担心彩色背景。从其他颜色中自动过滤黑色非常容易。你的背景只会妨碍人类。

          请勿添加划痕或其他噪音,除非其厚度与字母相同。去噪算法可以轻松去除比字母更细的东西。

          【讨论】:

            【解决方案6】:

            我喜欢KittenAuth 的想法和微软的Asirra 项目。这个想法是,虽然 OCR 最终会演变为打破您的传统验证码,但区分小猫和狗的能力是一个复杂得多的问题,而对人类来说绝对微不足道。

            这个解决方案,虽然可能是有史以来最性感的验证码创意,但其局限性在于不容易移植到听力受损的方法中。

            【讨论】:

            • "识别所有的猫:喵*" 好的,你对音频的看法是正确的......
            • 它的图片集也很有限——垃圾邮件发送者可以循环浏览 100 张左右的图片,手动对它们进行分类,然后对图片进行标识,我怀疑这组图片已经在网。
            【解决方案7】:

            如果字母的颜色褪成其他颜色会怎样……例如,5 可以从顶部的黄色开始,然后逐渐变为蓝色或其他颜色。选择的颜色应该是随机的。

            使用多色背景可能会使计算机难以识别背景结束和角色开始的位置。希望人类实际识别图案不会太困难。

            【讨论】:

              【解决方案8】:

              将每个字母/数字从一个模式中提取出来,即 I.E.不相连的点。这意味着除了模式识别(他们还没有)之外,计算机无法知道点是字母的一部分。然后是通常的扭曲和随机线条。

              如何做到这一点是一个挑战。

              编辑:另外,不同形状的图案的奖励积分,并尝试在字符(边缘或整个字符)上使用 alpha 透明度,以便它们与背景合并。

              【讨论】:

              • 这正是我正在寻找的想法。
              【解决方案9】:

              试图破解验证码的算法是模式匹配器,它们通过几种不同的方式工作:缩放和倾斜他们已经知道的符号、查找和跟踪边缘以及计算内部孔洞以提供帮助。如果您可以将字母分成几部分,改变字母质量,或在字母上添加粗线条或“划痕”,这些技巧将有所帮助。然而,考虑到我们有 recaptcha 用于此目的,所有这一切都没有实际意义,而且它是一个很棒的第三方应用程序。此外,验证码将有助于您网站的安全,但不会阻止那些真正受到诱惑的人。

              【讨论】:

                【解决方案10】:

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

                • 无需提交即可获取新图片
                • 视障人士的口语版
                • 不统一的字符

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

                或者,如果你想变得更时髦,请查看:http://research.microsoft.com/asirra/

                【讨论】:

                  猜你喜欢
                  • 2023-03-21
                  • 1970-01-01
                  • 2012-11-01
                  • 1970-01-01
                  • 2013-10-03
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-10-27
                  • 1970-01-01
                  相关资源
                  最近更新 更多