Selenium实现滑动滑块验证码验证!

背景:在部分的登录中有滑动验证码的验证,由于滑动验证码的缺块是随机的就导致实现起来比较困难!

01、实现方案

  • 模板匹配

通过openCV分析两个图片的相似度,获取两个相似度很高图片的坐标,从而计算两个图片的距离。

  • 轮廓检测

通过openCV进行轮廓检测,即在大图片中找到缺口位置的坐标,然后计算小图片到缺口位置的距离。

02、知识准备

python语言

这里不再赘述,本篇主要还是使用python技术来实现。

selenium库

selenium是一个用于测试Web应用程序的Python库。它可以模拟用户在浏览器中的操作,例如点击、填写表单等。Selenium可以与各种浏览器交互,并提供了丰富的API来控制浏览器行为和获取网页内容。

urllib库

urllib是Python标准库之一,用于处理URL相关的操作。它包含多个子模块,例如

  • urllib.request用于发送HTTP请求并获取响应

  • urllib.parse用于解析和构建URL

  • urllib.error用于处理URL相关的错误等

  • urllib常用于网络数据抓取、访问API等任务。

cv2库

cv2是OpenCV(Open Source Computer Vision)库的Python绑定。OpenCV是一个广泛使用的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。cv2库为Python开发者提供了对OpenCV功能的访问,可以进行图像加载、处理、分析以及计算机视觉任务,如人脸识别、目标检测等。

安装注意事项:

如果直接通过pip install cv2安装报错的话,请使用下面的语句安装:pip install opencv-python

random库

random是Python的随机数生成库。它提供了多种随机数生成函数,包括生成伪随机数的函数和从序列中随机选择元素的函数。random库可用于模拟、游戏开发、密码学等领域,以及各种需要随机性的应用程序。

re库

re是Python的正则表达式模块,用于对字符串进行模式匹配和处理。正则表达式是一种强大的文本匹配工具,可以用来搜索、替换、提取特定模式的字符串。re库提供了函数和方法来编译正则表达式、执行匹配操作,并返回匹配结果,使得处理文本数据更加灵活和高效

time库

time库是处理时间的标准库,提供了获取系统时间、格式化输出、系统级精确计时等功能。

03、实现步骤

打开登录页切换密码登录

第一步,打开登录页面,并点击页面上的“密码登录”:

图片

代码:

图片

输账密点击登录

第二步,输入账号密码,并点击“登录豆瓣”按钮:

图片

代码:

图片

切换焦点并下载验证图片

将焦点切换至滑块验证区域,并下载加载好的滑块验证背景图片。
点击登录按钮后,就会出现滑块验证区域,这是一个新增的frame区域,此时我们需要将切换的焦点从主页面转换到这个frame区域上:

图片

代码:

图片

然后我们需要获取整个需要对其的大图片,获取其路径并下载到本地,准备进行读取验证,下载图片效果:

图片

代码:

图片

拖动滑块至缺口处

我们接下来要做的,是将小拼图图片,移动到缺口处:

图片

我们需要获取小图片到缺口处的实际距离,一般用到两种方法。

  • 第一种方法是模板匹配,通过openCV分析两个图片的相似度,获取两个相似度很高图片的坐标,从而计算两个图片的距离。

  • 第二种方法是轮廓检测,通过openCV进行轮廓检测,即在大图片中找到缺口位置的坐标,然后计算小图片到缺口位置的距离。

这里因为我们无法单独获取小拼图的单独图片,所以不好使用模板匹配的方法,所以我们选择使用第二种轮廓检测的方法。

(1)得到缺口轮廓位置信息

首先我们计算一下缺口的坐标及面积大概有多大,使用PhotoShop打开下载的图片,单独将缺口按照正方形的尺寸抠出来,发现其长宽各是80像素:

图片

所以这个封闭矩形的面积范围大概是在80*80=6400像素左右。周长是80*4=320像素。但是现实中这里是有缺口的,不是一个完整的图片,所以我们需要给它一定的误差范围,这里我们暂定目标区域面积为上下百分之四,周长为上下百分之四。

