Python 网易易盾滑块验证功能的实现

目录
  • 操作环境
  • 分析
  • 解决方案
    • 使用selenium请求url,并触发滑块验证
    • 获取验证图片并计算滑块距离
    • 生成滑动轨迹
    • 滑动模块
  • 效果
  • 资源下载

记一次 网易易盾滑块验证分析并通过

操作环境

  • win10 、 mac
  • Python3.9
  • selenium、PIL、numpy、scipy、matplotlib

分析

网易易盾滑块验证,就长下面这个样子

具体验证原理有兴趣的可自行查询官方文档:网易易盾开发文档

话不多少,借助之前写阿里云盾滑块和极验滑块的经验,直接上代码,详细可参考:[python3 破解 geetest(极验)的滑块验证码功能]极验滑块验证

解决方案

使用selenium请求url,并触发滑块验证

def open(self):
    # 初始化浏览器
    wait = WebDriverWait(self.driver, 5)
     # 点击对应标签
     self.driver.get(cfg.TEST_URL)
     button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cfg.HD_SELECOTR)))
     button.click()
     self.tc_item = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cfg.TC_SELECOTR)))
     self.tc_item.click()

     # 得到背景和滑块的item, 以及滑动按钮
     time.sleep(2)
     self.background_item = wait.until(
         EC.presence_of_element_located((By.CSS_SELECTOR, cfg.BG_SELECOTR))
     )
     self.slider_item = wait.until(
         EC.presence_of_element_located((By.CSS_SELECTOR, cfg.HK_SELECOTR))
     )
     self.slider_btn = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, cfg.HD_BTN)))
     self.offset = cfg.offset
     self.background_path = cfg.background_path
     self.slider_path = cfg.slider_path

获取验证图片并计算滑块距离

def get_images(self):
   """
   获取验证码图片
   :return: 图片的location信息
   """
    url = selenium_item.get_attribute("src")
    if url is not None:
        response = requests.get(url)
        with open(path, "wb") as f:
            f.write(response.content)
        img = Image.open(path).resize(size)
        img.save(path)
    else:
        class_name = selenium_item.get_attribute("class")
        js_cmd = (
            'return document.getElementsByClassName("%s")[0].toDataURL("image/png");'
            % class_name
        )
        im_info = self.driver.execute_script(js_cmd)
        im_base64 = im_info.split(",")[1]
        im_bytes = base64.b64decode(im_base64)
        with open(path, "wb") as f:
            f.write(im_bytes)
        img = Image.open(path).resize(size)
        img.save(path)

def compute_gap(self, array):
   """
   计算缺口偏移
   """
   grad = np.array(array > 0)
    h, w = grad.shape
    # img_show(grad)
    rows_sum = np.sum(grad, axis=1)
    cols_sum = np.sum(grad, axis=0)
    left, top, bottom = 0, 0, h
    # get the top index
    p = np.max(rows_sum) * 0.5
    for i in range(h):
        if rows_sum[i] > p:
            top = i
            break
    for i in range(h - 1, -1, -1):
        if rows_sum[i] > p:
            bottom = i
            break
    p = np.max(cols_sum) * 0.5
    for i in range(w):
        if cols_sum[i] > p:
            left = i
            break
    return top, bottom + 1, left

生成滑动轨迹

def get_tracks(distance):
    v = random.randint(0, 2)
    t = 1
    tracks = []
    cur = 0
    mid = distance * 0.8
    while cur < distance:
        if cur < mid:
            a = random.randint(2, 4)
        else:
            a = -random.randint(3, 5)
        s = v * t + 0.5 * a * t ** 2
        cur += s
        v = v + a * t
        tracks.append(round(s))
    tracks.append(distance - sum(tracks))
    return tracks

滑动模块

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/85343666

