大佬教程收集整理的这篇文章主要介绍了用Python+Selenium破解春秋航空网滑块验证码,信息安全之路,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
记录一次利用Python+SELEnium破解滑块验证码的实战过程。 让我们愉快地开始吧~
Python版本: 3.6.4
相关模块:
pillow模块;
SELEnium模块;
numpy模块;
以及一些Python自带的模块。
其他:
chromedriver
安装Python并添加到环境变量c;pip安装需要的相关模块即可。
本文将记录一次春秋航空的会员注册页面所使用的滑块验证码破译过程c;地址为:
https://account.ch.com/NonRegistrations-Regist
验证码c;即CAPTCHAc;全自动区分计算机和人类的公开图灵测试
c;换而言之c;验证码是一种用于区分人类与计算机的测试c;只有通过了CAPTCHAc;当前用户才被认为是人类。
滑块验证码c;即用户使用鼠标将滑块从某个位置拖动到另一个位置c;服务器通过用户拖动滑块的轨迹来判断当前用户是否为人类。本文将尝试破解的是一种拼图式的滑块验证码:
首先c;我手动完成了一次滑块验证码的验证c;想看看需要向服务器端发送什么请求才算是通过了验证c;随便点开了一个c;发现请求需要的参数是这样的:
搞清楚每个参数当然是可以的c;简单想了一下c;感觉应该是这样的:
首先c;利用图像处理技术计算滑块到缺口的距离。然后c;利用机器以与人类行为相似的方式将滑块拖到缺口位置c;完成验证。
@H_197_88@
也就是这个界面:
那么滑块到缺口的距离该如何计算呢?
之前看到很多人是这么算的:
出现滑块验证码界面时对屏幕进行截图(此时背景图是完整的)c;然后模拟点击滑动圆球c;使滑块和缺口出现(此时背景图是有缺口的)c;此时再次截图c;通过对比两次截图即可轻松地找到缺口位置。
但是c;此方案的前提是在点击滑动圆球之后才出现滑块和缺口c;点击之前是完整的背景图。这个方案在不久前还是可行的c;但是魔高一尺道高一丈c;数天前滑块验证码版本升级了!!!滑块验证码直接显示滑块和缺口了!!!也就是不给你看原图了。
既然准备用机器学习c;算法先不考虑c;总得先有训练数据吧c;于是我手动刷新了几次c;想研究一下验证码图片该如何获取c;实在不行就手动保存个几百张。可一刷新c;发现了一件了不起的事情c;这网站滑块验证码的背景图只有四张!
根本不需要爬验证码c;手工标注c;然后训练了。或许有人会问c;为什么呢?
因为就四张背景图啊!!!你完全可以这样: 对当前的滑块验证码界面进行截图c;与对应的完整背景图进行对比c;找到缺口位置c;即可计算出滑块到缺口的距离了(滑块初始位置的横坐标是固定的)。
上述方案有如下两个问题:
(1)如何获取完整的背景图?
答案:当你完成滑块验证码的验证时c;还是会出现对应的完整背景图的c;通过截屏软件截下图就好了。
结果如下:
(2)怎么找到当前滑块验证码对应的完整背景图?
答案:因为只有四张图c;没必要用一些高大上的图像匹配算法c;看了下四张图左上角顶点处的像素值c;其中R值分别为:255,217,227,100c;显然c;通过对比背景图左上角顶点处的像素值即可找到当前滑块验证码对应的完整背景图了c;代码实现如下:
注意c;因为截图是这样子的:
所以验证码背景图左上角顶点处的坐标会随着电脑和截屏方式的改变而改变(具体而言c;SELEnium和我电脑上的截屏软件截出来的图c;验证码背景图的位置坐标是不一样的c;需要通过画图软件确定具体位置)。
所以如果你无法用我的代码完成滑块验证码破解的话c;请自行修改(787, 282)和(787, 293)为适合你自己电脑实际情况的坐标值。
接下来c;我们就可以计算滑块到缺口的距离了!
先截取当前滑块验证码界面c;代码实现如下:
这里我们把滑块先移动到最右端再截图c;否则滑块将影响当前验证码界面与对应的完整背景图之间的像素对比(即第一次找到的像素差异较大点在滑块上而不是在期望的缺口上)。
然后通过与对应的完整背景图进行像素值对比c;找到缺口位置c;即可计算出滑块到缺口的距离了(因为滑块初始位置的横坐标是固定的):
接下来c;我们需要利用机器以与人类行为相似的方式将滑块拖到缺口位置c;完成验证。
即:先快速向右拖动c;快到缺口时c;再减速慢调。那么这样的轨迹该如何生成呢?
我想了两种方案:
方案一是根据物理学中的加速度减速度来模拟拖动滑块的轨迹c;代码实现如下:
方案二是直接构造一些函数来模拟拖动滑块的轨迹c;函数代码实现如下:
最后c;使用SELEnium按照设定的轨迹将滑块移动到缺口处即可:
文章到这里就结束了c;感谢你的观看c;Python24个小游戏系列c;下篇文章分享Python+SELEnium破译B站滑块验证码
为了感谢读者们c;我想把我最近收藏的一些编程干货分享给大家c;回馈每一个读者c;希望能帮到你们。
干货主要有:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
⑥ 两天的Python爬虫训练营直播权限
All done~私信获取完整源代码。。
简单实现入门级隐写术
以上是大佬教程为你收集整理的用Python+Selenium破解春秋航空网滑块验证码,信息安全之路全部内容,希望文章能够帮你解决用Python+Selenium破解春秋航空网滑块验证码,信息安全之路所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。