验证码作为一种安全机制,可以有效防止暴力破解密码、发帖、灌水、刷票等,大家在做 Web 自动化的时候应该有碰到验证码这个难题,一般我们可以和开发沟通请求他们的帮助:去掉验证码或者设置一个万能验证码,而如果开发不帮忙我们该如何去解决呢?
本篇文章以 Java 语言为例教你怎么破解验证码。
现在大多数网址会采用滑块验证码的方式,下面以腾讯的滑块验证码为例,先来看看破解的效果:
要破解滑块验证码,我们一般采取的思路如下:
-
获取滑块到背景缺口图的距离
-
通过 selenium 的 Actions 类完成滑动
关键点就在于如何获取滑块到背景缺口图的距离,现在主流的方案是通过 OpenCV(Open Source Computer Vision Library)开源计算机视觉库来处理,openCV 有非常多图像处理方法,其是通过 C/C++ 开发的,但是对外有提供 Java,Python 的接口,所以不管是 Python 还是 Java 我们都可以使用 openCV 进行图像处理。
1环境准备
Step1:下载 OpenCV
进入到官网 https://opencv.org/releases/ 下载对应系统的 openCV 软件包,之后解压
Step2:配置环境变量
进入到 opencv -> build ->x64 ->vc15 ->bin 目录,将路径复制追加到 Path 环境变量中
Step3:Intellij 工程中添加 jar 包
Intellij 中选择 File -> Project Structure