点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!

下方是录屏软件录的GIF动图,滑块验证码自动识别缺口,并拖动滑块模拟登陆

破解核心思路:

1、如何确定滑块滑动的距离?

滑块滑动的距离,需要检测验证码图片的缺口位置

滑动距离 = 终点坐标 - 起点坐标

然后问题转化为我们需要屏幕截图,根据selenium中的position方法并进行一些坐标计算,获取我们需要的位置

2、坐标我们如何获取?

起点坐标:

每次运行程序,位置固定不变,滑块左边界离验证码图片左边界有6px的距离

终点坐标:

每次运行程序,位置会变,我们需要计算每次缺口的位置

怎么计算终点也就是缺口的位置?

先举个例子,比如我下面两个图片都是120*60的图片,一个是纯色的图片,一个是有一个蓝色线条的图片(蓝色线条位置我事先设定的是60px位置),我现在让你通过程序确定蓝色线条的位置,你怎么确定?

答案:

遍历所有像素点色值,找出色值不一样的点的位置来确定蓝色线条的位置

这句话该怎么理解?大家点开我下面的图片,是不是发现图片都是由一个一个像素点组成的,120*60的图片,对应的像素就是横轴有120个像素点,纵轴有60个像素点,我们需要遍历两个图片的坐标并对比色值,从(0,0)(0,1)......一直到(120,60),开始对比两个图片的色值,遇到色值不一样的,我们return返回该位置即可

下面是简单代码演示,获取缺口位置为60,跟我预先设定的位置一样,后面会详细介绍该方法如何操作

而我们目标网站的验证码图片也是类似,这是我截图的,一个是没有缺口的验证码,一个是有缺口的验证码,我们同样需要遍历,但是注意一点的是,我们这次遍历不是从图片(0,0)开始遍历,而是需要从滑块的右侧边缘开始遍历

接下来开始上代码,用selenium模拟登陆,输入用户名和密码,这些我就不再截图代码了,想必大家应该都会的,本文会分享完整源码给大家,当然代码也存在一些缺陷,希望大家在测试过程中能改进指正,具体的很多问题,仍然需要大家自己去运行,去体会,才行发现问题

1、获取验证码位置坐标,尺寸大小

验证码需要截图,大概手写了一些计算过程,最后需要的验证码位置是上下左右的一个区域,我们从屏幕上根据这个区域进行截图

代码在运行中,发现计算的区域和实际截图有出入,我根据数据,多次测试运行,发现截图区域设定为(558,215,816,374)相对合适,可以截到验证码,这里是程序的问题之一,大家有兴趣可以测试,看该地方如何优化

这一步是返回缺口位置left

这个方法是比较色值差异

计算滑动距离=119 - 边缘空隙6 = 113

做到这一步,我们得出了需要滑动113px,然后我们的滑动,需要满足物理学规律,即先加速,后减速的过程,因为人的实际操作也是这样的,刚开始先加速,到后面开始减速

我设定的减速位置为mid,也就是滑动到五分之四的位置时候,速度开始降下来

中间定义了一个加速度a,当没有到4/5距离时候,加速度为1,当滑动最后1/5距离时,加速度变为-2,该代码参考崔大神的方法,根据数学公式,计算得出滑动轨迹,就相对模拟了一种相对真实的人的滑动过程

def get_track(self, distance):    """    根据偏移量获取移动轨迹    :param distance: 偏移量    :return: 移动轨迹    """    track = []# 当前位移    current = 0    mid = distance * 4 / 5    # 计算间隔    t = 0.2    # 初速度    v = 0    while current < distance:        if current < mid:            # 加速度为正1            a = 1        else:            # 加速度为负2            a = -2        # 初速度v0        v0 = v# 当前速度v = v0 + at        v = v0 + a * t# 移动距离x = v0t + 1/2 * a * t^2        move = v0 * t + 1 / 2 * a * t * t# 当前位移        current += move# 加入轨迹        track.append(round(move))return track

这是计算得出的滑动轨迹

另外注意,如果拖动过程发现拖得不够,就设置为-10或者-11,让轨迹多走点,如果发现拖得过了,就设置为-12,-13,让轨迹少走点,多尝试

总结:

本文主要分享破解思路,遇到bug解决方式,最后能调参数破解成功,读懂本文的意思是目的,需要大家动手去体会其中的一些关键思路

  • 来源: python爬虫人工智能大数据

  • https://mp.weixin.qq.com/s/P_cr5mzc06VA0hsfJWgOPw

  • 程序员大咖整理发布,转载请联系作者获得授权

【点击成为源码大神】

