python3制作生成汉字随机验证码你能给打几分?(python3-flask)

作者:Davidszhou   来源:SEO优化博客   时间:2018-02-05 15:24:47   点击:

Pillow写的验证码你能给打几分(python3-flask)

网站的验证码的作为防机器人的其中一个手段,这里就不做叙述了。

直接进入主题:

制作验证码目的:防机器人、防采集、防破解

编程语言环境:python3.X,flask

使用库:Pillow

说明:按照数字顺序输入验证码文字,发挥想象如何改成自己想要的验证码样式,有错误的、有改善建议的、或者其他意见想法的,欢迎下方评论留言哦!

生成的验证码图式:

Pillow写的验证码你能给打几分(python3-flask)

具体代码(来自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转载请标注此链接

七日热点
热力推荐
网站统计
文章总数:138
今天发布:0
软件资源数:20