以破解猪八戒网为例*https://account.zbj.com/login**
获取图片验证码,包含缺口图,滑块图,完整图

  • 三个canvas标签分别对应了缺口图,滑块图和完整图。

    通过修改页面样式:

    1. 让滑块隐藏,截取缺口图;
    2. 隐藏缺口图,显示滑块图,截取滑块图;
    3. 显示完整图,截取完整图。

1.隐藏滑块,截取缺口图

设置后效果

2.隐藏缺口图,显示滑块图,截取滑块图

隐藏缺口图

下滑右侧栏可以看到对滑块的设置

3.显示完整图,截取完整图。

选择第三个canvas

代码更改元素样式,获取图片

  • 功能:获取验证图片
  • 参数:无
  • 返回值:
    缺口图地址
    滑块图地址
    完整图地址
def  get_captcha():time.sleep(2)#(1)隐藏滑块  得到缺口图js_hide_slice = 'document.getElementsByClassName("geetest_canvas_slice")[0].style.display="none"'driver.execute_script(js_hide_slice)#截取缺口图part_imgpath="./part.png"driver.find_element_by_class_name("geetest_canvas_bg").screenshot(part_imgpath)# (2)显示滑块  隐藏缺口图  得到滑块图js_show_slice = 'document.getElementsByClassName("geetest_canvas_slice")[0].style.display="block"'js_hide_part= 'document.getElementsByClassName("geetest_canvas_bg")[0].style.display="none"'driver.execute_script(js_show_slice+";"+js_hide_part)# 截取滑块图slice_imgpath = "./slice.png"driver.find_element_by_class_name("geetest_canvas_slice").screenshot(slice_imgpath)# (3)显示完整图js_show_full1 = 'document.getElementsByClassName("geetest_canvas_fullbg")[0].style.display="block"'js_show_full2 = 'document.getElementsByClassName("geetest_canvas_bg")[0].style.opacity="1"'driver.execute_script(js_show_full1+";"+js_show_full2)# 截取完整图full_imgpath = "./full.png"driver.find_element_by_class_name("geetest_canvas_fullbg").screenshot(full_imgpath)#还原  目的 还原成原来的模样  包含缺口图与滑块js_hide_full1 = 'document.getElementsByClassName("geetest_canvas_fullbg")[0].style.display="none"'js_hide_full2 = 'document.getElementsByClassName("geetest_canvas_fullbg")[0].style.opacity="0"'js_show_part = 'document.getElementsByClassName("geetest_canvas_bg")[0].style.display=""'driver.execute_script(js_hide_full1 + ";" + js_hide_full2+ ";"+js_show_part)return part_imgpath,slice_imgpath,full_imgpath

计算距离

​ 计算缺口位置,滑块位置,滑块要移动的距离

确定距离

距离=滑块左边缘与缺口左边缘之间的距离
distance=滑块左边缘X坐标-缺口左边缘X坐标

代码演示

计算距离代码 滑块左边缘X坐标 缺口左边缘X坐标

模拟人工移动

​ 通过算法模拟人工移动的轨迹

  • 直接根据获取到的距离移动,滑块与缺口能够契合,但是不能通过
  • 牛顿运动定律模拟人工移动,偶尔有通过,概率低;
  • 增加随机性模拟人工移动轨迹,通过概率高

直接根据距离移动

直接移动

牛顿运动定律构造轨迹

拖动时的速度要平滑变化,开始变快,后来变慢,最后可能拖过头然后回拖,则速度可能为负,抛物线只是一种方案,轨迹方案体现出开发者对自己拖动滑块时速度变化的理解。


这里可能要稍微用一点高中的物理知识,不知道大家还能不能回忆起来。下面这张图横坐标是t就是时间,纵坐标是v就是速度,那么在这张图里用来表示加速度的应该是什么啊,就应该是这条抛物线上每个点在这条线上的切线的斜率对吧,这个应该还是能理解的吧。


非匀变速 匀变速

代码实现

获取运动轨迹 获取运动轨迹 获取运动轨迹

增加运动随机性

增加运动随机性

selenium操作

移动滑块

移动滑块代码实现

移动卡顿问题

代码在运行的过程中可能会出现卡顿的问题,解决方法是修改pointer_input.py文件中的DEFAULT_MOVE_DURATION的值,把这个值改小一点,这个值的主要作用是控制花费多少毫秒来完成移动鼠标的动作。

路径:C:\ProgramData\Anaconda3\envs\spider\Lib\site-packages\selenium\webdriver\common\actions\pointer_input.py

移动卡顿问题解决

总结

  • 获取验证码图片,包含缺口图,滑块图,完整图
  • 计算缺口位置,滑块位置,滑块要滑动的距离
  • 通过算法模拟人工移动轨迹
  • 通过selenium模拟操作

