Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【原创】Python 极验滑块验证

【原创】Python 极验滑块验证

原创
作者头像
拉灯的小手
发布于 2022-05-09 07:09:40
发布于 2022-05-09 07:09:40
1.7K06
代码可运行
举报
运行总次数:6
代码可运行

本文仅供学习交流使用,如侵立删!


记一次 极验滑块验证分析并通过

操作环境

  • win10 、 mac
  • Python3.9
  • selenium、seleniumwire

分析

最近在做的一个项目登录时会触发一个滑块验证,就长下面这个样子

可以很明显的看出来是极验3代验证,借助之前写阿里云盾的经验使用selenium+pyautoui先测试一下,详细可参考:阿里云盾滑块验证

直接提示被怪物吃掉了!!! 还是先来研究一下官方文档看一下验证的业务逻辑:极验验证接入文档

本以为是检测到了selenium,手动测试了一下发现是可以滑过的,那就是说明应该是滑动的轨迹触发了风控。

分析了一波效验规则及原理,搞明白原理就好办了

解决方案

使用selenium请求url,并触发滑块验证
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def open(self):
   """
    登录模块
    """
    # 定位密码登录
    self.driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div/div/div[1]/div[2]').click()
    # 输入账号
    username = '123456'
    self.driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div/div/div[2]/div[1]/form/div[1]/div/div/input').send_keys(username)
    time.sleep(1)
    # 输入密码
    password = '123456789'
    self.driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div/div/div[2]/div[1]/form/div[2]/div/div/input').send_keys(password)
    time.sleep(1)
    # 登录
    self.driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div/div/div[2]/div[3]/button').click()
获取验证图片并计算滑块距离
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_images(self):
   """
   获取验证码图片
   :return: 图片的location信息
   """
   # 带缺口图片,使用js定位并读取图片的data信息 data:image/png;base64,直接调用识别缺口
   fullgb = self.driver.execute_script('return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png")')
   # 完整图片,使用js定位并读取图片的data信息 data:image/png;base64,直接调用识别缺口
   bg = self.driver.execute_script('return document.getElementsByClassName("geetest_canvas_fullbg geetest_fade geetest_absolute")[0].toDataURL("image/png")')
   return bg, fullgb
​
def get_decode_image(self, location_list):
   """
   解码图片的base64数据
   """
   # 提取图片base64数据
   _, img = location_list.split(",")
   # 数据转换为Bytes字节
   img = base64.decodebytes(img.encode())
   # 读取图片
   new_im: PngImagePlugin.PngImageFile = image.open(BytesIO(img))
   # new_im.convert("RGB")
   # new_im.save(filename)
   return new_im
​
def compute_gap(self, img1, img2):
   """
   计算缺口偏移 这种方式成功率很高
   """
   # 将图片修改为RGB模式
   img1 = img1.convert("RGB")
   img2 = img2.convert("RGB")
   # 计算差值
   diff = ImageChops.difference(img1, img2)
   # 灰度图
   diff = diff.convert("L")
   # 二值化
   diff = diff.point(self.table, '1')
   left = 43
   for w in range(left, diff.size[0]):
       lis = []
       for h in range(diff.size[1]):
           if diff.load()[w, h] == 1:
               lis.append(w)
           if len(lis) > 5:
               return w
生成滑动轨迹
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_tracks(self, distance, seconds, ease_func):
    """
    :param distance: 缺口位置
    :param seconds:  时间
    :param ease_func: 生成函数
    :return: 轨迹数组
    """
    tracks = [0]
    offsets = [0]
    for t in np.arange(0.0, seconds, 0.1):
        ease = ease_func
        offset = round(ease(t / seconds) * distance)
        tracks.append(offset - offsets[-1])
        offsets.append(offset)
    return tracks
