首页 > 编程知识 正文

python图形验证码识别,文字图片验证码怎么输入才正确

时间:2023-05-06 06:36:52 阅读:151674 作者:1089

在日常生活中可以看到,网站和APP一般需要用户注册登录,获取用户的登录信息。 登录页不仅需要输入正确的用户名和密码,还需要输入验证码。 验证码包括图像验证码、文字验证码、数字验证码等,触发方式中输入、移动、点击、滑动等层出不穷。 只有正确输入了用户名、密码和认证码时,登录才会成功。

那么,如何生成随机不同认证码的图像,如何验证用户输入的认证码是否正确,具体步骤如下图所示。

一、流程图:

二、登录界面:

三、代码实践:

#-- coding : utf-8--“' @ author : zsw @ file : index.py @ time :2020/12/18 ' ' fromflaskimportfrom from jmN]LWX/RT'#获取授权码图像@app.route((/index ),methods=['GET'] ) def get_captchainfo ) 3360 RES=get _ 360 indent=4) #验证用户输入的认证码@app.route(/verify ), methods=['post'] (defget _ verify (: RES=get _ captcha ).get_verify_info ) returnJson.dumps ) returnJson.dumps ) return in 端口=5058, threaded=true ((*-- coding : utf-8-- * ' @ author : zsw @ file : get _ captcha.py @ time 33602020/12 requestfromgenerate _ image _ verify _ code.captcha _ handleimportcreate _ captchafromioimportbytesioimportbase 64 # base code保存在由sessionclassget _ captcha (: def generate _ verify _ code ) self ) : #生成的认证码图像和认证码中,返回认证码图像,以格式返回到ssid 获取验证码图像和验证码session['code']=code #并将code保存到session的#print(session['code'] ' ) ) img.save(f 'PNG ' ) # # 打印(f.getvalue ) )图像被转换为二进制流img _ stream=base64.b 64编码(f.getvalue ) ) ' data ' : img _ stream ' exceptexceptionase : return { ' code ' :' message':返回验证码图像错误', ' reason ' : e } # defget _ verify _ info (self ) : try : post _ data=request.JSON verify _ core==verify _ code : return { ' code ' :' message': '授权码输入成功' } else 3360 return { ' code ' ' message '

#-- coding 3360 utf-8-- ' ' @ author : zsw @ file : captcha _ handle.py @ time 33602020/12/18 ' ' im pood image fong 以下为小写数字ran=string.ascii _ lower case string.digits char=' ' foriinrange (4) :char=Random.choice(Ran ) return coreturn ce )的随机RGB颜色def _ getrandom color (: return (random.randint ) 50、150 )、random.randint、150 ), random.random ) 150 ) defcreate_captcha(: )图像创建、模式、大小、背景色img=image.new(RGB )、120、30 )、255 255 ) )创建画布draw=imagedraw.draw(img ) )字体font=imagefont.truetype设置(d:(fonts(msyhbd.TTF ), 25 ) code=_getrandomchar(#将生成的字符绘制在画布上的for t in range(4)4) : draw.text ((30 * t5,0 )、code[t]、_ getrated 80 ) )位置、颜色draw.point ) ) ) random.randint (0,120 )、randoot ) )的fill=_getrandomcolor(#使用模糊滤镜模糊图像#img=img.filter ) imagefilter.blur ) #img.save )./picture/' .保存

四.验证测试:获取验证码图片和验证码:

你可以把base64代码转换成图像看验证码。 https://oktools.net/image2base64

图中的认证码是cdov。

然后访问验证用户输入的认证码的界面。 如果用户输入" cdov ",则验证码输入成功

{ 'verify_code':'cdov'}

用户输入" cd0v "时,验证码输入错误

{ 'verify_code':'cd0v'}

如果重新获取了验证码图像,请重复上述步骤。

参考链接: http://www.calmkart.com/p=332

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。