(自动化实现验证码登录,这里内容是入坑后,整合了几个文档的内容)|
以下模块是使用时需要用到的


首先:安装pillow库,它的作用是对图片进行简单的处理,在pytharm中使用pip install pillow指令即可安装

如果出现超时报错可以用下面指令进行安装

pip --default-timeout=100 install -U pillow

下载tesseract图片识别文字模块

tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/本人下载的是2019.03.14版本的

下载后就是一个exe安装包,直接右击安装即可,安装完成之后

配置两个环境变量:

(1)编辑 系统变量里面 path,添加tesseract的安装路径:

我的路径是默认安装的路径:C:\Program \Tesseract-OCR(添加后别忘记加上";"结尾,记得保存)

(2)点击我的电脑–>属性–>高级设置—>环境变量---->path下面的—>新建—>变量名:TESSDATA_PREFIX---->变量值:前面的加上\tessdata

接下来,为了在python代码中使用tesseract功能,使用pip安装pytesseract:

pip install pytesseract

安装后在CMD命令行输入:tesseract test.jpg text -l chi_sim(网上随意找的一个指令)
运行后显示:

提示是没有语言包,然后就去查资料踩了一个坑,说是要在安装的时候勾选: Addtional language data(download)

于是找到C:\Program \Tesseract-OCR,卸载重装,勾选之后安装,却出现以下提示(这个关都关不掉)只能靠任务管理器结束任务

后来在不懈努力下,找到了一个可以直接下载语言包,下面是我分享的(原文出处:https://blog.csdn.net/LZQ_LZQ_/article/details/105627635)

链接:https://pan.baidu.com/s/1MWkQgaMYY-9-kwhONOm3Bg
提取码:51si

下载语言包,打开tessdata文件夹,把这几个再复制到C:\Program \Tesseract-OCR\tessdata     下

然后win+R 快捷打开cmd,输入tesseract --list-langs 就可,加上我们下载的,一共有5种语言

安装pytesseract
直接在pycharm中使用pip进行安装就可
指令:pip install pytesseract

另外需要注意的是:下载pytesseract后:

找到pytesseract的安装包,C:\Python34\Lib\site-packages\pytesseract,编辑pytesseract.py文件(此步骤必须做,否则运行代码时会报错):

  tesseract_cmd = 'C:/Program Files /Tesseract-OCR/tesseract.exe'                 -----(这个是我自己的路径)后面/tesseract.exe是需要自己加上去的
(程序网上可以自己随意找,自己也是遇到一个问题,就是截的验证码图片的位置有偏差,后来通过自己量才获得验证码图片,但是不调用第三方接口,识别度不高,难点的基本无法识别)

python自动化实现验证码登录过程的更多相关文章

  1. Python - Cookie绕过验证码登录

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 另一篇博文  P ...

  2. IDEA+java通过SSH来进行分析日志,实现UI自动化动态验证码登录

    在我写自动化脚本的时候是要真实发送验证码才能往下进行UI自动化 思路:验证码会显示在哪些地方,手机短信?数据库存储?日志? 完整代码如下: package guanyu.tools; import c ...

  3. Python 自动化之验证码识别

    之前公司的验证码比较简单,可以采取直接破解的方式进行登录 部分代码如下: # -*- coding: utf-8 -*- from selenium import webdriver from sel ...

  4. Spring Security 实现手机验证码登录

    思路:参考用户名密码登录过滤器链,重写认证和授权 示例如下(该篇示例以精简为主,演示主要实现功能,全面完整版会在以后的博文中发出): 由于涉及内容较多,建议先复制到本地工程中,然后在细细研究. 1. ...

  5. python接口自动化(Cookie_绕过验证码登录)

     python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...

  6. Selenium2+python自动化41-绕过验证码(add_cookie)

    前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对于验证码,要 ...

  7. Selenium2+python自动化41-绕过验证码(add_cookie)【转载】

    前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对于验证码,要 ...

  8. Python 实现简单图片验证码登录

    朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^.劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来 ...

  9. Python验证码登录(Tesseract安装配置)

    1.安装py库:pytesseract,PIL pip install pytesseract pip install PILLOW 如果安装时,出现权限不足: pip install --user ...

随机推荐

  1. GreateMan_开源

    oschina: https://www.oschina.net/ Tencent: https://github.com/Tencent 360: https://github.com/Qihoo3 ...

  2. unity 模板测试 详解

    https://blog.csdn.net/u011047171/article/details/46928463#t4

  3. Unity技巧集合

    地址:http://blog.csdn.net/stalendp/article/details/17114135 这篇文章将收集unity的相关技巧,会不断地更新内容. 1)保存运行中的状态 uni ...

  4. nginx server_name 多个

    nginx server_name 多个 nginx server_name 多个的话,空格隔开就行 server_name baidu.com baidu.me; 如果很多的话可以用正则,我的需求, ...

  5. 查看带有A-Time的执行计划

    先执行 SQL> alter session set statistics_level=all; 会话已更改. 再执行SQL语句: SQL> select count(*) from tb ...

  6. javascript事件环微任务和宏任务队列原理

    哈喽!大家好!我是木瓜太香,我又来嘞,今天来说说前端面试中经常别问到的 JS 事件环问题. JS 事件环 JS 程序的运行是离不开事件环机制的,这个机制保证在发生某些事情的时候我们有机会执行一个我们事 ...

  7. Linux:apache第一个简单的站点

    前提: apache安装目录再/application/apache/ 1.先进入安装目录中 cd /application/apache/ ls 查看目录中的内容 可以看到好多我们常见的文件夹,bi ...

  8. oracle之三闪回flashback

    闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...

  9. [补题]找到原序列长度k的子序列中字典序最小的那个(单调栈)

    题意 题目如题,输入序列只包含小写字母,数据范围0<k<=len<=500000. 例: 输入:helloworld 输出:ellld 题解 使用单调栈.当已删掉n-k个字符,输出栈 ...

  10. 处理IOS浏览器在input或者textarea获取焦点后底部留一块灰色空白区域的bug

    document.body.addEventListener('focusout',function() { window.scrollTo(0,0) },false);