做爬虫的同学肯定或多或少会为验证码苦恼过,在最初的时候,大部分验证码都是图形验证码。但是前几年「极验」验证码横空出世,行为验证码变得越来越流行,其中之一的形式便是滑块验证码。
滑块验证码是怎样的呢?如图所示,验证码是一张矩形图,图片左侧会出现一个滑块,右侧会出现一个缺口,下侧会出现一个滑轨。左侧的滑块会随着滑轨的拖动而移动,如果能将左侧滑块正好滑动到右侧缺口处,就算完成了验证。
由于这种验证码交互形式比较友好,且安全性、美观度上也会更高,像这种类似的验证码也变得越来越流行。另外不仅仅是「极验」,其他很多验证码服务商也推出了类似的验证码服务,如「网易易盾」等,上图所示的就是「网易易盾」的滑动验证码。
没错,确实这种滑动验证码的出现让很多网站变得更安全。但是做爬虫的可就苦恼了,如果采用自动化的方法来绕过这种滑动验证码,关键部分在于以下两点:
•找出目标缺口的位置。• 模拟人的滑动轨迹将滑块滑动到缺口处。
那么问题来了,第一步怎么做呢?
我们怎么识别目标缺口到底在图片的哪个地方?大家可能想到的答案有:
•直接手工一把梭。• 利用图像处理算法检测缺口处特征。• 对接打码平台,获取缺口位置。
另外对于极验来说,之前还有一种方法来识别缺口,那就是对比原图和缺口图的不同之处,通过遍历像素点来找出缺口的位置,但这种方法就比较投机了。如果换家验证码服务商,不给我们原图,我们就无从比较计算了。
总之,我们的目标就是输入一张图,输出缺口的的位置。
上面的方法呢,要么费时费钱、要么准确率不高。那还有没有其他的解决方案呢?
当然有。
现在深度学习这么火,基于深度学习的图像识别技术已经发展得比较成熟了。那么我们能不能利用它来识别缺口位置呢?
答案是,没问题,我们只需要将这个问题归结成一个深度学习的「目标检测」问题就好了。
听到这里,现在可能有的同学已经望而却步了,深度学习?我浅度学习还没学完咋整?
不用担心。
本节介绍的内容全程没有一行代码