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)#"""

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebGL矩阵变换

目录 变换矩阵:旋转 变换矩阵:平移 44的旋转矩阵 示例代码: gl.uniformMatrix4fv()规范 平移:相同的策略 变换矩阵:缩放 变换矩阵:旋转 对于简单的变换,你可以使用…

Elasticsearch实现增删改查

调用elasticsearch通常使用restful风格请求,这里记录一些常用的Java API和Postman Url Java API调用Es 1. 查询总文档数 Testvoid getAllCount() { // RestHighLevelClient clientnew RestHighLevelClient(RestClient.builder(new HttpHost("192.168…

【微服务】02-集成事件与MediatR

文章目录 1.集成事件1.1 定义1.2 集成事件工作原理1.3 总结 2.使用RabbitMQ来实现EventBus2.1 RabbitMQ安装2.2 CAP框架实现RabbitMQ2.2.1 CAP框架实现架构2.2.2 CAP框架实现原理 3.MediatR3.1 使用Mediator实现命令查询职责分离模式(CQRS)3.1.1 核心对象 3.2 处理领域事件3.2.…

安装部署JavaFX和IDEA添加JavaFX的详细步骤

安装部署JavaFX和IDEA添加JavaFX的详细步骤 一、认识JavaFX二、下载JavaFX三、解压到目录下四、IDEA导入JavaFX五、添加JavaFX的VM选项六、运行命令七、总结一、认识JavaFX JavaFX是Java平台的一个图形用户界面(GUI)工具包,用于创建丰富、交互式和可视化的应用程序。JavaFX提…

Java线程 - 详解(1)

一,创建线程 方法一:继承Thread类 class MyThread extends Thread{Overridepublic void run() {System.out.println("线程1");} }public class Test {public static void main(String[] args) {MyThread myThread new MyThread();myThread.…

如何管理Linux用户和权限?

首先,你要知道的是Linux是一个非常严谨和安全的操作系统。所以,它需要对用户和权限进行精细的管理。 首先,我们需要了解一下Linux系统中的用户。你可以把用户想象成生活在系统中的居民。他们需要有一个唯一的用户名来标识自己,并且…

【C语言】2023.8.27C语言入学考试复盘总结

前言 本篇文章记录的是对于2023年8月27日的 C语言 的入学考试的整理总结 成绩:220/240 题目:9/12 错题整理 首先先对于我没做出来的三道题做一个整理 错题1:7-4 分段函数PLUS 题干 以下是一个二元分段函数,请你根据所给的函…

Linux对用户路径授权

chown -R wasup:wasup /tmp 用root用户登录 授权 这个命令 chown -R wasup:wasup /tmp 用于递归地改变 /tmp 目录及其所有内容的所有者和所属组。 解释如下: chown: 这是用于修改文件或目录所有者和所属组的命令。-R: 这是一个选项,表示递归地应用修…

android系统启动流程之init启动分析

先根据上图来描述下安卓整个系统的启动流程: 当上电时,系统先执行BootRom, 加载引导程序执行。 然后进入bootloader,在安卓系统中基本上这个bootloader是uboot, 通过uboot引导启动内核,此时运行在kernel空间,这时的i…

基于全新电脑环境安装pytorch的GPU版本

前言: 距离第一次安装深度学习的GPU环境已经过去了4年多(当时TensorFlow特别麻烦),现在发现安装pytorch的GPU版本还是很简单方便的,流程记录如下。 安装步骤: 步骤一:官网下载Anaconda Free…

研磨设计模式day11观察者模式

目录 场景 代码示例 定义 观察者模式的优缺点 本质 何时选用 简单变型-区别对待观察者 场景 我是一家报社,每当我发布一个新的报纸时,所有订阅我家报社的读者都可以接收到 代码示例 报纸对象 package day11观察者模式;import java.util.Observ…

Python+TinyPNG熊猫网站自动化的压缩图片

前言 本篇在讲什么 PythonTinyPNG自动化处理图片 本篇需要什么 对Python语法有简单认知 依赖Python2.7环境 依赖TinyPNG工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉…

AI + Milvus:将时尚应用搭建进行到底

在上一篇文章中,我们学习了如何利用人工智能技术(例如开源 AI 向量数据库 Milvus 和 Hugging Face 模型)寻找与自己穿搭风格相似的明星。在这篇文章中,我们将进一步介绍如何通过对上篇文章中的项目代码稍作修改,获得更…

[管理与领导-53]:IT基层管理者 - 8项核心技能 - 8 - 持续改进

前言: 管理者存在的价值就是制定目标,即目标管理、通过团队(他人)拿到结果。 要想通过他人拿到结果: (1)目标:制定符合SMART原则的符合业务需求的目标,团队跳一跳就可以…

Microsoft正在将Python引入Excel

Excel和Python这两个世界正在碰撞,这要归功于Microsoft的新集成,以促进数据分析和可视化 Microsoft正在将流行的编程语言Python引入Excel。该功能的公共预览版现已推出,允许Excel用户操作和分析来自Python的数据。 “您可以使用 Python 绘图…

Git向远程仓库与推送以及拉取远程仓库

理解分布式版本控制系统 1.中央服务器 我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢? 那我们多人…

VUE3基础

一、vue-router v4.x 介绍 | Vue Router 1、安装 yarn add vue-routernext next代表最新的版本 2、路由配置 在src目录下,新建router/index.ts,具体配置如下 import {RouteRecordRaw,createRouter,createWebHashHistory} from vue-router const r…

NO.04 MyBatis的各种查询功能

目录 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 5、查询多条数据并存储在Map集合中 5.1 方法一:将数据存储在map集合中,再将map集合存储在List集合中 5.2 方法二:将数据存储在map集合中 6、MyBatis中为Java中常用的…

JavaWeb 速通JQuery

目录 一、JQuery快速入门 1.基本介绍 : 2.入门案例 : 二、JQuery对象 1.基本介绍 : 2.DOM对象 --> JQuery对象 : 3.JQuery对象 --> DOM对象 : 三、JQuery选择器 1.简介 : 2.基本选择器 : 3.层次选择器 : 4.过滤选择器 : 4.1 基础过滤选择器 4.2 内容过滤选择…

精益求精:如何在 React 项目中巧妙运用 Redux 并优化项目结构

在前端开发中,React 和 Redux 已经成为构建可扩展、高效的应用程序的首选工具。本文将向您介绍如何在 React 项目中使用 Redux 并精心划分项目结构,以确保代码的可维护性和可扩展性。 第一步:安装 Redux 首先,确保您的项目已经集…