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 相关文章推荐
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
django站点管理详解
Dec 12 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
Python之列表实现栈的工作功能
Jan 28 Python
python动态进度条的实现代码
Jul 03 Python
python:按行读入,排序然后输出的方法
Jul 20 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
使用Django实现商城验证码模块的方法
Jun 01 Python
Python pyecharts绘制条形图详解
Apr 02 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
用文本文件制作留言板提示(下)
2006/10/09 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jquery获取节点名称
2015/04/26 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
JS二分查找算法详解
2017/11/01 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
全面了解python字符串和字典
2016/07/07 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python 读取DICOM头文件的实例
2018/05/07 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python对象与json相互转换的方法
2019/05/07 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
团日活动总结
2014/04/28 职场文书
副处级干部考察材料
2014/05/17 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
财务部岗位职责
2015/02/03 职场文书
2015教师年度考核评语
2015/03/25 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
2016年清明节寄语
2015/12/04 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书