中文验证码生成的案例点击查看
数字英文验证码生成的案例点击查看
这篇用之前学的内容分别生成四位由数字、英文大写字母、英文小写字母和中文汉字随机排列的字符串验证码,使验证码更具其合理性
新增加内容有:
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
第一次输错后刷新验证码重新输入,运行结果如下: