使用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功能是识别图片文件中文字,并作 ...
随机推荐
- 【转载】Socket通讯原理以及TCP、IP三次握手机制分析
要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...
- 服务器返回JSON,IE出现下载问题
我向来的观点,IE就是个奇葩. 服务器返回json,chrome处理得好地地,但IE却奇葩地向你请求是否要保存这个JSON文件? 之所以出现这种弱智现象,是因为IE无法识别一个所谓的响应头部:appl ...
- LiberOJ #6210. 「美团 CodeM 决赛」tree 树形DP
题目链接:点这里 题解: 需要证明,所求的路径一定是全部权值都为1或者,路径上权值至多有一个为2其余为1且权值2在路径中央. 然后树形DP 设定dp[i][0/1] 以1为根的情况下,以i 节点下子树 ...
- 报错:out of memory java heap space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...
- JVM内存分配策略、各个代区、FullGC/MinorGC
主要讨论默认的Serial/Serial Old内存分配: 一.几种分配方案 1. 对象优先在Eden分配: 一般情况下,对象会在新生代的Eden区分配,Eden区没有足够空间时,虚拟机会 发起一次 ...
- Codeforces Beta Round #25 (Div. 2 Only)E. Test
E. Test time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...
- linux下lk和kernel层通信方式[2]
U-Boot与Linux内核的交互 说明:本文所使用的U-Boot的版本是1.1.6,平台是S3C2440. 目录 一.简介 1.1标记列表二.设置标记存放的地址 2.1相关的结构体定义 2.2标记存 ...
- 51Nod 1282 时钟 —— 最小表示法 + 字符串哈希
题目链接:https://vjudge.net/problem/51Nod-1282 1282 时钟 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难 ...
- html5--6-56 阶段练习5-翻转效果
html5--6-56 阶段练习5-翻转效果 学习要点 运用所学过的知识完成一个简单的小练习,理解对动画的应用. @charset="UTF-8"; *{ ; ; } img{ w ...
- oracle 转移表空间
一.系统表空间数据文件迁移:SQL> conn /@tmpdb as sysdba 已连接. SQL> desc dba_data_files; 名称 是否为空? 类型 --------- ...
