当前位置: 首页 > news >正文

selenium实现输入数字字母验证码

思路

1. 登录url

2. 获取验证码坐标

3. 根据桌标截图验证码

4. 对验证码进行识别

5. 自动输入验证码

测试代码

import os
import time
from io import BytesIO
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By
import sysimport ddddocrimport uuidif __name__ == '__main__':driver = webdriver.Chrome()driver.maximize_window()driver.get("http://172.16.12.129/DVWA/login.php")#driver.get('https://icpc.ldu.edu.cn/login')#driver.get('http://admin.dlszyht.com/login.php')#driver.get("https://icpc.ldu.edu.cn/login")time.sleep(2)# 执行js,对页面进行缩放,100 占 125 的 80%# driver.execute_script('document.body.style.zoom="0.8"')# 要截图的元素#element = driver.find_element_by_css_selector('#captcha')#element = driver.find_element("id", "su")#element = driver.find_element("id", "captcha").#element = driver.find_element("title", "看不清,换一个")#element = driver.find_element(By.TAG_NAME, "form")element = driver.find_element(By.CSS_SELECTOR, 'img[title="点击图片重新获取验证码"]')#element = driver.find_element("id", "vcodesrc")# 坐标x, y = element.location.values()# 宽高h, w = element.size.values()# x = element.location['x']  # 获取验证最左边位置# y = element.location['y']  # 获取验证码上边位置# w = x + element.size['width']  # 获取验证码右边位置# h = y + element.size['height']  # 获取验证码下边位置# 把截图以二进制形式的数据返回image_data = driver.get_screenshot_as_png()# 以新图片打开返回的数据screenshot = Image.open(BytesIO(image_data))# 对截图进行裁剪result = screenshot.crop((x, y, x + w, y + h))# 显示图片#result.show()pic_captcha_name = "{}{}{}{}".format(os.path.dirname(os.path.realpath(__file__)), "/tmpfile/", uuid.uuid4(), ".png")result.save(pic_captcha_name)#"""ocr = ddddocr.DdddOcr()with open(pic_captcha_name, 'rb') as f:img_bytes = f.read()res = ocr.classification(img_bytes)print(res)os.remove(pic_captcha_name)#"""

相关文章:

selenium实现输入数字字母验证码

思路 1. 登录url 2. 获取验证码坐标 3. 根据桌标截图验证码 4. 对验证码进行识别 5. 自动输入验证码 测试代码 import os import time from io import BytesIO from PIL import Image from selenium import webdriver from selenium.webdriver.common.by import By impo…...

Docker的运用