破解滑块(极验)验证码思路分享相关推荐

  1. 教你如何快速破解假极验验证码

    随着爬虫技术的日益发展,反爬虫技术也越来越强大,极验(GeeTest)是一家致力于为企业用户提供验证安全的解决方案的公司,通过自主研发的行为安全模型算法,能有效阻止恶意程序对网站的攻击(垃圾注册.撞库 ...

  2. 【Python爬虫系列教程 40-100】selenium结合拖拽实现极验验证码破解

    文章目录 前言 1. 破解极验验证码思路 2. B站登录界面 3. 极验缺口图和原始图的截取 4. 对比缺陷图和原始图的像素,确定拖拽的像素 5. 拖拽轨迹 6. 执行以上所有代码,实现破解B站极验验 ...

  3. 验证码破解:极验3.0滑动验证码破解最新俩种方法

    特点: 对于极验验证码3.0版本,我们首先点击按钮进行智能验证.如果验证不通过,则会弹出滑动的验证的窗口,拖动滑块拼合图像进行验证.之后三个加密参数会生成,通过表单提交到后台,后台还会进行一次验证. ...

  4. 极验验证码的破解-开篇

    近几年有个拖动解锁的验证码风头很盛,用过12306的人就知道,它有段时间用的就是这个拖动解锁的验证码,据说就是极验验证码,虽然现在12306的验证码变成了看图识画,安全性和趣味性大大提高,但是也还是被 ...

  5. 极验验证码破解之selenium

    这一篇写完很久了,因为识别率一直很低,没办法拿出来见大家,所以一直隐藏着,今天终于可以拿出来见见阳光了. 哈喽,大家好,我是星星在线,我又来了,今天给大家带来的是极验验证码的selenium破解之法, ...

  6. 极验验证码的破解3-模拟浏览器渲染

    前面我们介绍了如何求解极验验证码的滑块目标位移,下面我就就要开始实施拖动滑块破解了.因为我们采取的是模拟人的行为操作,而极验验证码都是js渲染的,因此我们需要一个工具来帮我们完成这个渲染过程得到一个完 ...

  7. 极验验证码破解—超详细教程(一)

    极验验证码破解-超详细教程(一) Gayhub:FanhuaandLuomu/geetest_break 2017.8.21 代码以上传,可供参考 目录 一.网站http://www.gsxt.gov ...

  8. 极验验证码破解(二)

    一.网站http://www.gsxt.gov.cn滑动验证码概述 二.极验验证码破解-抓包分析 三.极验验证码破解-搭建本地验证码服务 四.极验验证码破解-分析geetest.js,得到所需参数 五 ...

  9. 极验验证码破解(三)

    一.网站http://www.gsxt.gov.cn滑动验证码概述 二.极验验证码破解-抓包分析 三.极验验证码破解-搭建本地验证码服务 四.极验验证码破解-分析geetest.js,得到所需参数 五 ...

  10. 极验验证码破解—超详细教程(三)

    极验验证码破解-超详细教程(三) Gayhub:FanhuaandLuomu/geetest_brek [国家企业信用信息公示系统为例] 目录 一.网站http://www.gsxt.gov.cn滑动 ...

最新文章

  1. mysql binlog的查询
  2. 扎格伯克败走加密货币:2亿美元打包变卖技术,核心团队出走殆尽,发币计划仅2年就从入门到放弃...
  3. DPDK vhost-user之packed ring(六)
  4. Delphi - 对象构造浅析后续
  5. 前端月趋势榜:5 月最热门的 20 个前端开源项目 - 2105
  6. 标准 C++ I/O
  7. Android中利用ant进行多渠道循环批量打包(一)
  8. ip地址合不合法怎么看_电子印章合不合法?两部门再发意见认定
  9. 基于STM32的波形发生器
  10. DesignPattern_Java:设计模式分类和设计原则
  11. Unity实现扫描透视效果
  12. python海龟画图(6)多边形(3)圆内接多边形
  13. ctrl+鼠标滚轮 设置pycharm字体大小
  14. 绿色风格资格证书学校培训机构网站源码 织梦dedecms模板 带手机版
  15. *新手看php手册的正确姿势
  16. C++之(public/protect/private)及fiend
  17. Lounge Lizard EP-4 for Mac(电钢琴插件)v4.2.5破解版
  18. hadoop学习之----------IntelliJ IDEA上实现MapReduce中最简单的单词统计的程序(本地 和 hadoop 两种实现方式)...
  19. 一元二次方程abc决定什么_专题—二次函数一元二次方程-abc意义.pptx
  20. 深圳博瑞得一定不要去

热门文章

  1. Redis 布隆过滤器
  2. 【python+requests】爬取“国家级非物质文化遗产代表性项目名录”
  3. Servlet-发送电子邮件
  4. Installing OpenCV 2.4.9 in Ubuntu 14.04 LTS
  5. 移动 网络 连mysql_中国移动MySQL数据库优化最佳实践
  6. 形式化、半形式化和非形式
  7. 支付宝原型设计-低保真Axure9支付宝界面设计
  8. 如何开始学剪辑?零基础详细解析
  9. 31.SAP MII产品介绍(06)功能详解(04)数据服务和系统资源
  10. 服务器远程管理(远程桌面(图形) telnet(命令行))