爬虫碰到的最多验证码就是滑块验证码!用Seleniu…
2018-08-06 09:13:59来源:博客园 阅读 ()
一. 验证码简介
验证码,即CAPTCHA,全自动区分计算机和人类的公开图灵测试,换而言之,验证码是一种用于区分人类与计算机的测试,只有通过了CAPTCHA,当前用户才被认为是人类。
进群:125240963 即可获取数十套PDF哦!
首先,我手动完成了一次滑块验证码的验证,想看看需要向服务器端发送什么请求才算是通过了验证,随便点开了一个,发现请求需要的参数是这样的:
搞清楚每个参数当然是可以的,但大夏天的实在没有这个耐心,而且万一过几天验证码的版本又升级了呢?岂不是透心凉。罢了罢了,安心当个咸鱼吧,反正是自己玩,没有环境等因素限制,用Selenium算了吧。那么问题来了,如何用Selenium破解滑块验证码呢?简单想了一下,感觉应该是这样的:
那么滑块到缺口的距离该如何计算呢?
之前看到很多人是这么算的:
出现滑块验证码界面时对屏幕进行截图(此时背景图是完整的),然后模拟点击滑动圆球,使滑块和缺口出现(此时背景图是有缺口的),此时再次截图,通过对比两次截图即可轻松地找到缺口位置。
上述方案有如下两个问题:
(1)如何获取完整的背景图?
答案:当你完成滑块验证码的验证时,还是会出现对应的完整背景图的,通过截屏软件截下图就好了。
结果如下:
(2)怎么找到当前滑块验证码对应的完整背景图?
答案:因为只有四张图,没必要用一些高大上的图像匹配算法,看了下四张图左上角顶点处的像素值,其中R值分别为:255,217,227,100,显然,通过对比背景图左上角顶点处的像素值即可找到当前滑块验证码对应的完整背景图了,代码实现如下:
注意,因为截图是这样子的:
即:先快速向右拖动,快到缺口时,再减速慢调。那么这样的轨迹该如何生成呢?
我想了两种方案:
方案一是根据物理学中的加速度减速度来模拟拖动滑块的轨迹,代码实现如下:
方案二是直接构造一些函数来模拟拖动滑块的轨迹,函数代码实现如下:
最后,使用Selenium按照设定的轨迹将滑块移动到缺口处即可:
That'all~
等到天气舒服一点我再优化一下破解方案吧,这个破解方案看起来挺low的,哈哈哈哈哈
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 小白如何入门 Python 爬虫? 2019-08-13
- python day2-爬虫实现github登录 2019-08-13
- python爬虫学习之爬取超清唯美壁纸 2019-08-13
- python爬虫学习之用Python抢火车票的简单小程序 2019-08-13
- python爬虫常用库 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash