不得不说这个验证码生成库,牛逼了!

简介: 不得不说这个验证码生成库,牛逼了!

前言

很高兴上篇文章验证码破解没有训练集?我教你生成一万个!的在看数有26个了,非常感谢大家的支持。那么既然在看数够了,我也来兑现承诺了。这篇文章讲的是Java中一个生成验证码的第三方库kaptcha。其实这个库在网上的资料也比较多,但是我看了下,都是结合在web开发当中的,可能有些小伙伴只需要生成验证码并保存成图片格式,所以这篇文章的主要目的也就是通过这个库来生成我们的验证码数据集。


kaptcha

1.导包

既然是Java开发的,我们第一步就是导包。

https://mvnrepository.com/artifact/com.github.penggle/kaptcha/2.3.2

这里我给大家jar包的下载地址,当然你也可以使用maven来下载,此处我是直接使用maven下载的。


1.jpg


maven代码:


<dependency>
    <groupId>com.github.penggle</groupId>
    <artifactId>kaptcha</artifactId>
    <version>2.3.2</version>
</dependency>


2.代码

由于很多小伙伴可能对Java开发不太熟悉,所以这里我不会讲解我是如何去写这些代码的,当然我会把每一句代码的含义告诉大家,不慌。


import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
/**
 * @author kuls
 * @Desc 公众号:Python进击者
 * @date 2020/4/24 7:55 上午
 */
public class demo1 {
public static void main(String[] args) throws IOException {
  DefaultKaptcha dk = new DefaultKaptcha();
  Properties properties = new Properties();
  // 图片边框
  properties.setProperty("kaptcha.border", "yes");
  // 边框颜色
  properties.setProperty("kaptcha.border.color", "105,179,90");
  // 字体颜色
  properties.setProperty("kaptcha.textproducer.font.color", "red");
  // 图片宽
  properties.setProperty("kaptcha.image.width", "110");
  // 图片高
  properties.setProperty("kaptcha.image.height", "40");
  // 字体大小
  properties.setProperty("kaptcha.textproducer.font.size", "30");
  // session key
  properties.setProperty("kaptcha.session.key", "code");
  // 验证码长度
  properties.setProperty("kaptcha.textproducer.char.length", "4");
  // 字体
  properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
  //加鱼眼效果
  properties.setProperty("kaptcha.obscurificator.impl","com.google.code.kaptcha.impl.FishEyeGimpy");
  //加水纹效果
  properties.setProperty("kaptcha.obscurificator.impl","com.google.code.kaptcha.impl.WaterRipple");
  //加阴影效果
  properties.setProperty("kaptcha.obscurificator.impl","com.google.code.kaptcha.impl.ShadowGimpy");
  //配置
  Config config = new Config(properties);
  //将配置信息放入DefaultKaptcha
  dk.setConfig(config);
  for (int i = 0;i < 10000;i++){
      //创建验证码中的文字
      String text = dk.createText();
      //根据文字创建一张验证码
      BufferedImage image = dk.createImage(text);
      //将BufferedImage转为图片
      ImageIO.write(image,"jpg",new File("./yzm/"+text+"_"+i+".jpg"));
  }
}
}


上述代码直接拿来使用就行,前提是确定导包成功

关于kaptcha的其他参数,其实大部分需要使用的参数都在我的代码中使用过了。


2.jpg


生成的效果:

鱼眼:


3.jpg


水纹:


4.jpg


阴影:


5.jpg


大部分的网站使用到的都是kaptcha生成的验证码,所以我们可以利用所生成的库反向生成并且训练成模型,就能够轻易突破了。

有关于如何训练模型,请参考这篇文章我深度学习0基础,还训练出一个识别验证码模型!


总结

对于这种输入字母数字的破解思路,就是找到它所生成验证码的库是哪种,当然有一些网站是自己画出来的,我们也可以仿照它的模式去画出来。学会画验证码,肯定比使用这些库生成的验证码更加的安全,我们自己开发网站的时候,也可以尝试自己取画验证码。如果本文破30在看,我会写一篇如何自己画属于自己的验证码。

相关文章
|
12月前
|
安全 机器人 PHP
在线行为验证码推荐
想要保护您的网站免受恶意攻击?不妨考虑一款免费行为验证插件。该插件基于用户的行为模式进行验证,可有效区分真实用户和机器人。其中,滑动拼图是一种常见的在线行为验证方式,能够增加验证的难度,提高网站的安全性。通过使用这款免费插件,您可以为您的网站添加一道可靠的安全防线。
|
安全 UED
行为验证码验证类型的讲解
最近在开发行为验证码,经常触及到关于验证类型的相关内容。但使用起来不太熟练,闲暇之余,总结一下我对行为验证码验证类型的理解。
行为验证码验证类型的讲解
|
安全 前端开发 定位技术
推荐一个非常好的行为验证码项目!
KgCaptcha 结合了设备指纹、行为特征、访问频率、地理位置等多项技术,有效的拦截恶意登录、批量注册,阻断机器操作,拦截非正常用户。较传统验证码相比,用户无需再经过思考或输入操作,只需轻轻一滑即可进行验证。
推荐一个非常好的行为验证码项目!
|
文字识别 C++ Python
pycharml利用ddddocr和selenium识别验证码并登录
1OCR 2 ddddocr 3使用案例 4 常见问题 代码详情 获得XPATH方法
256 0
|
安全 数据安全/隐私保护 Python
Python应用之验证码验证
用户登录网站经常需要输入验证码,验证码包含大小写字母和数字,随机出现。用户输入验证码时不区分大小写,只要各字符出现顺序正确即可通过验证。   请写一个程序完成验证码的匹配验证,随机生成四位数的验证码如Qs2X(生成数字概率为1/5,大写字母和小写字母概率各为2/5) 如果用户输入验证码正确,输出“验证码正确”,输入错误时输出“验证码错误,请重新输入”,再重新生成验证码让用户输入,输入五次错误时输出“您已用光了验证机会”。
670 0
|
Java Spring
网站验证码的设计与实现
网站验证码的设计与实现
|
JavaScript Java
实现登录时进行校验验证码的功能
JavaEE中,实现登录时进行校验验证码的功能(图文并茂!!!)
实现登录时进行校验验证码的功能
|
前端开发 PHP
Laravel8 使用图形验证码做登录
一、 安装扩展包 composer require gregwar/captcha
|
PHP
laravel怎么加入验证码功能
laravel怎么加入验证码功能
151 0
laravel怎么加入验证码功能
|
JavaScript 前端开发
简单的验证码功能
简单的验证码功能
简单的验证码功能