使用Python突破网站验证码限制

图片

之前有小伙伴说,在web自动化的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证,今天专门给大家来聊聊验证码的问题。

常见的验证码一般分为两类,一类是图文验证码,一类是滑块验证码,今天主要来聊聊滑动验证码如何去识别破解。

图片

一、滑动验证破解思路

关于滑动验证码破解的思路大体上来讲就是以下两个步骤:

  1. 获取滑块滑动的距离

  2. 模拟拖动滑块,通过验证。

看起来是很难,实际一点都不简单。但是获取滑块滑动的距离,大多数小伙伴没有思路,不知道怎么去获取。其实要获取下来也不难,关于这种滑动的验证码,滑块和缺口背景都是分别是一张独立的图片,我们可以把这两张图片,下载下来借助于图像识别的技术,去识别缺口在背景图中的位置,然后减去滑块当前所在位置,就可以得出需要滑动的距离。

这个时候很多小伙伴会想图像识别技术我不会啊,不会没有关系,后面会给到大家一个封装好的滑块识别模块,只要你传入滑块和缺口背景图的元素节点就能计算出滑块的缺口位置。

二、案例讲解

话不多说,我们先来看一个案例,这边用到了一个我自己封装的滑动距离识别的模块slideVerfication,有需要的小伙伴可以文末名片处获取。登录案例实现步骤如下:

  1. 创建一个driver对象,访问qq登录页面

  2. 输入账号密码

  3. 点击登录

  4. 模拟滑动验证

三、代码实现

图片

关于滑动验证码的识别问题就这样解决了,那么接下来给大家来讲讲封装的slideVerfication这个模块的识别原理,其实关于这个模块图像识别,也是借助了第三方的图像处理模块来进行识别的,python中有很多现成的用来处理图片的库,这边我使用的是opencv-python来进行识别的。

slideVerfication模块上面用到的两个方法的部分参考代码如下:

根据传入滑块,和背景的节点,计算滑块的距离该方法只能计算 滑块和背景图都是一张完整图片的场景,如果背景图是通过多张小图拼接起来的背景图,该方法不适用,请使用get_image_slide_distance这个方法

滑动滑块进行验证

好了,今天关于滑动验证码识别就分享到这里了 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c#基础()

学习目标 了解:嵌套类,匿名类,对象初始化器 重点:类的定义以及对象,构造方法,this和static关键字 掌握:面向对象的概念,访问修饰符,垃圾回收 面向对象 面向对象的概…

面试题:SpringBoot启动流程

具体步骤 新建一个Spring应用程序 (new springApplication()): 确认web应用的类型加载ApplicationContextInitializer加载ApplicationListener记录主启动类 运行应用程序(.run): 准备环境对象Environment,用于加载…

Java学习【String类详解】

Java学习【String类详解】 String的介绍及定义方式String类型的比较String类型的查找charAt()访问字符indexOf()查找下标 转化和替换数值和字符串转化大小写的转换字符串转数组格式化替换 字符串的拆分和截取split()拆分substring()截取trim()去除两边空格 StringBuilder和Stri…

09Linux GDB学习笔记

Linux GDB使用 目录 文章目录 Linux GDB使用先编译文件1.检查安装1.1 安装GDB 2.启动GDB3.退出GDB4.设置断点4.1 在指定行号处设置断点4.2 在指定函数名处设置断点4.3 在指定源文件和行号处设置断点 4.4查看断点信息4.5删除断点5.运行5.1 <font color#ff0000>逐过程&am…

java web爬虫

