图片验证码之中英文数字混合输入验证的综合应用(python3.X)

中文验证码生成的案例点击查看
数字英文验证码生成的案例点击查看
这篇用之前学的内容分别生成四位由数字、英文大写字母、英文小写字母和中文汉字随机排列的字符串验证码,使验证码更具其合理性
新增加内容有:
1.pip install captcha 安装验证码的库
2.from captcha.image import ImageCaptcha导入图片验证码
3.map()方法

from captcha.image import ImageCaptcha
import random
import string

def genghuan():  #定义方法用来调用
    global str2  #global定义一个全局变量
    str1=""
    d = string.digits #0-9的数字
    lc = string.ascii_lowercase #小写a-z的英文字母
    uc = string.ascii_uppercase #大写A-Z的英文字母
    quhao = random.randint(0xb0, 0xd7) 
    weihao = random.randint(0xa1, 0xfe)
    val = format(quhao,'x')+format(weihao,'x')
    str1 = str1+bytes.fromhex(val).decode('gb2312')
    str2 = random.choice(d)+random.choice(lc)+random.choice(uc)+str1
    str2 = list(map(str,str2)) #map()函数把对象转成字符串映射到列表里
    random.shuffle(str2) #列表乱序排列
    str2 = ''.join(str2) #以''分隔输出列表元素
    print("输出验证码:"+str2+"\n")

    image = ImageCaptcha(fonts=["simsun.ttc","simfang.ttf"],font_sizes=[60]) # 默认字体不能正常显示中文,需改成中文字体,列表中可添加多个
    #width: 生成验证码图片的宽度,默认为160个像素
    #height: 生成验证码图片的高度,默认为60个像素
    image.write(str2,"验证码测试图片.jpg") #第二个参数设置的路径路径默认和py文件
    
genghuan()
while True:
    a = input("请输入您看到的验证码:")
    if a.lower() ==str2.lower(): #验证码字符的英文字母转换成小写
        print("恭喜!验证通过")
        break
    else:
        x= input("\n验证不通过,直接回车后重新输入......\n是否更换验证码Y/N:")
        if x.lower()=="y":
            genghuan()
            continue
        else:
            continue

第一次输错后刷新验证码重新输入,运行结果如下:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51424938/article/details/111300625