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从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python列表的常用操作方法小结
May 21 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
Python版名片管理系统
Nov 30 Python
python设置环境变量的作用整理
Feb 17 Python
Python换行与不换行的输出实例
Feb 19 Python
TensorFlow2.1.0最新版本安装详细教程
Apr 08 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
Python实现微信表情包炸群功能
Jan 28 Python
python异步的ASGI与Fast Api实现
Jul 16 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
用PHP实现文件上传二法
2006/10/09 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
CI框架附属类用法分析
2018/12/26 PHP
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
分分钟入门python语言
2018/03/20 Python
Python走楼梯问题解决方法示例
2018/07/25 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
Python中的With语句的使用及原理
2020/07/29 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
电气工程自动化求职信
2014/03/14 职场文书
受伤赔偿协议书
2014/09/24 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
教师个人考察材料
2014/12/16 职场文书
教师个人教学总结
2015/02/11 职场文书
捐款通知怎么写
2015/04/24 职场文书
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技
nginx容器方式反向代理实战
2022/04/18 Servers