Pillow写的验证码你能给打几分(python3-flask)
网站的验证码的作为防机器人的其中一个手段,这里就不做叙述了。
直接进入主题:
制作验证码目的:防机器人、防采集、防破解
编程语言环境:python3.X,flask
使用库:Pillow
说明:按照数字顺序输入验证码文字,发挥想象如何改成自己想要的验证码样式,有错误的、有改善建议的、或者其他意见想法的,欢迎下方评论留言哦!
生成的验证码图式:
具体代码(来自flask的视图):
#验证码
@app.route('/e/view/',methods=['POST','GET'])
def view():
# 判断是否登录
if flask.session.get('is_login') != True:
return flask.redirect(flask.url_for('login'))
#验证码文字
data = ['昆','山','苏','州','江','苏','安','徽','吴','淞','江','南','路','茂','轩','产','业','园','柏','庐','南','路','枫','景','苑','程','之','沐','每','当','我','追','溯','自','己','的','青','春','年','华','时','那','些','子','就','像','是','暴','风','雪','晨','的','色','雪','花','样','被','疾','风','吹','得','离','我','而','去',]
datastr = []
ganraostr = []
#随机得到5个汉字,作为验证码验证
for x in range(5):
datasuiji = random.randint(0,len(data)-1)
# print(datasuiji)
datastr.append(data[datasuiji])
print(datastr)
#验证码图像宽度
width = 40 * 5
#验证码高度
height = 90
mode = 'RGB'
size = (width, height)
color = "rgb(255, 255, 255)"
img = PIL.Image.new(mode, size, color) # 生成画布
font = PIL.ImageFont.truetype(font='msyh.ttf', size=18) # 设置字体
draw = PIL.ImageDraw.Draw(img) # 创建画笔
i = 0
# fontcolor =
for x in datastr:
draw.text((35 * i + random.randint(0,15), random.randint(10,60)), str(i)+':'+x, font=font, fill=(random.randint(5,200),random.randint(5,200),random.randint(5,200)))
draw.line([(random.randint(0,200), random.randint(0,90)), (random.randint(0,200), random.randint(0,90))], fill=(random.randint(0,255), random.randint(0,255), random.randint(0,255)), width=1)
draw.text((40 * i + random.randint(5,15), random.randint(5,80)), data[random.randint(0, len(data) - 1)], font=font, fill=(255,0,random.randint(0,50)))
i+=1
draw.line([(10,80),(150,50)],fill=(0, 0, 0),width=1)
# img.show()
#网页调用使用了:缓冲流(使用内存中字节缓冲区的流实现)
mio = io.BytesIO()
img.save(mio,'jpeg')
imgstr = mio.getvalue()
mio.close()
# print(imgstr)
mresponse = flask.make_response(imgstr)
mresponse.headers['Content-Type'] = 'image/gif'
mresponse.set_cookie('name', func.setcook())
mresponse.set_cookie('viewkey',''.join(datastr))
return mresponse
TAGS:pillow , python , flask , 验证码
来自Davids zhou博客原创文章请尊重作者:http://www.zongk.com/zongk/122.html转载请标注此链接
Davids zhou | 站点地图 | | | 皖ICP备14017762号 如有侵犯您权利点击上面QQ -Powered By 帝国CMS -davids.zhou#qq.com(#换@)
Davidszhou个人博客主要记录在网站建设、SEO优化、python开发、PHP开发中遇到问题记录保存,作为他人参考学习教程