【问题标题】:Name of library which generates these captchas生成这些验证码的库的名称
【发布时间】:2021-12-03 12:42:57
【问题描述】:

在许多不同的旧页面上,我看到过这样的验证码,即静态 JPG/PNG 图像:

所有这些在背景中都有灰色到白色的渐变和不稳定的线条,以及作为验证码文本的扭曲的无衬线字符(仅 az 和 0-9),这就是为什么我假设它们都是来自同一个图书馆。可能使用了这个库的标准设置,导致在不同页面上的外观相似。

下面两张图片来自this数据集,部分论文A Comparison of Supervised Learning Algorithms to Solve CAPTCHAs。不幸的是,我在那篇论文中没有发现使用的验证码生成算法。值得注意的是,Keras 示例页面OCR model for reading Captchas 也使用了这个数据集。页面PWNtcha 也没有列出这种验证码。

那么,谁能告诉我它到底是哪个库?

【问题讨论】:

    标签: captcha


    【解决方案1】:

    我找到了,它是一个名为 kaptcha 的库(Google 代码页 here 的 Internet 存档版本),它似乎是 SimpleCaptcha Java 库的一个分支。 kaptcha 由 Jon Stevens(参见 here)创建,他将 Google 代码存储库克隆到 GitHub here。 GitHub 用户 penggle 也有cloned that repository 并使其成为available on Maven

    在不启动大型 Maven 项目的情况下进行尝试,例如要为机器学习算法生成大量训练数据,请执行以下操作:

    1. 从 kaptcha 的 downloads page 下载 kaptcha-2.3.2.zip
    2. 从该 ZIP 文件中提取 kaptcha-2.3.2.jar 并将其放入新目录。
    3. 在JAR文件的目录下,新建一个名为Main.java的文件,并将以下代码放入其中。正如预期的那样,所有这些页面仅使用 ZIP 中文件 src/java/com/google/code/kaptcha/util/Config.java 中的默认设置。当然,您可以将 DefaultTextCreator 的使用(默认情况下甚至只使用字母 abcde2345678gfynmnpwx)替换为您想要的任何字符串。
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Properties;
    import javax.imageio.ImageIO;
    
    import com.google.code.kaptcha.util.Config;
    import com.google.code.kaptcha.impl.DefaultKaptcha;
    import com.google.code.kaptcha.text.impl.DefaultTextCreator;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            Properties properties = new Properties();
            Config config = new Config(properties);
            
            DefaultKaptcha kaptcha = new DefaultKaptcha();
            kaptcha.setConfig(config);
            DefaultTextCreator textCreator = new DefaultTextCreator();
            textCreator.setConfig(config);
            
            BufferedImage image = kaptcha.createImage(textCreator.getText());
            
            File output = new File("out.jpg");
            ImageIO.write(image, "jpg", output);
        }
    }
    
    1. 使用以下两个 shell 命令运行此 Java 代码:
    javac -cp kaptcha-2.3.2.jar Main.java
    java -cp kaptcha-2.3.2.jar:. Main
    
    1. 您将获得的输出 JPG 将如下所示:

    1. 要更改配置,请在Main.java 的顶部添加行import com.google.code.kaptcha.Constants;,然后,例如,在创建Config 对象之前添加命令properties.setProperty(Constants.KAPTCHA_BORDER, "no");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多