暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python自动化识别登录验证码

IT那活儿 2024-04-26
2506

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!    


Python+selenium实现自动化登录过程中,经常会遇到输入图片验证码的问题,需要实时识别图片验证码,本例总结了两种识别验证码的方法:
  • 一种是通过图片转文字需要用到OCR(Optical Character Recognition,光学字符识别)技术,python通过第三方库pytesseract来实现;
  • 一种是借助第三方识别平台识别。



通过OCR识别

通过OCR来识别图片验证码的流程步骤为:
  • 1)进入登录页面,截屏有验证码的页面,保存登录页面图片到本地;
  • 2)在登录页面中,获取验证码所在登录页面的位置;
  • 3)打开保存在本地的登录页面图片,通过获取的验证码位置,截取到只有验证码的图片,并保存验证码图片;
  • 4)本地打开验证码图片,通过OCR识别出验证码;
  • 5)将识别出来的验证码输入到登录页面。

1.1 环境准备

1.1.1 自动化环境准备
1)python安装的是v3.10
2)pip install selenium安装selenium包
3)根据实际需求下载Chrome/firefox/edge浏览器驱动,放入python安装目录下
1.1.2 OCR包安装
1)tesseract下载安装
  • 图片转文字识别本质还是利用OCR技术,本例选用开源OCR工具tesseract来实现图片转换文字,所以要先安装tesseract。
    官方下载地址:https://github.com/UB-Mannheim/tesseract/wiki
  • 下载后双击.exe安装软件正常安装就可以,安装过程中勾选Additional language data(download)选项支持识别的语言包。
  • 下载完成后,配置环境变量,在path里面添加Tesseract-OCR的安装目录,如E:\tools\tesseract-ocr\tesseract。
  • 打开命令行端口,输入tesseract -v,验证是否安装成功,如下:
附:查看可支持语言:tesseract --list-langs
2)pytesseract下载安装
  • pytesseract安装,命令行端口,pip install pytesseract
  • pillow安装,pip install pillow
  • 进入pytesseract插件安装目录,打开pytesseract.py,修改tesseract_cmd为实际安装tesseract的地址,如下:

注意:不要漏掉r。

  • 打开pycharm,就可以导入pytesseract使用了,如下:
注:如果导入失败,查看pycharm使用的解释器,更换解释器,使用系统Python解释器,打开Pycharm->File->Settings->Project Interpreter->设置为你的python路径。

1.2 截屏保存本地

1)启动浏览器,访问登录页面
2)截屏登录页面,保存到本地

1.3 保存验证码图片

1)获取验证码图片位置,在登录页面,获取验证码图片所在整个登录页面的坐标位置x0、y0、x1、y1
2)根据坐标,用Image.crop()方法对图片进行切割
3)切割后的验证码图片保存到本地

1.4 识别验证码

1)处理验证码图片
有的验证码比较模糊,或者背景有线条之类的干扰,为了提高图片识别率,在正式识别验证码之前,可以先处理验证码图片,让验证码更清晰识别前后,对比:
2)读取验证码图片,用OCR识别图片验证码

之后将识别的验证码填入登录页面的验证码框中即可。


第三方平台识别

通过第三方平台识别图片验证码的流程步骤为:
  • 1)选择一个第三方识别图片验证码的平台,如本例选择的是百度AI开放平台
  • 2)平台中一般都有详细的文档说明,参考文档步骤调用平台接口
  • 3)根据平台提供的AK、SK值(收费平台的话会收费才能获取),url和请求报文,获取access_token
  • 4)根据获取到的access_token,平台提供的请求url、请求方法、header、body参数,对平台发起url请求,返回的的结果里就有识别到的验证码
注1:
OCR识别验证码,会出现验证码识别率低的问题,当验证码图片不清晰、乱码多、或验证码不是打印数字字母等,就算处理过的验证码图片,也会导致验证码识别失败。
注2:
用第三方平台识别验证码,普通免费验证码识别,也会出现识别错误的问题,只能用付费版本。

END


本文作者:杜俊芝(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论