破解极验滑动验证码

匿名 (未验证) 提交于 2019-12-03 00:29:01

对于这类验证,如果我们直接模拟表单请求,繁琐的认证参数与认证流程会让你蛋碎一地,我们可以用selenium驱动浏览器来解决这个问题,大致分为以下几个步骤

  1. #步骤一:点击按钮,弹出没有缺口的图片
  2. #步骤二:获取步骤一的图片
  3. #步骤三:点击滑动按钮,弹出带缺口的图片
  4. #步骤四:获取带缺口的图片
  5. #步骤五:对比两张图片的所有RBG像素点,得到不一样像素点的x值,即要移动的距离
  6. #步骤六:模拟人的行为习惯(先匀加速拖动后匀减速拖动),把需要拖动的总距离分成一段一段小的轨迹
  7. #步骤七:按照轨迹拖动,完全验证
  8. #步骤八:完成登录

  1. #安装:selenium+chrome/phantomjs
  2. #安装:Pillow
  3. 3.x2.x
  4. http://www.cnblogs.com/apexchu/p/4231041.html
  5. 3.6.16.1:69c0db521201718:41:36190064
  6. "help""copyright""credits"or"license"for
  7. fromimport

  1. fromimport
  2. fromimport
  3. fromimport
  4. fromimport
  5. fromimport
  6. fromimport
  7. fromimport
  8. import
  9. def
  10. '''''
  11. 'snap.png'
  12. 'snap.png'
  13. return
  14. def
  15. '''''
  16. 'geetest_canvas_img'
  17. 2#保证图片刷新出来
  18. 'y'
  19. 'y']+size['height'
  20. 'x'
  21. 'x']+size['width'
  22. return
  23. def
  24. '''''
  25. 60
  26. 57
  27. forin0
  28. forin1
  29. 0]-rgb2[0
  30. 1]-rgb2[1
  31. 2]-rgb2[2
  32. ifnotandand
  33. return7#经过测试,误差为大概为7
  34. return7#经过测试,误差为大概为7
  35. def
  36. '''''
  37. #初速度
  38. 0
  39. #单位时间为0.2s来统计轨迹,轨迹即0.2内的位移
  40. 0.3
  41. #位移/轨迹列表,列表内的一个元素代表0.2s的位移
  42. #当前的位移
  43. 0
  44. #到达mid值开始减速
  45. 4/5
  46. while
  47. if
  48. 2
  49. else
  50. 3
  51. #初速度
  52. #0.2秒时间内的位移
  53. 0.5*a*(t**2
  54. #当前的位置
  55. #添加到轨迹列表
  56. #速度已经达到v,该速度作为下次的初速度
  57. return
  58. try
  59. 'https://account.geetest.com/login'
  60. 10
  61. #步骤一:先点击按钮,弹出没有缺口的图片
  62. 'geetest_radar_tip'
  63. #步骤二:拿到没有缺口的图片
  64. #步骤三:点击拖动按钮,弹出有缺口的图片
  65. 'geetest_slider_button'
  66. #步骤四:拿到有缺口的图片
  67. #步骤五:对比两张图片的所有RBG像素点,得到不一样像素点的x值,即要移动的距离
  68. #步骤六:模拟人的行为习惯(先匀加速拖动后匀减速拖动),把需要拖动的总距离分成一段一段小的轨迹
  69. print
  70. print
  71. print
  72. #步骤七:按照轨迹拖动,完全验证
  73. 'geetest_slider_button'
  74. forin
  75. 0
  76. else
  77. 3,yoffset=0#先移过一点
  78. 3,yoffset=0#再退回来,是不是更像人了
  79. 0.5#0.5秒后释放鼠标
  80. #步骤八:完成登录
  81. 'email'
  82. 'password'
  83. 'login-btn'
  84. '18611453110@163.com'
  85. 'linhaifeng123'
  86. import
  87. 200
  88. finally

案例:

  1. page_snap_obj=Image
  2. img=driver
  3. location=img
  4. size=img
  5. left=location
  6. top=location
  7. right=left
  8. bottom=top
  9. page_snap_obj=get_snap
  10. image_obj=page_snap_obj
  11. start=57
  12. threhold=60
  13. rgb1=image1
  14. rgb2=image2
  15. res1=abs
  16. res2=abs
  17. res3=abs
  18. <threhold<threhold<threhold
  19. v=0
  20. t=0
  21. forward_tracks
  22. current=0
  23. mid=distance
  24. <distance:
  25. <mid:
  26. a=2
  27. a
  28. s=v
  29. v=v
  30. back_tracks
  31. driverwebdriver
  32. usernamedriver
  33. pwddriver
  34. signindriver
  35. buttondriver
  36. image1get_image
  37. buttondriver
  38. image2get_image
  39. distanceget_distance
  40. tracksget_tracks
  41. buttondriver
  42. xoffset=trackyoffset=0
  43. xoffset=back_trackyoffset=0
  44. xoffsetyoffset=0
  45. xoffset=3yoffset=0

  1. fromimport
  2. fromimport
  3. fromimport
  4. fromimport
  5. fromimport
  6. fromimport
  7. fromimport
  8. import
  9. def
  10. 'full_snap.png'
  11. 'full_snap.png'
  12. return
  13. def
  14. 'geetest_canvas_img'
  15. 2
  16. 'x'
  17. 'y'
  18. 'width'
  19. 'height'
  20. return
  21. def
  22. 57
  23. 60
  24. forin0
  25. forin1
  26. 0]-rgb2[0
  27. 1]-rgb2[1
  28. 2]-rgb2[2
  29. ifnotandand
  30. return7
  31. return7
  32. def
  33. 20#先滑过一点,最后再反着滑动回来
  34. 0
  35. 0.2
  36. 0
  37. 3/5
  38. while
  39. if
  40. 2
  41. else
  42. 3
  43. 0.5*a*(t**2
  44. #反着滑动到准确位置
  45. 3,-3,-2,-2,-2,-2,-2,-1,-1,-1#总共等于-20
  46. return'forward_tracks':forward_tracks,'back_tracks'
  47. def#破解滑动认证
  48. 'geetest_radar_tip'
  49. 'geetest_slider_button'
  50. print
  51. 'geetest_slider_button'
  52. forin'forward_tracks'
  53. 0
  54. 0.5
  55. forin'back_tracks'
  56. 0
  57. 30
  58. 30
  59. 0.5
  60. def
  61. try
  62. 3
  63. 'https://passport.cnblogs.com/user/signin'
  64. 'input1'
  65. 'input2'
  66. 'signin'
  67. 10
  68. finally
  69. if'__main__'
  70. 'linhaifeng',password='xxxx'

  面对简单的滑动验证码,极验其实是有更复杂版本的,如下所示

使用了上述验证的网站常常会在用户一片怨声载道中,又将其恢复成易于破解的滑动验证。


嘲讽验证码无效,破解简单,是很 LOW 的行为。

网站方、验证码平台方,知道你能破解,你牛 B。。。更难的验证码他们也有,只是这会严重降低体验,他们不用而已。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!