22、关于破解滑动的验证码相关推荐

  1. 爬虫之极验验证码破解-滑动拼图验证码破解

    滑动拼图验证码破解 前言 步骤分析 第一步,获取原图 第二步 拼接图片 第三步 计算豁口所在位置 第四步 计算拖动距离 模拟拖动 其他 前言 滑动验证码已经流行很多年了,我们在这里尝试一下如何实现滑动 ...

  2. 用Python爬虫破解滑动验证码

    我们可以借用opencv来解决这个问题,主要步骤: opencv 是什么? OpenCV(Open Source Computer Vision Library)是开放源代码计算机视觉库,主要算法涉及 ...

  3. Python破解滑动验证码(极验/无背景图)

    在使用Python突破人机验证时,验证码乃第一大关卡.本文针对破解滑动验证码展开分析.对于能够直接获取滑块小图与背景图的滑动验证码,通过使用cv2模块的matchTemplate函数,可以准确地计算出 ...

  4. 如何破解滑动验证码?

    本文通过自动化查询域名或公司的备案信息,来演示其中图片滑动验证码的破解方式,以此来思考验证码的安全性问题,思考如何设计出安全性更高的验证码. 注意:破解验证码进行网络内容抓取可能是一种违规行为,可以以 ...

  5. 破解滑动验证码,成功率在百分之九十九

    破解滑动验证码 使用python破解滑动验证码后获取cookie, 用于爬取数据,这里是获取到cookie存到redis,不费话了,上代码 import re import redis from se ...

  6. Python破解12306图片验证码

    不知从何时起,12306的登录验证码竟然变成了按字找图,可以说是又提高了一个等次,竟然把图像识别都用上了.不过有些图片,不得不说有些变态,图片的清晰图就更别说了,明显是从网络上的图库中搬过来的. 谁知 ...

  7. 爬虫入门经典(十九) | 难度提升,破解极验验证码

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  8. 滑动拼图验证码操作步骤:_拼图项目:一个不完整的难题

    滑动拼图验证码操作步骤: 马克·雷因霍尔德(Mark Reinhold)最近提议延迟Java 9,以花更多的时间完成项目Jigsaw,这是即将发布的版本的主要功能. 虽然这个决定肯定会使Java的厄运 ...

  9. 滑动拼图验证码操作步骤:_拼图项目:延期的后果

    滑动拼图验证码操作步骤: Mark Reinhold先生于2012年7月宣布 ,他们计划从Java 8撤消Jigsaw项目 ,因为Jigsaw计划于2013年9月(从现在开始一年)推迟其发布. 这个日 ...

最新文章

  1. Keep Walking!
  2. java随机生成10个不重复的数字,随机生成10个不重复的0-100的数字(实例讲解)
  3. [组件] TopN 排行榜
  4. 屌丝就爱尝鲜头——java8初体验
  5. Python函数学习
  6. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上
  7. 春节期间的学习小目标
  8. Linux 下 Weblogic 的安装 、配置以及发布
  9. oneno浏览器插件_onenote 插件-onenote clipper for chrome下载 v2.1.3官方版--pc6下载站
  10. Java之美[从蛮荒到撬动地球]之设计模式三
  11. 蓝桥杯练习------python字符串逆序
  12. 威廉玛丽大学计算机本科专业,威廉玛丽学院本科专业有哪些?
  13. 《使命召唤》手游滑铲怎么释放?什么时候使用滑铲更好?
  14. java实现发送手机验证码功能
  15. w10计算机怎么恢复出厂设置路由器,win10无线路由器设置步骤图_win10重置路由器后怎么设置...
  16. 没有金三银四,又要迎接所谓的金九银十,今年大环境这么差,Java岗必备面试题及答案学习还是得学
  17. 模拟退火算法及常见应用
  18. 正则表达式替换字符串中的${}里面的数据
  19. AI每日小练习之磨砂玻璃质感图标
  20. 2018年工科生推免保研经历记录(含西交,上交,北航,浙大和清华等)

热门文章

  1. TensorFlow 机器学习秘籍第二版:1~5
  2. audio 上一首 下一首 自定义样式_请问我下面的js代码点击下一首按钮的时候怎么播放下一首...
  3. java的session问题
  4. lua把userdata写入mysql_Lua 之 userdata
  5. 大学“电路分析基础”试题合集第七章
  6. 学习python的第一步
  7. M302A-CW/BYT-通刷S905L3(B)-当贝纯净桌面卡刷固件包
  8. LRU 缓存机制实现:哈希表 + 双向链表
  9. android编译命令及.mk文件浅析
  10. 尚硅谷云原生学习笔记(1-75集)