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

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

前言

很高兴上篇文章验证码破解没有训练集?我教你生成一万个!的在看数有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在看,我会写一篇如何自己画属于自己的验证码。

相关文章
|
4月前
|
前端开发 PHP
ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则
本文介绍了在ThinkPHP框架中使用验证码扩展库的方法,包括安装验证码扩展库、在页面中使用验证码、自定义验证码配置以及校验验证码的步骤和代码示例。
ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则
|
UED
对读取短信验证码封装库的思考
在我的目前阶段,许多开源项目的产生都是直接来源于项目本身的需求,比如这次要讲的读取短信验证码的封装库。 项目目前挂在 github 上的公司组织下,地址为:https://github.com/parkingwang/sms-captcha。
2150 0
|
Python Windows 文字识别
python中的验证码识别库PyTesser
PyTesser PyTesser is an Optical Character Recognition module for Python. It takes as input an image or image file and outputs a string.
1028 0
|
8月前
|
前端开发 安全 Java
SpringBoot 实现登录验证码(附集成SpringSecurity)
SpringBoot 实现登录验证码(附集成SpringSecurity)
466 0
|
5月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
18天前
|
安全 算法 机器人
双重防护!红娘相亲app搭建开发,婚恋交友系统登录方式,密码+验证码的优势
在婚恋交友系统中,密码和验证码是两种重要的安全措施。密码用于验证用户身份,应设置为复杂组合以防止未经授权的访问;验证码则通过图形或字符识别,防止自动化攻击如暴力破解和注册机器人。两者同时开启可显著提高安全性,防止暴力破解和自动化注册,提升用户信任感。建议要求强密码、定期更新验证码样式,并在可疑登录时增加验证码复杂性。这样既能保障用户信息安全,又兼顾了用户体验。 ![交友11111.jpg](https://ucc.alicdn.com/pic/developer-ecology/hy2p6wcvgk4oe_c9eb8d6eb8144866b0cd1d96ffb0c907.jpg)
|
3月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
40 1
|
3月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
121 2
|
5月前
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录
|
4月前
|
存储 JSON 前端开发
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
87 0
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