想必很多人是见过的,大名鼎鼎的Google Kaptcha,网上有许多此类验证码的变种,如图1、图2、图3等等。根据参数不同,千变万化,而验证码识别的首要困难是训练集,大多数公司是不愿意在训练上面花钱打码的,那么生成算法有了,是否可以生成无限的参数,无限的训练集呢,最后一举攻破Kaptcha所有的变种,当然这是可以实现的,Kaptcha训练集批量生成工具,笔者也只能帮你们到这里了。
图1
图2
图3
为了方便,在下封装了Kaptcha,只要两个参数,便可批量生成训练集:
输出路径
输出数目
java -jar kaptcha.jar 输出路径 输出数目
如图4所示:
图4
结果如下:
图5
是不是很方便呢,那么又如何配置其变化呢,这里祭出配置文件样例:captcha.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"><properties> <comment>Temporary Properties</comment> <!-- 图片边框,合法值yes,no,默认值yes --> <entry key="kaptcha.border">no</entry> <!-- 边框颜色,合法值rgb(and optional alpha)或者 white,black,blue,默认值black --> <entry key="kaptcha.border.color">blue</entry> <!-- 边框厚度,合法值>0,默认值为1 --> <entry key="kaptcha.border.thickness">2</entry> <!-- 图片宽度,默认值200 --> <entry key="kaptcha.image.width">200</entry> <!-- 图片高度,默认值50 --> <entry key="kaptcha.image.height">50</entry> <!-- 图片实现类,默认值priv.kerlomz.kaptcha.impl.DefaultKaptcha --> <entry key="kaptcha.producer.impl">priv.kerlomz.kaptcha.impl.DefaultKaptcha</entry> <!-- 文本实现类,默认值priv.kerlomz.kaptcha.impl.DefaultTextCreator --> <entry key="kaptcha.textproducer.impl">priv.kerlomz.kaptcha.text.impl.DefaultTextCreator</entry> <!-- 文本集合,验证码值从此集合中获取,默认值abcde2345678gfynmnpwx --> <entry key="kaptcha.textproducer.char.string">abcde2345678gfynmnpwx</entry> <!-- 验证码长度,默认值为5 --> <entry key="kaptcha.textproducer.char.length">5</entry> <!-- 字体,默认值Arial, Courier(如果使用中文验证码,则必须使用中文的字体,否则出现乱码) --> <entry key="kaptcha.textproducer.font.names">Arial</entry> <!-- 字体大小,默认值为40px --> <entry key="kaptcha.textproducer.font.size">40</entry> <!-- 字体颜色,合法值: r,g,b 或者 white,black,blue,默认值black --> <entry key="kaptcha.textproducer.font.color">black</entry> <!-- 文字间隔,默认值为2 --> <entry key="kaptcha.textproducer.char.space">2</entry> <!-- 干扰实现类,默认值priv.kerlomz.kaptcha.impl.DefaultNoise --> <entry key="kaptcha.noise.impl">priv.kerlomz.kaptcha.impl.DefaultNoise</entry> <!-- 干扰 颜色,合法值: r,g,b 或者 white,black,blue,默认值black --> <entry key="kaptcha.noise.color">black</entry> <!-- 图片样式: 水纹 priv.kerlomz.kaptcha.impl.WaterRipple 鱼眼 priv.kerlomz.kaptcha.impl.FishEyeGimpy 阴影 priv.kerlomz.kaptcha.impl.ShadowGimpy, 默认值水纹 --> <entry key="kaptcha.obscurificator.impl">priv.kerlomz.kaptcha.impl.WaterRipple</entry> <!-- 背景实现类,默认值priv.kerlomz.kaptcha.impl.DefaultBackground --> <entry key="kaptcha.background.impl">priv.kerlomz.kaptcha.impl.DefaultBackground</entry> <!-- 背景颜色渐变,开始颜色,默认值lightGray/192,193,193 --> <entry key="kaptcha.background.clear.from">255,255,255</entry> <!-- 背景颜色渐变, 结束颜色,默认值white --> <entry key="kaptcha.background.clear.to">white</entry> <!-- 文字渲染器,默认值priv.kerlomz.kaptcha.text.impl.DefaultWordRenderer --> <entry key="kaptcha.word.impl">priv.kerlomz.kaptcha.text.impl.DefaultWordRenderer</entry></properties>
作者:_Coriander
链接:https://www.jianshu.com/p/373845befaf0
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