使用selesium和pytesseract识别验证码,达到登录网页目的
关于验证码问题,大多可以在网上了解到目前有四种解决方案:
1、开发注释验证码
2、开发开一个“后门”,设置一个万能码,输入万能码则通过
3、通过cookies绕过验证码
4、图形识别技术 前三种是比较快速也是比较简单的,如果条件允许或者跟开发沟通得当,尽量用前三种 下面来说一下本文的重点也就是第四种方法,我们采用selesium自动化工具和pytesseract模块在前端来实现(也可以在爬虫实现,用requests,urllib等,主要就是pytesseract的图形识别技术) 首先pytesseract依赖PIL、Tesseract
所以请先下好,PIL是python的图像处理库,Tesseract是谷爹的OCR识别引擎,关于PIL和Tesseract资料有很多,如果感兴趣,请自行百度了解,这里不再赘述。
当以上东西都安装好后,最后再执行pip install pytesseract安装我们的主力pytesseract
下面直接上代码,我是用自己公司的页面来进行测试的:
# /usr/bin/python
# coding=utf-8 import pytesseract
from PIL import Image
from selenium import webdriver
import time def getcode(imgurl):
"""识别图片"""
image = Image.open(imgurl)
vcode = pytesseract.image_to_string(image)
return vcode def imgprocess(imgurl):
"""截图处理"""
img = Image.open(imgurl)
region = (516, 373, 614, 422)
cropImg = img.crop(region) # 切割图片
cropImg.save(imgurl) chromepath = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'
browser = webdriver.Chrome(chromepath)
browser.get('http://192.168.6.52:8090/')
time.sleep(2) # 等待验证码加载完成
temp_img = 'C:\Users\YangQ\Desktop\getImg.png' # 图片存放位置
browser.get_screenshot_as_file(temp_img) # 截图
imgprocess(temp_img)
code = getcode(temp_img)
browser.find_element_by_name("authCode").send_keys(code)
解释一下,因为session关系,目前我想到的方法就是通过selesium截屏来抠出验证码进行分析识别。如果有更好的方法,以后我会更新

可以看到当程序执行后,成功识别到验证码并填写正确。
使用selesium和pytesseract识别验证码,达到登录网页目的的更多相关文章
- Selenium+Tesseract-OCR智能识别验证码爬取网页数据
1.项目需求描述 通过订单号获取某系统内订单的详细数据,不需要账号密码的登录验证,但有图片验证码的动态识别,将获取到的数据存到数据库. 2.整体思路 1.通过Selenium技术,无窗口模式打开浏览器 ...
- C#使用tesseract3.02识别验证码模拟登录
一.前言 使用tesseract3.02识别有验证码的网站 安装tesseract3.02 在VS nuget 搜索Tesseract即可. 二.项目结构图 三.项目主要代码 using System ...
- 用pytesseract识别验证码报错
运行py文件出现下面报错 pytesseract.pytesseract.TesseractError: (1, 'Error opening data file \\Program Files\\T ...
- 使用pytesseract识别验证码,报错WindowsError: [Error 2]
问题现象: 按照网上的方式进行代码编写,使用pytesseract模块,然后导入指定图片进行解析,报错WindowsError: [Error 2] 问题原因: 源代码里面的路径设置错误,这里有一个坑 ...
- C#使用tesseract3.02识别验证码模拟登录(转)
转自http://www.cnblogs.com/JinJi-Jary/p/5625414.html
- Python之selenium+pytesseract 实现识别验证码自动化登录脚本
今天写自己的爆破靶场WP时候,遇到有验证码的网站除了使用pkav的工具我们同样可以通过py强大的第三方库来实现识别验证码+后台登录爆破,这里做个笔记~~~ 0x01关于selenium seleniu ...
- qtp识别验证码
花了两天时间才完整的完成识别验证码的登录操作,在网上看到很多关于验证码识别的方法,但是我用的qtp版本比较高级,所以还是要自己花心思研究.po上我的识别验证码的详细历程: 一.读取浏览器中的图片验证码 ...
- python识别验证码——PIL,pytesser,pytesseract的安装
1.使用Python识别验证码需要安装Python的图像处理模块(PIL.pytesser.pytesseract) (安装过程需要pip,在我的Python中已经安装pip了,pip的安装就不在赘述 ...
- python3使用pytesseract进行验证码识别
pytesseract介绍 1.Python-tesseract是一个基于google's Tesseract-OCR的独立封装包: 2.Python-tesseract功能是识别图片文件中文字,并作 ...
随机推荐
- 让Quality Center走下神坛--测试管理工具大PK(转)
让Quality Center走下神坛--测试管理工具QC/ALM 和 RQM.Jira.TP.SCTM大PK 在写完了<让QTP走下神坛>之后,现在来谈谈测试管理工具,献给所有正在或打算 ...
- (转)gcc学习笔记
1.gcc -Wall hello.c -o hello //编译源文件,显示警告信息 2../a.out //运行程序 3.gcc -Wall calc.c /usr/lib/libm.a -o ...
- js对闭包的理解
原文链接http://www.jb51.net/article/24101.htm,讲的很好,清晰明了.
- JS中的存储机制
一.堆和栈的介绍 1.堆和队,是先进先出:栈,是先进后出,就跟水桶差不多: 2.存储速度:堆和队的存储速度较慢,栈的存储速度较快,会自动释放: 二.js中存储的类型 1.堆,一般用于复杂数据类型,存储 ...
- DedeCms最新文章显示红色日期或加上new字或new小图片
DedeCMS发布的文章显示红色日期或加上new字或new小图片,给近三天(或当天)发布的文章显示红色日期或加上new字或new小图片等,都是围绕pubdate做文章,写扩展的. 1.红色的日期 ...
- 常用: JS 获取浏览器窗口大小
// 获取窗口宽度 if (windows.innerWidth) winWidth = windows.innerWidth; else if ((document.body) && ...
- MYSQL进阶学习笔记七:MySQL触发器的创建,应用及管理!(视频序号:进阶_16,17)
知识点八:MySQL触发器的应用(16,17) 触发器的定义: 什么是触发器: 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据是触发执行,他比数据库本身标准的功能有更精细和更复杂的数据 ...
- 用于JS日期格式化,以及简单运算的Date包装工具类
1. [文件] yDate.js/** * | yDate.js | Copyright (c) 2013 yao.yl | email: redrainyi@126.com | Date: 2012 ...
- Android Platform Version与API Level的对应表
Platform Version API Level VERSION_CODE Notes Android 6.0 23 M Platform Highlights Android 5.1 22 LO ...
- android项目 res/ 目录内支持的资源目录详解
表 1. 项目 res/ 目录内支持的资源目录 目录 资源类型 animator/ 用于定义属性动画的 XML 文件. anim/ 定义渐变动画的 XML 文件.(属性动画也可以保存在此目录中,但是为 ...