然后我们将计算距离:

图片

执行结果:

图片

生成的目标区域画红框的计算图片:

图片

好了,到此为止我们获取到了一个重要的数据,就是缺口的位置信息。

(2)匹配小滑块元素

得到小滑块元素,让其移动位置到上面计算的距离。

注意:

由于大部分网站有检测真人操作的逻辑,所以我们这里要模拟真人进行移动操作,不能一下移动到目标点,需要一点一点的移动。

图片

执行结果

图片

04、其他

浏览器获取元素

  • 打开F12

图片

  • 选择元素

图片

  • 复制元素XPath

图片

  • 检验元素XPath唯一性

Ctrl+F唤起搜索

输入复制的XPath

查看是否唯一

图片

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143328.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

医学数据分析实训 项目九 糖尿病风险预测

文章目录 综合实践二 糖尿病遗传风险预测一、分析目标二、实现步骤三、数据准备四、特征工程五、模型构建六、性能度量七、提交要求 综合实践任务二 糖尿病遗传风险预测代码(一)数据准备(二)特征工程(三)模…

云原生(Cloud Native)简介及相关技术

云原生(Cloud Native)简介及相关技术 什么是云原生? 云原生(Cloud Native)是一种设计和开发应用程序的方法,旨在充分利用云计算的弹性、可扩展性和分布式架构优势。通过采用微服务架构、容器化、持续集成…

vscode软件在 C发中常用插件

一. 简介 本文简单介绍一下,当做 C开发时 vscode软件常用的插件。 vscode软件是 微软公司目前提供的一款免费的开发软件,可以通过 vscode官网下载 vscode。 二. vscode软件在 C开发中常用插件 注意:vscode软件安装后,可以直接…

【Canvas与诗词】《登科后》唐.孟郊

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>昔日龌龊不足夸</title><style type"text/css"&g…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。并查集支持两种操作&#xff1a; 合并&#xff08;Union&#xff09;&#xff1a;合并两个元素所属集合&#xff08;合…

OpenAI o1碎片化过程中探索与利用的泛化

在上一篇《OpenAI o1&#xff1a;隐含在训练与推理间的动态泛化与流形分布》笔记里尝试剖析OpenAI o1内部机理的过程中我们将目光聚焦在了「模型从训练到推理两个阶段的动态渐进与平衡」之上&#xff0c;并将其等价于对long reasoning chain&#xff08;长程推理链&步骤&am…

【重学 MySQL】三十四、加密与解密函数

【重学 MySQL】三十四、加密与解密函数 在 MySQL 中&#xff0c;加密与解密函数是保护数据安全的重要手段&#xff0c;它们允许开发者在存储和传输敏感数据时保持数据的保密性。 函数名描述返回值类型备注AES_ENCRYPT(str, key_str)使用 AES 算法加密字符串BLOB返回加密后的二…

梯度的定义是什么?一阶梯度、二阶梯度对应的优化器是什么?

梯度 梯度的定义一阶梯度、二阶梯度对应的优化器 梯度的定义 梯度的定义主要出现在多元函数的微分学中&#xff0c;是一个向量场&#xff0c;表示某一函数在该点处的方向导数沿着该方向取得最大值&#xff0c;即函数在该点处沿着该方向&#xff08;此梯度的方向&#xff09;变…

好用的网页翻译插件

软件介绍 「火山翻译&#xff0c;开箱即用免配置&#xff0c;完全免费无广告&#xff0c;开发的多语言翻译插件&#xff0c;基本涵盖众多小语种及国际通用语言的翻译&#xff0c;支持网页一键翻译、划词翻译、英语词典、生词本、吐司弹词记忆等丰富能力。 下载方式 请看文章…

Red Hat 和 Debian Linux 对比

