广告
返回顶部
首页 > 资讯 > 精选 >怎么使用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://www.lsjlt.com/news/357453.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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+
    2022-11-12
  • SpringBoot实现滑块验证码验证登陆校验功能详解
    目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
    99+
    2022-11-13
  • 用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
  • Flutter怎么实现滑动块验证码功能
    这篇文章主要介绍“Flutter怎么实现滑动块验证码功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter怎么实现滑动块验证码功能”文章能帮助大家解决问题。本文实现的是一个用于登录时,向右...
    99+
    2023-06-29
  • JavaScript实现登陆验证码的脚本怎么写
    今天小编给大家分享一下JavaScript实现登陆验证码的脚本怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。填写输入信...
    99+
    2023-06-27
  • 使用python 怎么实现一个滑块验证码识别功能
    今天就跟大家聊聊有关使用python 怎么实现一个滑块验证码识别功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。普通滑动验证import timefrom se...
    99+
    2023-06-14
  • 如何使用php+js实现极验,拖动滑块验证码验证表单
    这篇文章给大家分享的是有关如何使用php+js实现极验,拖动滑块验证码验证表单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   代码实现   html文件   <!...
    99+
    2022-10-19
  • 利用Python+Selenium破解春秋航空网滑块验证码的实战过程
    目录前言开发工具环境搭建实战记录一.验证码简介二.破解滑块验证码2.1计算滑块到缺口的距离2.2将滑块拖到缺口位置前言 记录一次利用Python+Selenium破解滑块验证码的实战过程。 让我们愉快地开始吧~ 开...
    99+
    2022-06-02
    Python Selenium滑块验证码 Python Selenium验证码
  • 怎么使用python识别滑块验证码中的缺口
    这篇文章将为大家详细讲解有关怎么使用python识别滑块验证码中的缺口,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。验证码往往是爬虫路上的一只拦路虎,而其花样也是层出不穷:图片验证、滑块验证、交互式验证、...
    99+
    2023-06-14
  • 怎么使用Vue插件实现滑动验证码
    这篇“怎么使用Vue插件实现滑动验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Vue插件实现滑动验证码”文章吧...
    99+
    2023-07-04
  • spring boot结合kaptcha怎么实现一个验证码登陆功能
    本篇文章给大家分享的是有关spring boot结合kaptcha怎么实现一个验证码登陆功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。引入kaptcha所需要的jar包,我...
    99+
    2023-05-31
    springboot ptc kaptcha
  • Java Web开发过程中登陆模块的验证码的实现方式总结
    验证码及它的作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码、刷票、论坛灌水、有效...
    99+
    2022-06-04
    验证码 过程中 模块
  • Python中怎么使用ddddocr库识别图片与滑块验证码
    这篇“Python中怎么使用ddddocr库识别图片与滑块验证码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python中...
    99+
    2023-07-05
  • 怎么用Python+Selenium实现读取网易邮箱验证码
    这篇文章主要为大家展示了“怎么用Python+Selenium实现读取网易邮箱验证码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用Python+Selenium实现读取网易邮箱验证码”这篇...
    99+
    2023-06-29
  • 怎么使用jQuery,Angular实现登录界面验证码
    小编给大家分享一下怎么使用jQuery,Angular实现登录界面验证码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最终实现的...
    99+
    2022-10-19
  • 怎么使用AJAX实现页面登陆以及注册用户名验证
    这篇文章主要介绍了怎么使用AJAX实现页面登陆以及注册用户名验证,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。AJAX即“Asynchronous Javascript An...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作