使用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功能是识别图片文件中文字,并作 ...
随机推荐
- HTML5与Javascript 实现网页弹球游戏
终于效果图: 1. 使用html 5 的canvas 技术和javascript实现弹球游戏 总体流程图: 1.1 html5 canvas技术的使用 首先在html页面中定义画布. <canv ...
- Oracle核心技术 笔记(该书读得不细致,须要找时间再细读~~)
Oracle核心技术 跳转至: 导航. 搜索 文件夹 1 開始 2 redo和undo 3 事务与一致性 4 锁与闩 5 缓存和复制 6 写入和恢复 7 解析与优化 8 RAC及'缺陷' 9 附录A ...
- Kafka知识点汇总
整体结构 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJpY19zdW5haA==/font/5a6L5L2T/fontsize/400/fill/I ...
- STL review:vector & string & map & struct
I.vector 1.头文件:#include<vector> //容器vector是一个能实现随机存取.插入删除的动态数组,还可以当栈使. ...
- 每天一个JavaScript实例-apply和call的使用方法
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- bash shell parameter expansion
1 ${parameter%word}和${parameter%%word} ${parameter%word},word是一个模式,从parameter这个参数的末尾往前开始匹配.单个%进行最短匹配 ...
- POJ 1737 Connected Graph(高精度+DP递推)
题面 \(solution:\) 首先做个推销:带负数的压位高精度(加减乘+读写) 然后:由 \(N\) 个节点组成的无向图的总数为: \(2^{N*(N-1)/2}\) (也就是说这个图总共有 \( ...
- IE9不能直接引用Console
问题: 公司有个项目,功能很简单,读取业务数据,展示在页面上. 一个很简单的问题,却因为目标浏览器是IE9,卡了三天. 前端给的反馈是: 在IE9下,程序一会儿对,一会儿不对--第一次刷不出来,多刷几 ...
- UVA11270 Tiling Dominoes —— 插头DP
题目链接:https://vjudge.net/problem/UVA-11270 题意: 用2*1的骨牌填满n*m大小的棋盘,问有多少种放置方式. 题解: 骨牌类的插头DP. 1.由于只需要记录轮廓 ...
- hdu2063 二分图(基础题)
这个题目适合刚刚接触二分图的同学做哦: 给一个题目链接 点击打开链接. 题目大意,有K个男女匹配方式, 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数.0 ...