目录 读取本地文件 从网站读取文件 java爬虫 总结 读取本地文件 import java.io.File; import java.io.PrintWriter; import java.util.Scanner;public class ReplaceText {public static void main() throws Exception{File file new File("basic\\test.txt"…

Sui与Atoma合作为开发者提供AI支持

AI初创公司Atoma宣布其即将推出的推理网络将与Sui集成&#xff0c;该网络将使开发者能够在他们的应用程序中使用AI工具。Atoma选择Sui作为其第一个区块链集成对象是由于Sui的可扩展性和性能。 尽管生成式AI在过去几年中引起了轰动&#xff0c;但它尚未进入许多消费者应用程序。…

openfiler安装部署-1

openfiler安装部署 简介1 下载openfiler2 openfiler 安装2.1 vmware 典型配置2.2 稍后安装操作系统2.3 新建虚拟机向导2.4 命名虚拟机2.5 指定磁盘容量2.6 添加系统镜像&#xff0c;准备安装系统2.7 启动安装系统2.8 初始化磁盘&#xff0c;选择"Yes"2.9 创建分区&am…

软链接和硬链接

1.软链接 > 也称为符号链接 1.1软链接的创建 注&#xff1a;不管是源文件还是链接文件&#xff0c;最好都用上绝对路径 ln -s 链接源 链接名 //创建链接文件 ln -sf 链接源 链接名 //修改链接的源 s 如果目标链接名称已经存在&#xff0…

C语言数据结构排序、插入排序、希尔排序等的介绍

文章目录 前言打印数组函数一、插入排序二、希尔排序总结 前言 C语言数据结构排序、插入排序、希尔排序等的介绍 打印数组函数 打印数组函数定义 // 打印数组 void PrintArray(int* a, int n) {int i 0;for (i 0; i < n; i){printf("%d ", a[i]);}printf(&qu…

Vivado 比特流编译时间获取以及FPGA电压温度获取(实用)

Vivado 比特流编译时间获取以及FPGA电压温度获取 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a;ISE、Vivado Vivado 比特流编译时间获取以及FPGA电压温度获取一、引言二、 获取FPGA 当前程序的编译时间verilog中直接调用下面源语2. FPGA电压温度获取&#xff08;1&a…

大厂Java面试题:MyBatis的映射器(Mapper.xml)中有哪些常见的元素?

大家好&#xff0c;我是王有志。今天给大家带来的是一道来自京东的 MyBatis 面试题&#xff1a;MyBatis的映射器&#xff08;Mapper.xml&#xff09;中有哪些常见的元素&#xff1f;MyBatis 的映射器中提供了 9 个顶级元素&#xff0c;按照功能可以分为 3 类&#xff1a; SQL …

常用电机测试方法的介绍与功能实现(M测试方法)

目录 概述 1 常用电机测速方法简介 1.1 方法概览 1.2 编码器测速方法 2 M法测速 2.1 理论描述 2.2 实现原理 2.3 速度计算方法 3 功能实现 3.1 功能介绍 3.2 代码实现 3.2.1 使用STM32Cube配置参数 3.2.2 脉冲计数功能 3.2.3 测速函数 4 测试 概述 本文主要介绍…

MySQL:CRUD进阶(七千五百字)

文章目录 前置文章&#xff1a;&#x1f4d1;1. 数据库约束&#x1f324;️1.1 约束类型&#x1f324;️1.2 NULL约束&#x1f324;️1.3 Unique&#xff1a;唯一约束&#x1f324;️1.4 Default&#xff1a;默认值约束&#x1f324;️1.5 Primary key&#xff1a;主键约束&…

一个不错的讲解做竞品分析的方法

比如选了竞品1&#xff0c;竞品2&#xff0c;然后每个功能项&#xff0c;选定1个做标准被比较的锚点&#xff0c;比如外观&#xff0c;用竞品2&#xff0c;设置为1分&#xff0c;然后看竞品1&#xff0c;在外观的评分上&#xff0c;相比竞品2&#xff0c;是分数低点还是高点&am…

java期末细节知识整理(一)

1.java程序的执行过程&#xff1a;先编译后解释。也就是我们在idea写的文件叫做java源文件&#xff08;.java结尾的文件&#xff09;&#xff0c;经过编译器会生成字节码文件&#xff08;.class结尾的文件&#xff09;&#xff0c;再通过解释器进行实现 2.栈用来存储引用类型的…

免费实现网站HTTPS访问

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是一种基于SSL协议的HTTP安全协议&#xff0c;旨在为客户端&#xff08;浏览器&#xff09;与服务器之间的通信提供加密通道&#xff0c;确保数据在传输过程中的保密性、完整性和身份验证。与传统的HTTP相比&a…

C语言-单精度和双精度浮点型

文章目录 一、遇到的问题二、解决方案三、问题根因float和double的区别&#xff1a; 总结-浮点数 一、遇到的问题 将NXP项目的代码移植到RH850F1K的项目上时&#xff0c;程序运行异常&#xff1a; u16Volt (uint16)((double)u16ADVal * (double)6.3) 执行到这一行程序就跑飞了…

HMI-Board上手指南

介绍 HMI-Board为 RT-Thread 联合瑞萨推出的高性价比图形评估套件&#xff0c;取代传统的 HMI主控板硬件&#xff0c;一套硬件即可实现 HMIIoT控制的全套能力。依托于瑞萨高性能芯片 RA6M3 及 RT-Thread 软件生态&#xff0c;HMI-Board 不仅硬件性能强劲&#xff0c;同时软件生…

C语言 指针——函数指针

目录 什么是函数指针&#xff1f; 函数指针的定义 定义函数指针时的常见错误 函数指针有什么用&#xff1f; 函数指针的主要应用 什么是函数指针&#xff1f; 函数指针 (Function Pointer) 就是指向函数的指针变量 数据类型 ( * 指针变量名 ) ( 形参列表 ); 例如&#x…

芋道系统,springboot+vue3+mysql实现地址的存储与显示

1.效果图 2.前端实现&#xff1a; <el-form-item label"地址" prop"entrepriseAddress"><el-cascaderv-model"formData.entrepriseAddress"size"large":options"region"/></el-form-item> //导入组件 im…