滑动模块
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def move_to_gap(self, track):
     """滑动滑块"""
     print('第一步,点击滑动按钮')
     slider = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_slider_button')))
     ActionChains(self.driver).click_and_hold(slider).perform()
     time.sleep(1)
     print('第二步,拖动元素')
     for track in track:
         ActionChains(self.driver).move_by_offset(xoffset=track, yoffset=0).perform()  # 鼠标移动到距离当前位置(x,y)
         time.sleep(0.0001)

效果

完美解决


资源下载

https://download.csdn.net/download/qq_38154948/85328666


本文仅供学习交流使用,如侵立删!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
爬虫模拟登录破解无原图滑动验证码
大体思路:以前的滑动验证码多为有原图的验证码,可以通过Image模块截取两张不同的图,通过对比像素得出移动的距离,无原图验证码也是基于这个原理,只是多了一步找出原图,该操作可以通过driver.execute_script()添加JS代码,改变display显示获得原图,然后就变成了有原图的滑动验证码的操作流程。
forxtz
2020/10/10
2.4K0
爬虫模拟登录破解无原图滑动验证码
Python爬虫入门教程 59-100 python爬虫高级技术之验证码篇5-极验证识别技术之二
昨天的博客已经将图片存储到了本地,今天要做的第一件事情,就是需要在两张图片中进行比对,将图片缺口定位出来
梦想橡皮擦
2019/04/23
7830
Python爬虫入门教程 59-100 python爬虫高级技术之验证码篇5-极验证识别技术之二
python入门教程 - 滑块实战
GIF效果:https://tva2.sinaimg.cn/large/007F3CC8ly1h0ku3yh9g5g31ex0pfwus.gif
JavaPub
2022/03/25
4640
python入门教程 - 滑块实战
Python爬虫入门教程 58-100 python爬虫高级技术之验证码篇4-极验证识别技术之一
今天要搞定的验证码属于现在使用非常多的验证码的一种类型---极验证滑动验证码,关于这个验证码的详细说明查阅他的官网,https://www.geetest.com/ 把验证码做到这个地步,必须点赞了。
梦想橡皮擦
2019/04/18
1.1K0
Python爬虫入门教程 58-100 python爬虫高级技术之验证码篇4-极验证识别技术之一
高阶爬虫实战:破解极验滑动验证码
今天给大家带来的是极验验证码的selenium破解之法,是不是有点小激动呢,小伙伴们等不及了,让我们赶紧直入主题吧。
Python中文社区
2018/07/27
2.9K0
高阶爬虫实战:破解极验滑动验证码
极验验证码破解分析
任何一个网站,如果在登录时网站接入的极验的接口,那么该网站就可以使用极验验证码进行登录,此时极验验证码API就会返回两个极验参数,gt和challenge,这两个参数只跟极验验证码API相关,跟这个网站没有任何关系。
周小董
2019/08/18
4.7K0
爬虫项目:破解极验滑动验证码
一 介绍     一些网站会在正常的账号密码认证之外加一些验证码,以此来明确地区分人/机行为,从一定程度上达到反爬的效果,对于简单的校验码Tesserocr就可以搞定,如下     但一些网站加入了滑
用户1214487
2018/01/24
5.4K0
爬虫项目:破解极验滑动验证码
python + selenium 爬虫模拟登录破解无原图滑动验证码
爬虫模拟登录破解无原图滑动验证码: https://www.cnblogs.com/98WDJ/p/11050559.html
forxtz
2020/10/10
2.4K0
python + selenium 爬虫模拟登录破解无原图滑动验证码
[428]极验验证码识别
很多网站的登陆都有验证码一项,而极验的方案就是应用的非常普遍。更多的场景是在反爬虫的对抗中,极客验证码更是首选。本次目标则是用程序来识别并通过极验验证码的验证。本次使用的是Python库是selenium库,Chrome浏览器,并配置好ChromeDriver。极验验证码官网为:https://auth.geetest.com/login/。它是一个专注于提供验证安全的系统,主要验证方式是拖动滑块拼合图像。若图像完全拼合,则验证成功,即表单成功提交,否则需要重新验证,如图所示:
周小董
2022/04/13
1.9K0
[428]极验验证码识别
爬虫进阶教程:极验(GEETEST)验证码破解教程
原文链接及原作者:爬虫进阶教程:极验(GEETEST)验证码破解教程 | Jack Cui
圆方圆PYTHON学院
2018/12/24
7.1K0
爬虫进阶教程:极验(GEETEST)验证码破解教程
基于selenium自动化的滑动验证码破解
截图,分别截图,完整的时候截一次图(截图全屏),不用管是否乱序,获取图片的坐标,将截图再次按照坐标截图处理,这样就能获得完整的图和有缺口的图。
andrew_a
2019/07/30
1.7K0
基于selenium自动化的滑动验证码破解
GitHub 超级火:超全开源爬虫工具箱!
最近国内一位开发者在 GitHub 上开源了个集众多数据源于一身的爬虫工具箱——InfoSpider,一不小心就火了!!!
我被狗咬了
2020/11/04
7340
GitHub 超级火:超全开源爬虫工具箱!
Python 破解极验滑动验证码
以上图片是最典型的要属于极验滑动认证了,极验官网:http://www.geetest.com/。
测试开发社区
2019/09/20
2.6K0
Python 破解极验滑动验证码
Python之极验滑动验证码的识别(教程+案例)
1 滑动验证码的识别介绍 本节目标:用程序识别极验滑动验证码的验证,包括分析识别思路、识别缺口位置、生成滑块拖动路径、模拟实现滑块拼合通过验证等步骤。 准备工作:本次案例我们使用Python库是Selenium,浏览器为Chrome。请确保已安装Selenium库和ChromeDriver浏览器驱动。 了解极验滑动验证码: 极验滑动验证码官网为:http://www.geetest.com/ 验证方式为拖动滑块拼合图像,若图像完全拼合,则验证成功,否则需要重新验证,如图所示: image.png 接下来
Python知识大全
2020/02/13
3.4K3
Python之极验滑动验证码的识别(教程+案例)
Python爬虫之极验滑动验证码的识别
上节我们了解了可以直接利用 tesserocr 来识别简单的图形验证码。近几年出现了一些新型验证码,其中比较有代表性的就是极验验证码,它需要拖动拼合滑块才可以完成验证,相对图形验证码来说识别难度上升了几个等级。本节将讲解极验验证码的识别过程。
仲君Johnny
2024/02/22
8280
Python爬虫之极验滑动验证码的识别
新版滑动验证码
今天的主角是滑动验证码,现在有很多网站使用了极验验证码来智能反爬虫,其中有一种是滑动验证码,具体来说就是拖动滑块来拼合图像,若图像完全拼合,则验证成功。下图是B站的登录验证码,便是采用了极验的滑动验证码,一起来看看如何破解吧!
老肥码码码
2020/01/17
4.7K0
新版滑动验证码
【原创】Python 网易易盾滑块验证 ------
话不多少,借助之前写阿里云盾滑块和极验滑块的经验,直接上代码,详细可参考:阿里云盾滑块验证(https://cenjy.blog.csdn.net/article/details/124664094)(https://cenjy.blog.csdn.net/article/details/124357598)
拉灯的小手
2022/05/11
1.5K0
selenium 模拟滑块验证码
slider-captcha/slider_captcha.py at master · maxnoodles/slider-captcha (github.com)
卓越笔记
2023/02/22
1.2K0
python 爬虫之验证码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
云雀叫了一整天
2019/09/29
8170
极验验证码破解之selenium
这一篇写完很久了,因为识别率一直很低,没办法拿出来见大家,所以一直隐藏着,今天终于可以拿出来见见阳光了。
星星在线
2018/08/21
1.7K0
极验验证码破解之selenium
相关推荐
爬虫模拟登录破解无原图滑动验证码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验