验证码破解没有训练集?我教你生成一万个!

前言

对于验证码破解,我在去年写过一篇文章我深度学习0基础,还训练出一个识别验证码模型!,并且把代码放在GitHub上,GitHub地址大家就直接访问前面那篇文章就知道了。最近有些GitHub上过来的小伙伴问我各种各样的问题,其中有一个就是如何生成训练所需要的数据集,这里也就是指验证码。

第一想到的就是通过一些类库生成与需要破解的验证码类似的数量级,当然这会花费你一定的时间。今天我给大家推荐一个python生成验证码的第三方库,并且我们来生成自己的数据集。


captcha

下载:


pip install captcha


如何生成验证码呢?我直接给大家上代码:


from captcha.image import ImageCaptcha
import random
list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
# 定义验证码尺寸
width, height = 170, 80
#生成一万张验证码
for i in range(10000):
    generator = ImageCaptcha(width=width, height=height)
    # 从list中取出4个字符
    random_str = ''.join([random.choice(list) for j in range(4)])
    # 生成验证码
    img = generator.generate_image(random_str)
    # 在验证码上加干扰点
    generator.create_noise_dots(img, '#000000', 4, 40)
    # 在验证码上加干扰线
    generator.create_noise_curve(img, '#000000')
    # 将图片保存在目录yzm文件夹下
    file_name = './yzm/'+random_str+'_'+str(i)+'.jpg'
    img.save(file_name)


关于每一句代码的意思,我都写在注释里了,所以这里不会过多的阐述。不过上面的ImageCaptcha还可以定义一些参数:


验证码破解没有训练集?我教你生成一万个!


从源码中我们可以看到还可以定义字体、字体大小,当然这个根据你所要破解的验证码来决定。最后大家看下我生成的验证码照片:


验证码破解没有训练集?我教你生成一万个!


验证码破解没有训练集?我教你生成一万个!


总结

其实大家可以发现python的这个库并没有想象的那么强大,这里我要给大家推荐另一个库,只不过它不是python的,而是Java的,它所能设置的参数更加的详细。如果本文超过20在看,下篇文章我将详细的给大家介绍。有关于验证码训练的教程,看我我深度学习0基础,还训练出一个识别验证码模型!这篇文章。

上一篇:一分钟学Python| Python的字符串类型


下一篇:一分钟学Python| 注释、标识符和关键字