上一节我们实现了极验验证码的识别,但是除了极验其实还有另一种常见的且应用广泛的验证码,比较有代表性的就是点触验证码。
可能你对这个名字比较陌生,但是肯定见过类似的验证码,比如 12306,这就是一种典型的点触验证码,如图 8-18 所示:
Python资源共享群:484031800
图 8-18 12306 验证码
我们需要直接点击图中符合要求的图,如果所有答案均正确才会验证成功,如果有一个答案错误,验证就会失败,这种验证码就可以称之为点触验证码。
另外还有一个专门提供点触验证码服务的站点,叫做 TouClick,其官方网站为: https://www.touclick.com/ ,本节就以它为例讲解一下此类验证码的识别过程。
1. 本节目标
本节我们的目标是用程序来识别并通过点触验证码的验证。
2. 准备工作
本次我们使用的 Python 库是 Selenium,使用的浏览器为 Chrome,在此之前请确保已经正确安装好了 Selenium 库、Chrome浏览器并配置好了 ChromeDriver,相关流程可以参考第一章的说明。
3. 了解点触验证码
TouClick 官方网站的验证码样式如图 8-19 所示:
图 8-19 验证码样式
和 12306 站点有相似之处,不过这次是点击图片中的文字,不是图片了,另外还有各种形形色色的点触验证码,其交互形式可能略有不同,但基本原理都是类似的。
接下来我们就来统一实现一下此类点触验证码的识别过程。
4. 识别思路
此种验证码的如果依靠图像识别的话识别难度非常之大。
例如就 12306 来说,其识别难点有两个点,第一点是文字识别,如图 8-20 所示:
图 8-20 12306 验证码
如点击图中所有的漏斗,“漏斗”二字其实都经过变形、放缩、模糊处理了,如果要借助于前面我们讲的 OCR 技术来识别,识别的精准度会大打折扣,甚至得不到任何结果。第二点是图像的识别,我们需要将图像重新转化文字,可以借助于各种识图接口,可经我测试识别正确结果的准确率非常低,经常会出现匹配不正确或匹配不出结果的情况,而且图片本身的的清晰度也不够,所以识别难度会更大,更何况需要同时识别出八张图片的结果,且其中几个答案需要完全匹配正确才能验证通过,综合来看,此种方法基本是不可行的。
再拿 TouClick 来说,如图 8-21 所示:
图 8-21 验证码示例
我们需要从这幅图片中识别出植株二字,但是图片的背景或多或少会有干扰,导致 OCR 几乎不会识别出结果,有人会说,直接识别白色的文字不就好了吗?但是如果换一张验证码呢?如图 8-22 所示:
图 8-22 验证码示例
这张验证码图片的文字又变成了蓝色,而且还又有白色阴影,识别的难度又会大大增加。
那么此类验证码就没法解了吗?答案当然是有,靠什么?靠人。
靠人解决?那还要程序做什么?不要急,这里说的人并不是我们自己去解,在互联网上存在非常多的验证码服务平台,平台 7×24 小时提供验证码识别服务,一张图片几秒就会获得识别结果,准确率可达 90% 以上,但是就需要花点钱来购买服务了,毕竟平台都是需要盈利的,不过不用担心,识别一个验证码只需要几分钱。
在这里我个人比较推荐的一个平台是超级鹰,其官网为: https://www.chaojiying.com ,非广告。
其提供的服务种类非常广泛,可识别的验证码类型非常多,其中就包括此类点触验证码。
另外超级鹰平台同样支持简单的图形验证码识别,如果 OCR 识别有难度,同样可以用本节相同的方法借助此平台来识别,下面是此平台提供的一些服务:
- 英文数字,提供最多20位英文数字的混合识别
- 中文汉字,提供最多7个汉字的识别
- 纯英文,提供最多12位的英文的识别
- 纯数字,提供最多11位的数字的识别
- 任意特殊字符,提供不定长汉字英文数字、拼音首字母、计算题、成语混合、 集装箱号等字符的识别
- 坐标选择识别,如复杂计算题、选择题四选一、问答题、点击相同的字、物品、动物等返回多个坐标的识别
具体如有变动以官网为准: https://www.chaojiying.com/price.html 。
而本节我们需要解决的就是属于最后一类,坐标多选识别的情况,我们需要
Python3自动化识别点触验证码实战教程

本文详细介绍了如何使用Python3结合Selenium和在线验证码服务平台,如超级鹰,来识别和解决点触验证码,包括12306及TouClick网站的验证码。通过注册平台账号、获取API、截取验证码图片并发送识别请求,最终模拟点击坐标完成验证。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



