现在使用B站的小伙伴们越来越多,我也是越来越喜欢B站了,因为有很多的资源可以学习。
当然宋宋在B站也有自己的主页:编程界-小蜗牛的个人空间_哔哩哔哩_Bilibili。大家如果需要可以学习学习。
此次B站老铁莫怪宋宋拿你作为滑块破解的对象,谁让我这么爱你呢!!!
废话不多少我们现在开始,极验给大家简单介绍一下:https://www.geetest.com/,在这里给大家提供了智能组合、滑块验证、点选验证的体验。
滑块验证就是其中一部分,而像B站、斗鱼、简书、小米、汽车之家等都是他的客户。如果大家感兴趣也可以去其他网站试试,再次强调B站我还是很喜欢的。
本文完整代码点击python源码”进行获取
滑块验证码简述
有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。
其实验证码的英文为 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),翻译成中文就是全自动区分计算机和人类的公开图灵测试,它是一种可以区分用户是计算机还是人的测试,只要能通过 CAPTCHA 测试,该用户就可以被认为是人类。
由此也可知道破解滑块验证码的关键即是让计算机更好的模拟人的行为,这也是破解的难点所在。
配置环境
环境要求:
安装Python3
pip install selenium pillow
selenium 安装完成后,下载所选浏览器的 webdriver,这个前面一篇文章已经介绍过,不再重复介绍(注意下载的ChromeDriver版本需与Chrome浏览器版本对应)
破解步骤
思路分析:
利用selenium进入滑块验证码页面,截取所需页面图片。
通过图片像素对比分析获取缺口位置与滑块移动距离。
机器模拟人工滑动轨迹。
难点分析:
这类验证码可以使用 selenium 操作浏览器拖拽滑块来进行破解,难点两个,一个如何确定拖拽到的位置,另一个是避开人机识别(反爬虫)。
首先我们先看看,确定滑块验证码需要拖拽的位移距离
有三种方式
-
人工智能机器学习,确定滑块位置
-
通过完整图片与缺失滑块的图片进行像素对比,确定滑块位置
-
边缘检测算法,确定位置
各有优缺点。人工智能机器学习,确定滑块位置,需要进行训练比较麻烦,所以我们主要看后面两种。
对比完整图片与缺失滑块的图片
B站的滑块验证模块,一共有三张图片:完整图、缺失滑块图、滑块图,都是由画布canvas绘制出的。类似于:<