陈新龙
我们在注册账号或登录的时候通常会出现输入验证码的环节。为什么一定要有这么麻烦的环节呢,要验证什么呢?
其实验证码是为了区分用户是计算机还是人,开发者一般将这种强制人机交互的程序放置在注册或者是输入重要信息的环节。验证码主要功能是抵御自动化攻击,如恶意破解密码、刷票、论坛灌水,有效防止黑客对某一个特定注册用户使用暴力破解方式进行不断的登录尝试。
常见的验证码的类型有:随机字母或数字验证码,中文及图片组合验证码,可以随机变换的gif验证码,常识问题、认知问题验证码,手机短信验证码,通过滑动验证和检查验证的动作验证码等。
当我们需要自动化登录某个网站的时候,就不可避免遇到输入验证码这一环节,今天就和大家分享通过Python编程并配合影刀的辅助去自动完成解析验证码的功能。
首先介绍一个通用验证码识别OCR库ddddocr。ddddocr是个免费开源专为验证码厂商对自家新版本验证码难易强度进行验证的Python库。
有了ddddocr,我们可以处理绝大部分的验证码(github地址https://github.com/sml2h3/ddddocr)。ddddocr通过大批量生成随机数据后进行深度网络训练,ddddocr奉行着开箱即用、最简依赖的理念,其本身并非针对任何一家验证码厂商的产品,尽量减少用户的配置和使用成本。但是如果你熟悉深度网络训练,就能理解在解析验证码的过程中难免会碰到解析不成功或者解析失误的场景,只能多包容。毕竟你也没法提高人工智能。
解析验证码的代码也不难,相信大家都是可以理解的。
首先我们需要安装ddddocr库,在cmd环境中输入pipinstallddddocr安装完成,其他编辑器可以在插件中搜索安装。
安装完成后我们即可在Python中将ddddocr导入进来,导入成功后我们只需要按照要求在代码中填入对应图片路径的参数即可(withopen后填入图片的路径精确到图片完整路径,rb代表Python文件读写的模式)。
最后等待解析验证码的结果反馈到控制台就可以了,图片中的ym8p,已经成功被解析出来了,亲测成功率还是非常高的。
通过Python编程我们已经实现了验证码的识别功能,但我们总不可能每次输入验证码都要去打开Pycharm运行一下这段程序吧。那么如何自动化地去测试呢?
这里就要用到我们讲过的影刀软件了,影刀内置了可以添加Python的模块,我们将自己写的代码移植到影刀模块中,需要的时候调用该模块即可,方法过程还是蛮简单的。
1.编写好相应的模块预备后期调用,这一步我们已经完成。根据影刀特性在主流程中移植相应的代码。
2.这里我们将验证码图片放在固定位置便于程序获取,调用Python模块进行解析,完成后反馈结果。
本教程只以最简单的数字混合字母的验证码为例,主要目的是体现如何利用其他平台让Python编辑的代码更加实用。后期提高可以解锁滑动积木式的验证码和解析点选类验证码图片。期待和大家一起学习进步,分享更多有趣的知识。