python3定位并识别图片验证码实现自动登录功能


Posted in Python onJanuary 29, 2021

会用到的库的

1、selenium的webdriver
2、tesserocr或者pytesseract进行图像识别
3、pillow的Image进行图片处理

from selenium import webdriver
import tesserocr
from PIL import Image

tesserocr的安装.

获取验证码图片方法1:

def get_code_image(file_name):
 driver.save_screenshot(file_name) # 截取整个屏幕并保存
 code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到验证码元素
 left = code_element.location['x'] # 定位到截图位置
 top = code_element.location['y']
 right = code_element.size['width'] + left
 bottom = code_element.size['height'] + top
 im = Image.open(file_name) # 从文件读取截图,截取验证码位置再次保存
 img = im.crop((left, top, right, bottom))
 img.save(file_name)
 return file_name

获取验证码图片方法2:

def get_code_image(file_name):
 code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到验证码元素 
 code_element.screenshot(file_name)

注:此方法截图时屏幕会闪动,可能引发bug,如下图,目前没有解决

python3定位并识别图片验证码实现自动登录功能

处理验证码图片

def deal_code_image(file_name):
 image = Image.open(file_name)
 # image.show() #查看处理前的图片
	# 处理图片去除干扰
 # 将图片转化为灰度图像
 image = image.convert('L')
 
 threshold = 90 # 设置临界值,临界值可调试
 table = []
 for i in range(256):
  if i < threshold:
   table.append(0)
  else:
   table.append(1)

 image = image.point(table, '1')
 # image.show() #查看处理后的图片
 # 1:使用tesseract库识别图片中的验证码
 # res = tesserocr.image_to_text(image)
 # 2:使用pytesseract库识别图片中的验证码
 res = pytesseract.image_to_string(image)

 # print(res) #查看识别出来的文案
 res = res.replace(" ", "") #去除结果中的空格
 return res

处理前的图片,有干扰,无法识别

python3定位并识别图片验证码实现自动登录功能

处理后的图片,基本可以识别

python3定位并识别图片验证码实现自动登录功能

识别结果不一定准确,如果验证码输入错误,可以点击换一张图片再次识别,多次尝试,本次不做说明

到此这篇关于python3定位并识别图片验证码实现自动登录的文章就介绍到这了,更多相关python识别图片验证码实现自动登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python装饰器深入学习
Apr 06 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
python将txt文件读入为np.array的方法
Oct 30 Python
python程序控制NAO机器人行走
Apr 29 Python
django连接oracle时setting 配置方法
Aug 29 Python
深入了解Python在HDA中的应用
Sep 05 Python
python3实现弹弹球小游戏
Nov 25 Python
Python定义函数实现累计求和操作
May 03 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
Jun 30 Python
Python 可视化神器Plotly详解
Dec 26 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
python装饰器代码解析
Mar 23 Python
python中numpy数组与list相互转换实例方法
Jan 29 #Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 #Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 #Python
python中spy++的使用超详细教程
Jan 29 #Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 #Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 #Python
如何用python开发Zeroc Ice应用
Jan 29 #Python
You might like
消息持续发送的完整例子
2006/10/09 PHP
社区(php&amp;&amp;mysql)二
2006/10/09 PHP
在PHP中使用灵巧的体系结构
2006/10/09 PHP
ThinkPHP采用模块和操作分析
2011/04/18 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
js的对象与函数详解
2019/01/21 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python实现句子翻译功能
2017/11/14 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
活动志愿者自荐信
2014/01/27 职场文书
药品采购员岗位职责
2014/02/08 职场文书
2015年春节标语口号
2014/12/09 职场文书
致运动员赞词
2015/07/22 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers