返回顶部
首页 > 资讯 > 精选 >怎么使用selenium+opencv实现滑块验证码的登陆
  • 428
分享到

怎么使用selenium+opencv实现滑块验证码的登陆

2023-07-06 02:07:25 428人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“怎么使用selenium+OpenCV实现滑块验证码的登陆”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用selenium+opencv实现滑块验证码的登陆”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入

本文小编为大家详细介绍“怎么使用selenium+OpenCV实现滑块验证码的登陆”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用selenium+opencv实现滑块验证码的登陆”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

环境

python 3.9, selenium和Opencv相关依赖,用于抓取图片的requests包,具体安装这里不多讲了,其中selenium用的火狐版本。

selenium登录网站

整体流程就是这个样子:访问网站->点击登录->输入账号密码->搞定滑块验证->登录网站,其中最大的难点是滑块验证码,但在此之前我们当然要先让selenium自动打开网站把账号密码输好,我们通过find_element()方法定位输入框之后执行操作,元素的各个属性F12就可以找到:

怎么使用selenium+opencv实现滑块验证码的登陆

代码如下:

options = WEBdriver.FirefoxOptions()driver = webdriver.Firefox(options=options)driver.get('网址')driver.find_element("link text", "登录").click()name = driver.find_element("id", "name-input")name.send_keys("账号######") # 输入账号pw = driver.find_element("id", "passWord-input")pw.send_keys("密码#########") # 输入密码driver.find_element("id", "submit").click() # 提交

requests抓取验证码图片

为了做后续处理我们需要把滑块验证码相关图片抓到本地,网上关于滑块验证码这块很多都是用原图和有缺口的图对比来确定缺口位置的,但是我并没有找到原图,这里用到的是有缺口的背景图和滑块图,如下:

滑块图:

怎么使用selenium+opencv实现滑块验证码的登陆

有缺口的背景图:

怎么使用selenium+opencv实现滑块验证码的登陆

这里爬图是selenium定位之后用requests包爬的,注意验证码和登陆界面不在一个iframe里,selenium记得切到对应iframe才能定位到图片,代码如下:

driver.switch_to.frame('tcaptcha_iframe') # 切换iframeimg = driver.find_element("id", "slideBg").get_attribute('src')headers = {    'Accept': "application/JSON, text/plain, **",        'User-Agent': "Mozilla/5.0 (windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/65.0.3325.181 Safari/537.36"    }    driver.get('网址')    driver.find_element("link text", "登录").click()    name = driver.find_element("id", "name-input")    name.send_keys(username)    pw = driver.find_element("id", "password-input")    pw.send_keys(password)    driver.find_element("id", "submit").click()    time.sleep(2)    driver.switch_to.frame('tcaptcha_iframe')    img = driver.find_element("id", "slideBg").get_attribute('src')    r = requests.get(img, headers=headers)    with open('img.png', 'wb') as f:        f.write(r.content)    block = driver.find_element("id", "slideBlock").get_attribute('src')    r = requests.get(block, headers=headers)    with open('block.png', 'wb') as f:        f.write(r.content)  if __name__ == '__main__':    options = webdriver.FirefoxOptions()    driver = webdriver.Firefox(options=options)    user = "##########"    pw = "############"    login_in(user, pw)    image = "img.png"    tpl = "block.png"    length = block_loc.match(image, tpl)    print(length)    drag_block(length)

Opencv部分:

import cv2import numpy as np  def avg_mean(img):    mean_val, _, _, _ = cv2.mean(img)    print("平均灰度:", mean_val)    return mean_val  def match(image, temp):    img = cv2.imread(image)    tpl = cv2.imread(temp)    tpl_gray = cv2.cvtColor(tpl, cv2.COLOR_BGR2GRAY)    # cv2.imshow("111", tpl_gray)    width, height = tpl_gray.shape    for h in range(height):        for w in range(width):            if tpl_gray[w, h] == 0:                tpl_gray[w, h] = 96    binary = cv2.inRange(tpl_gray, 96, 96)    kernel = np.ones((8, 8), np.uint8)    template = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)    # cv2.imshow('tpl', template)    print(img.shape)    gauss = cv2.GaussianBlur(img, [5, 5], 0)    img_gray = cv2.cvtColor(gauss, cv2.COLOR_BGR2GRAY)    # cv2.imshow("111", img_gray)    if avg_mean(img) > 140:        ret, target = cv2.threshold(img_gray, 105, 255, cv2.THRESH_BINARY) # 二值化    elif avg_mean(img) > 102:        ret, target = cv2.threshold(img_gray, 95, 255, cv2.THRESH_BINARY)  # 二值化    else:        ret, target = cv2.threshold(img_gray, 80, 255, cv2.THRESH_BINARY)    # cv2.imshow('target', target)    result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED)    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)    left_up = max_loc    print(left_up)    right_down = (left_up[0] + height, left_up[1] + width)    cv2.rectangle(img, left_up, right_down, (0, 0, 255), 2)    # cv2.imshow('res', img)    length = (left_up[0] - 26*2)/2    return length

读到这里,这篇“怎么使用selenium+opencv实现滑块验证码的登陆”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么使用selenium+opencv实现滑块验证码的登陆