到此这篇关于Python 网易易盾滑块验证功能的实现的文章就介绍到这了,更多相关Python 易盾滑块验证内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 模拟网站登录——滑块验证码的识别

    普通滑动验证 以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简单.拖动之前需要先将滚动条滚动到指定元素位置. import time from selenium import webdriver from selenium.webdriver import ActionChains # 新建selenium浏览器对象,后面是geckodriver.exe下载后本地路径 browser = webdriver.Fire

  • python 密码验证(滑块验证)

    目录 题目描述: 解题思路/算法分析/问题及解决 实验代码 题目描述: (1)模拟登陆界面,判别用户名和密码,给出合适的提示,如果超过三次,锁定输入.用代替密码:或者最新输入显示,前面的变成:安全性措施.(2)同时添加如下图的加强验证(京东).(3)在触动滚动条时再出现空缺位置. 拓展: 增加注册页面,可供用户注册新用户 增加数字验证码区别人机 解题思路/算法分析/问题及解决 滑块验证就是将滑块的移动和图片小块的移动相绑定,在滑块松开时触发相对应的检查函数,为了有一定的容错率,设定滑块的位置与设

  • Python实现滑块验证码详解

    目录 本节要讲解如下图所示的滑块验证码(更为复杂的滑动拼图验证码在2.4节介绍).这种验证码机制比较简单:将滑块拖动到滑轨的最右端即可完成验证,如下图所示.如果未将滑块拖动到滑轨的最右端,则无法通过验证,验证失败后滑块会回到起始位置. 其中的关键是需要用Selenium库模拟鼠标拖动滑块滑动一定的距离.因为滑块的起始位置和滑轨的起始位置相同,所以滑块需要移动的距离等于滑轨的跨度减去滑块的宽度.下面就来利用开发者工具查看滑轨和滑块的宽度. 在浏览器中打开本书配套代码文件中为滑块验证码搭建的本地网页

  • python实现腾讯滑块验证码识别

    腾讯滑块验证码识别,识别凹槽的x轴位置,mock滑块的加速度.该项目公开API,提供识别和加速度模拟部分,第二部分模拟滑动进行识别返回数据请求 项目地址:https://github.com/zhaojunlike/python-tecent-slider-crack 安装python环境 参考:https://janikarhunen.fi/how-to-install-python-3-6-1-on-centos-7 sudo yum install https://centos7.iusc

  • 如何用python识别滑块验证码中的缺口

    验证码往往是爬虫路上的一只拦路虎,而其花样也是层出不穷:图片验证.滑块验证.交互式验证.行为验证等.随着OCR技术的成熟,图片验证已经渐渐淡出主流,而滑块验证越来越多地出现在大众视野. "这么厉害,这小子长啥样呢?"没错,它就长这损sai: 解决它的方法也很直观,首先找到缺口的位置(通常只需要X轴的位置),然后拖动滑块即可. 今天kimol君将带领大家用python识别出滑块验证中的缺口位置. 一.缺口识别 识别图片中的缺口,主要是利用python中的图像处理库cv2,其安装方法如下:

  • Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)

    一.滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展.而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术.其实验证码的英文为 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),翻译成中文就是全自动区分计算机和人类的公开图灵测试,它是一种可以区分用户是计算机还是人的测试,只要能通

  • 利用Python+Selenium破解春秋航空网滑块验证码的实战过程

    目录 前言 开发工具 环境搭建 实战记录 一. 验证码简介 二.破解滑块验证码 2.1 计算滑块到缺口的距离 2.2 将滑块拖到缺口位置 前言 记录一次利用Python+Selenium破解滑块验证码的实战过程. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: pillow模块: selenium模块: numpy模块: 以及一些Python自带的模块. 其他: chromedriver 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 实战

  • Python 网易易盾滑块验证功能的实现

    目录 操作环境 分析 解决方案 使用selenium请求url,并触发滑块验证 获取验证图片并计算滑块距离 生成滑动轨迹 滑动模块 效果 资源下载 记一次 网易易盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.PIL.numpy.scipy.matplotlib 分析 网易易盾滑块验证,就长下面这个样子 具体验证原理有兴趣的可自行查询官方文档:网易易盾开发文档 话不多少,借助之前写阿里云盾滑块和极验滑块的经验,直接上代码,详细可参考:[python3

  • 详解Python结合Genetic Algorithm算法破解网易易盾拼图验证

    首先看一下目标的验证形态是什么样子的 是一种通过验证推理的验证方式,用来防人机破解的确是很有效果,但是,But,这里面已经会有一些破绽,比如: (以上是原图和二值化之后的结果) (这是正常图片) 像划红线的这些地方,可以看到有明显的突变,并且二值化之后边缘趋于直线,但是正常图像是不会有这种这么明显的突变现象. 初识潘多拉 后来,我去翻阅了机器视觉的相关文章和论文,发现了一个牛逼的算法,这个算法就是——Genetic Algorithm遗传算法,最贴心的的是,作者利用这个算法实现了一个功能,“拼图

  • 使用java + selenium + OpenCV破解网易易盾滑动验证码的示例

    网易易盾:dun.163.com * 验证码地址:https://dun.163.com/trial/jigsaw * 使用OpenCv模板匹配 * Java + Selenium + OpenCV 产品样例 接下来就是见证奇迹的时刻! 注意!!! · 在模拟滑动时不能按照相同速度或者过快的速度滑动,需要向人滑动时一样先快后慢,这样才不容易被识别. 模拟滑动代码↓↓↓ /** * 模拟人工移动 * @param driver * @param element页面滑块 * @param dista

  • 基于JS组件实现拖动滑块验证功能(代码分享)

    拖动滑块验证功能在支付宝,微信各大平台都能见到这样的功能,那么基于js组件是如何实现此功能的呢?今天小编就给大家分享下js 拖动滑块 验证功能的实现代码,具体代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Cache-Control" content="no-cache, no-store, m

  • Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

    vue验证滑块功能,在生活中很多地方都可以见到,那么使用起来非常方便,基于vue如何实现滑块验证呢?下面通过代码给大家讲解. 效果图如下所示: 拖动前 拖动后 代码引用的css与js都是线上的 将代码全部复制到一个html中可以直接打开,极其简单. 来分析一下代码 底色div上放了一个变色div再放一个提示字的div最后加一个滑块div 给滑块div绑定鼠标移动事件 <!DOCTYPE html> <html> <head> <meta charset="

  • 使用konva和vue-konva库实现拖拽滑块验证功能

    1. 在vue项目中安装konva和vue-konva库 npm install konva vue-konva --save-dev 2. 引入vue-konva库 import VueKonva from 'vue-konva': Vue.use(VueKonva) 3. 创建单独的滑块验证组件 Captcha.vue,在相应的页面中引入使用即可 <template> <v-stage :config="Config.stage"> <v-layer

  • JavaScript实现拼图式滑块验证功能

    目录 演示 前戏 源码介绍 主页样式设计 滑块验证部分 img_ver内部 演示 前戏 滑块验证码是在网站.APP等应用中常见的一种验证方式,通过按照一定规则滑动滑块到指定位置完成验证,才可以进行下一步操作.滑块验证码有两种设计,一种是在滑动框内“一滑到底”即完成验证的,还有一种是滑动滑块拼合拼图完成验证的.由于拼图式的滑块验证码安全性更高,趣味性更强,所以多数网站或APP都选择了拼图式的滑块验证码. 拼图式的滑块验证码在业务应用中有三种展现形式,触发式.嵌入式和弹出式.触发式即鼠标光标移入验证

  • js仿网易表单及时验证功能

    今天研究了网易"用户注册表单"与"及时验证功能",不得不说,无论是它的布局结构,还是验证功能,都是刷新了本真人的眼界,居然可以这样! 来图镇楼! html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.or

  • python3.8.1+selenium实现登录滑块验证功能

    python3.8.1+selenium解决登录滑块验证的问题,先给大家分享一个效果图,感觉不错,可以参考实现代码. 这里的滑块是qq邮箱的截图,如图所示,可以作为同类滑块验证的参考. """ auther = "zwb",这里使用的python版本是3.8.1,selenium版本是3.141.0,webdriver是谷歌,版本是81.0.4044.138(正式版本) (64 位) webdriver各版本对应的浏览器下载地址:https://npm.t

  • js实现移动端图片滑块验证功能

    之前写过一篇uniapp框架的滑块验证,今天抽个空用原生js实现这个功能,pc端暂时不做,因为pc端只要把touch事件改成mouse事件就能实现,这里就不再重复写了. (最新完美版本,js+canvas实现,兼容pc,ie9和移动,js+cavans实现图片滑块验证) 老样子,还是先看效果 原理和上篇uniapp的滑块一样,不一样的是这里是纯js实现,代码是全部是自己写的,有不清楚的可以留言. 下面是全部代码: html: <!DOCTYPE html> <html lang=&quo

随机推荐