原图的作者(https://bbs.deepin.org/post/209759) Red Hat Enterprise Linux https://www.redhat.com/ CentOS Linux https://www.centos.org/ Fedora Linux https://fedoraproject.org/ Debian https://www.debian.org/ Ubuntu https://cn.ubuntu.com/ https://ubuntu.c…

Python “字符串操作” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

本文主要是作为Python中列表的一些题目&#xff0c;方便学习完Python的元组之后进行一些知识检验&#xff0c;感兴趣的小伙伴可以试一试&#xff0c;含选择题、判断题、实战题、填空题&#xff0c;答案在第五章。 在做题之前可以先学习或者温习一下Python的列表&#xff0c;推荐…

[数据集][目标检测]文本表格检测数据集VOC+YOLO格式6688张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6688 标注数量(xml文件个数)&#xff1a;6688 标注数量(txt文件个数)&#xff1a;6688 标注…

<<编码>> 第 14 章 反馈与触发器(5)--加法器综合 示例电路

带锁存器和选择器的 8 位加法器 info::操作说明 鼠标单击逻辑输入切换 0|1 状态 当 “来自锁存器” 位为 0 时, 选择 A; 否则, 选择锁存器的输出 注: 保存位 和 来自锁存器位 不能同时为高电平, 否则电路可能振荡. 实际上, 在模拟器中, 此电路经测试会振荡, 因为 来自锁存器位 …

【算法题】46. 全排列-力扣(LeetCode)

【算法题】46. 全排列-力扣(LeetCode) 1.题目 下方是力扣官方题目的地址 46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3…

xxl-job、Quartz、power-job、elastic-job对比选型

一、框架对比 1. Quartz 优点&#xff1a;稳定性和可扩展性好&#xff0c;适用于企业级应用&#xff1b;调度功能丰富&#xff0c;满足多种需求。 缺点&#xff1a;本身不提供原生的分布式支持&#xff0c;需要通过扩展或与其他组件结合来实现分布式任务调度&#xff1b;调度…

计算机人工智能前沿进展-大语言模型方向-2024-09-19

计算机人工智能前沿进展-大语言模型方向-2024-09-19 1. SAM4MLLM: Enhance Multi-Modal Large Language Model for Referring Expression Segmentation Authors: Yi-Chia Chen, Wei-Hua Li, Cheng Sun, Yu-Chiang Frank Wang, Chu-Song Chen SAM4MLLM: 增强多模态大型语言模型…

kubernetes持久化存储

一 、Volumes 容器的弊端&#xff1a; 1. Container (容器) 中的磁盘文件是短暂的&#xff0c;当容器崩 溃时&#xff0c;kubelet 会重新启动容器&#xff0c;但最初的文件将丢 失&#xff0c;Container 会以最干净的状态启动。 2. 当一个 Pod 运行多个 Container 时&#x…

网络安全:建筑公司会计软件遭受暴力攻击

黑客正在暴力破解基金会会计服务器上高权限账户的密码&#xff0c;这些账户广泛用于建筑行业&#xff0c;从而侵入企业网络。 这一恶意活动最先被 Huntress 发现&#xff0c;其研究人员于 2024 年 9 月 14 日检测到了此次攻击。 Huntress 已经发现这些攻击对管道、暖通空调、…

解决mac下 Android Studio gradle 下载很慢,如何手动配置

抓住人生中的一分一秒&#xff0c;胜过虚度中的一月一年! 小做个动图开篇引题 前言 平时我们clone git 上项目&#xff0c;项目对应gradle版本本地没有&#xff0c;ide编译会自动下载&#xff0c;但是超级慢可能还下载失败&#xff0c;下面讲解下此问题如 如下图所示&#xff…

TCP: Textual-based Class-aware Prompt tuning for Visual-Language Model

文章汇总 存在的问题 原文&#xff1a;具有图像特定知识的图像条件提示符号在提升类嵌入分布方面的能力较差。 个人理解&#xff1a;单纯把"a photo of {class}"这种提示模版作为输入是不利于text encoder学习的 动机 在可学习的提示和每一类的文本知识之间建立…