文章目录 一、 Docker介绍二、Docker常用命令三、Docker 部署微服务项目四、Docker 使用场景五、Docker模拟场景5.1 模拟部署Nacos5.2 模拟部署Mongodb5.3 模拟部署RabbitMQ 一、 Docker介绍 Docker是一种开源软件平台,用于在不同的操作系统(如Windows、…...

在项目中快速搭建机器学习的流程

在软件开发领域,机器学习框架发挥着关键作用,为开发人员提供强大的人工智能工具、库和算法,以有效地利用机器学习的潜力。从本质上讲,机器学习使计算机能够从数据中学习并做出预测或决策,而无需明确编程。 机器学习框…...

计网-All

路由器的功能与路由表的查看_路由器路由表_傻傻小猪哈哈的博客-CSDN博客路由基础-直连路由、静态路由与动态路由的概念_MikeVane-bb的博客-CSDN博客路由器的功能与路由表的查看_路由器路由表_傻傻小猪哈哈的博客-CSDN博客 直连路由就是路由器直接连了一个网段,他就…...

Rabbitmq的Federation Exchange

(broker 北京 ) , (broker 深圳 ) 彼此之间相距甚远,网络延迟是一个不得不面对的问题。有一个在北京的业务(Client 北京 ) 需要连接 (broker 北京 ) ,向其中的交换器 exchangeA 发送消息,此时的网络延迟很小,(C…...

AIGC - 生成模型

AIGC - 生成模型 0. 前言1. 生成模型2. 生成模型与判别模型的区别2.1 模型对比2.2 条件生成模型2.3 生成模型的发展2.4 生成模型与人工智能 3. 生成模型示例3.1 简单示例3.2 生成模型框架 4. 表示学习5. 生成模型与概率论6. 生成模型分类小结 0. 前言 生成式人工智能 (Generat…...

如何优雅地创建一个自定义的Spring Boot Starter

优雅永不过时,希望看完本文,你会觉得starter如此优雅! Spring Boot Starter是一种简化Spring Boot应用开发的机制,它可以通过引入一些预定义的依赖和配置,让我们快速地集成某些功能模块,而无需繁琐地编写代…...

Hbase--技术文档--单机docker基础安装(非高可用)

环境准备-docker 配置Linux服务器华为云耀云服务器之docker安装,以及环境变量安装 java (虚拟机一样适用)_docker配置java环境变量_一单成的博客-CSDN博客 说明: 本文章安装方式为学习使用的单体hbase项目。主要是学习&#xff…...

React 生命周期新旧对比

前言 React16.4版本之后使用了新的生命周期,它使用了一些新的生命周期钩子(getDerivedStateFromProps、getSnapshotBeforeUpdate),并且即将废弃老版的3个生命周期钩子(componentWillMount、componentWillReceiveProps…...

云计算存储类型

一、共享存储模式 NAS: ①一种专门用于存储和共享文件的设备,它通过网络连接到计算机或其他设备, 提供了一个中心化的存储解决方案 ②存储网络使用IP网络 ,数据存储共享基于文件 ③本质上为:NFS和CIFS文件共享服务器 ④提供的不是一个磁盘块…...

javacv基础03-调用本机摄像头并截图保存到本地磁盘

基于基础02 的基础上对视频进行取帧保存 代码如下: package com.example.javacvstudy;/*** 本地摄像头截图*/import org.bytedeco.javacv.CanvasFrame; import org.bytedeco.javacv.FrameGrabber; import org.bytedeco.javacv.OpenCVFrameConverter; import org.b…...

Python读取Windows注册表的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

macOS 安装 Homebrew 详细过程

文章目录 macOS 安装 Homebrew 详细过程Homebrew 简介Homebrew 安装过程设置环境变量安装 Homebrew安装完成后续设置(重要)设置环境变量homebrew 镜像源设置macOS 安装 Homebrew 详细过程 本文讲解了如何使用中科大源安装 Homebrew 的安装过程,文章里面的所有步骤都是必要的,需…...

数据结构之树型结构

相关概念树的表示二叉树二叉树性质二叉树储存 实现一颗二叉树创建遍历(前中后序)获取树中节点个数获取叶子节点个数获取第k层节点个数获取二叉树高度检测值为value元素是否存在层序遍历(需要队列来实现)判断是否为完全二叉树&…...

指针进阶详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.字符指针 2.指针数组 3.数组指针 4.数组传…...

QGIS 如何添加天地图

相信很多小伙伴在 QGIS 里面添加天地图的时候一定感觉很困惑,按照官网的操作申请 Key 之后,添加相对应的服务地址之后看不到地图或者地图不正常显示,今天我们就来解决这个问题 以下所有操作基于 QGIS 3.22 版本 申请 Key 1. 添加天地图的第一步需要申请 Key,首先要注册天…...

PHP8内置函数中的数学函数-PHP8知识详解

php8中提供了大量的内置函数,以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍…...

云计算企业私有云平台建设方案PPT

导读:原文《云计算企业私有云平台建设方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以点赞评论转发本文,…...

ORA-01174: DB_FILES be compatible RAC rolling fashion complete outage

How to change the DB_FILES parameter in RAC (Doc ID 1636681.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 10.1.0.2 and later Oracle Database Cloud Schema Service - Version N/A and later Oracle…...

线性代数(五) 线性空间

前言 《线性代数(三) 线性方程组&向量空间》我通过解线性方程组的方式去理解线性空间。此章从另一个角度去理解 空间是什么 大家较熟悉的:平面直角坐标系是最常见的二维空间 空间由无穷多个坐标点组成 每个坐标点就是一个向量 反过来,也可说&…...

OptiScaler:打破显卡技术壁垒——跨平台玩家的AI超分辨率解决方案

OptiScaler:打破显卡技术壁垒——跨平台玩家的AI超分辨率解决方案 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 当你…...

如何快速使用网站历史查看器:新手完整入门教程

如何快速使用网站历史查看器:新手完整入门教程 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 你是否曾经…...

【图像计数】基于matlab GUI图像处理颗粒自动计数【含Matlab源码 15231期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

告别规则几何!用Python+Matlab为gprMax创建任意复杂地质模型(附HDF5文件生成代码)

突破几何限制:用PythonMatlab构建gprMax复杂地质模型的完整指南 地质雷达模拟领域的研究者常面临一个尴尬困境:脑海中的地质结构复杂多变,但建模工具却只能生成规则几何体。本文将彻底解决这一矛盾,带您掌握跨平台协作建模技术&am…...

iCalendar文件逆向解析:用Python拆解别人发你的会议邀请(附Outlook兼容性测试)

iCalendar文件逆向解析实战:Python拆解会议邀请的完整指南 收到会议邀请时,那个小小的.ics文件里藏着多少秘密?作为技术人员,我们常常需要从第三方日历文件中提取关键信息、分析重复规则,甚至修复跨时区协作中的时间错…...

企业级大数据产品架构设计指南

企业级大数据产品架构设计指南:从概念到落地的完整方案 标题选项 企业级大数据架构设计全攻略:从0到1构建可扩展的数据平台大数据产品架构设计指南:如何打造高性能、高可用的企业级解决方案从理论到实践:企业级大数据产品架构设计…...

AI原生应用领域链式思考的实践经验分享

AI原生应用领域链式思考的实践经验分享 关键词:链式思考(Chain of Thought)、AI原生应用、大语言模型、提示工程、智能推理 摘要:本文结合实际开发经验,深入解析“链式思考(CoT)”在AI原生应用中…...

新手友好:通过快马生成带详解的nodepad项目轻松入门Web开发

作为一个刚接触Web开发的新手,想要自己动手实现一个简易的文本编辑器(nodepad)可能会觉得无从下手。最近我在InsCode(快马)平台上尝试了这个项目,发现整个过程比我预想的要简单很多,特别适合像我这样的初学者来理解Web开发的基本流程。 项目结…...

革新性系统安全管理:开源工具重新定义Windows Defender控制范式

革新性系统安全管理:开源工具重新定义Windows Defender控制范式 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-contr…...

requests - 简单好用的HTTP请求库

一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求处理Cookie、会话等复杂性自动解压缩内容处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景:…...