本文链接: https://lsjlt.com/news/357453.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • selenium+opencv实现滑块验证码的登陆
    目录环境selenium登录网站requests抓取验证码图片OpenCV识别缺口位置模拟拖动滑块脚本示例:很多网站登录登陆时都要用到滑块验证码,在某些场景例如使用爬虫爬取信息时常常...
    99+
    2023-05-15
    selenium opencv滑块验证码 opencv滑块验证码
  • 怎么使用selenium+opencv实现滑块验证码的登陆
    本文小编为大家详细介绍“怎么使用selenium+opencv实现滑块验证码的登陆”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用selenium+opencv实现滑块验证码的登陆”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-06
  • OpenCV结合selenium实现滑块验证码
    本次案例使用OpenCV和selenium来解决一下滑块验证码 先说一下思路: 弹出滑块验证码后使用selenium元素截图将验证码整个背景图截取出来 将需要滑动...
    99+
    2024-04-02
  • SpringBoot实现滑块验证码验证登陆校验功能详解
    目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
    99+
    2024-04-02
  • 用selenium解决滑块验证码的实现步骤
    目录前言实现步骤1. 用selenium打开浏览器浏览指定网站1.1 找到chromedriver.exe的路径1.2 代码2.将残缺块图片和背景图片下载到本地2.1 找到图片位置2...
    99+
    2023-02-14
    selenium 滑动验证码 selenium 滑块验证 滑块验证码自动识别
  • 怎么用JavaScript实现滑块验证码
    本篇内容主要讲解“怎么用JavaScript实现滑块验证码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现滑块验证码”吧!效果:鼠标在底部滑块上按下按住不松拖动可以移...
    99+
    2023-06-25
  • JS怎么实现滑块验证码
    本篇内容介绍了“JS怎么实现滑块验证码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!style*{   &nb...
    99+
    2023-07-05
  • 微信小程序实现登陆注册滑块验证
    目录一、创建自定义组件MoveVerify二、在index页面使用本文实例为大家分享了微信小程序实现登陆注册滑块验证的具体代码,供大家参考,具体内容如下 一、创建自定义组件Mov...
    99+
    2024-04-02
  • 利用Java+Selenium+OpenCV模拟实现网页滑动验证
    目录一、需求分析二、模拟步骤1、使用selenium打开某音网页2、找到小滑块以及小滑块所在的背景图3、计算小滑块需要滑动的距离4、按住小滑块并滑动三、学习过程中比较棘手的问题1、截...
    99+
    2024-04-02
  • 登录校验之滑块验证码完整实现(vue + springboot)
    文章目录 前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个 controller 类1.5 登录接口 ...
    99+
    2023-08-18
    vue.js spring boot java
  • 微信小程序如何实现登陆注册滑块验证
    这篇文章主要介绍“微信小程序如何实现登陆注册滑块验证”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序如何实现登陆注册滑块验证”文章能帮助大家解决问题。具体效果如下一、创建自定义组件MoveV...
    99+
    2023-06-30
  • python爬虫之利用selenium+opencv识别滑动验证并模拟登陆知乎功能
    滑动验证距离 分别获取验证码背景图和滑块图两张照片,然后利用opencv库,通过高斯模糊和Canny算法进行处理,然后通过matchTemplate方法进行两张图的匹配,获得滑动距离...
    99+
    2024-04-02
  • 利用Java+Selenium+OpenCV模拟如何实现网页滑动验证
    本篇文章给大家分享的是有关利用Java+Selenium+OpenCV模拟如何实现网页滑动验证,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。目前很多网页都有滑动验证,目的就是防...
    99+
    2023-06-26
  • Flutter怎么实现滑动块验证码功能
    这篇文章主要介绍“Flutter怎么实现滑动块验证码功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter怎么实现滑动块验证码功能”文章能帮助大家解决问题。本文实现的是一个用于登录时,向右...
    99+
    2023-06-29
  • JavaScript实现登陆验证码的脚本怎么写
    今天小编给大家分享一下JavaScript实现登陆验证码的脚本怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。填写输入信...
    99+
    2023-06-27
  • 如何使用php+js实现极验,拖动滑块验证码验证表单
    这篇文章给大家分享的是有关如何使用php+js实现极验,拖动滑块验证码验证表单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   代码实现   html文件   <!...
    99+
    2024-04-02
  • 使用python 怎么实现一个滑块验证码识别功能
    今天就跟大家聊聊有关使用python 怎么实现一个滑块验证码识别功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。普通滑动验证import timefrom se...
    99+
    2023-06-14
  • go gin+token验证是怎么实现登陆验证
    本篇文章为大家展示了go gin+token验证是怎么实现登陆验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.准备go get github.com/dgrija...
    99+
    2023-06-22
  • 怎么使用Vue插件实现滑动验证码
    这篇“怎么使用Vue插件实现滑动验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Vue插件实现滑动验证码”文章吧...
    99+
    2023-07-04
  • Token登陆验证机制怎么实现
    这篇文章主要介绍“Token登陆验证机制怎么实现”,在日常操作中,相信很多人在Token登陆验证机制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Token登陆验证机制怎么实现”的疑惑有所帮助!接下来...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作