介绍:
验证码种类:纯数字、纯字母、汉字组合、数学运算题、滑动坐标、图片、短信、邮箱、语音等等。
验证码作用:验证码作用能有效防止恶意登录注册,基于网址性能减少用户的并发。
实现原理:验证码于服务器端生成,发送给客户端,并以图像格式显示(对图像加以处理:添加干扰项、添加干扰像素、添加噪点等)。客户端提交所显示的验证码,客户端接收并进行比较,若比对失败则不能实现登录或注册,反之成功后跳转相应界面。
自动化中解决验证码的解决方案
类别 | 描述 | 优点 | 选哟考虑 | |
| 把验证码的相关代码注释掉 | 省去麻烦 存在风险 | 安全问题 | |
| 设置一个“万能验证码” | |||
| 在指定的文件夹资源库中进行随机一张图片 | |||
| Tesseract OCR 引擎的 Python 封装类 | 能读取常规的图片文件(JPG, GIF ,PNG , TIFF 等)。 | ||
| 主流打码平台:斐斐、超人、图鉴等 | |||
| 在浏览器中添加登录成功时所携带的cookie来跳过登录, | selenium中可以通过add_cookie()方法将用户名、密码的登录信息写入浏览器的cookie中 |
(一)光学字符识别
1.安装第三方模块pytessract和图像处理库
注意:python2.X版本安装库PIL,但是在python3.X版本须安装Pillow或Pillow-PIL2
2.安装ocr识别库tesseract:
下载地址: https://github.com/UB-Mannheim/tesseract/wiki
安装办法: https://www.cnblogs.com/sea-stream/p/10961580.html
3.简单识别
- 一般思路:图片降噪——》 图片切割——》 图像文本输出
- 图片降噪:是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变成2进制点阵最好。
a 彩色背景的验证码:
每个像素都可以放在一个5维的空间里,这5个维度分别是,X,Y,R,G,B,也就是像素的坐标和颜色。处理以下验证码图片:
b 彩色图像转化为灰度
RBG转化到HSI彩色空间,采用L分量:
c 二值化处理:
二值化是图像分割的一种常用方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化(一般设置为0-1)。根据阈值选取的不同,二值化的算法分为固定阈值和自适应阈值,这里选用比较简单的固定阈值。
得到结果如下:
d 转成黑白图片-解决识别率低
得到结果如下:
(二)基于cookie登录操作
获取cookie通常有两种方式,一是使用驱动器对象中的get_cookies方法获取当前项目中的cookie,二是通过抓包工具抓取出对应的cookis,然后再将cookis添加在数据中。
(三)x打码平台识别
下面以登陆DS_MALL商城后台为例:
使用电脑自带的画图工具,获取截图中的验证码图片X、Y轴坐标
首先需要截取到验证码图片,截取代码:
然后通过打码平台( http://ttshitu.com/docs/python.html#pageTitle)完成验证码的读取,每个打码平台都有对应的开发文档,根据所提供的开发APi进行调用接口;
例如:
在pycharm中新建一个模块TuJian_APi
最后调用该模块即可:
综合代码如下: