关于图像验证码问题,解决方案

目录

前言

一、使用cv2解析验证码识别方式

二、浏览器复用(Debug模式启动浏览器)

三、直接绕过登录

前言

使用到的第三方库

请自行pip install 库名

import pytesseract # pip install pytesseract from PIL import Image import cv2 as cv # pip install opencv_python import faker from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as ec import os import time from selenium import webdriver

一、使用cv2解析验证码识别方式

如果你的图像是base64位数据流请移步,其中有相应的函数方法解析,在这里就过多聊了直接上源码

关于base64位滑块图片与UI自动化滑块解决方法_阿飞797的博客-CSDN博客

def register_verification_code(): driver = webdriver.Chrome() # 实例化浏览器对象 driver.maximize_window() wait = WebDriverWait(driver, 5) # 实例化等待对象 register_url = "URL" # 项目URL driver.get(register_url) # 在新的窗口打开url # 随机生成手机号码 phone_number = faker.Faker(locale="zh_CN").phone_number() # 通过手机号码获取6位数据 password = phone_number[0:6] # 显性等待手机号码输入框元素并进行输入内容 locator = ("id", "txtUName") wait.until(ec.visibility_of_element_located(locator)).send_keys(phone_number) # 显性等待密码输入框元素并进行输入内容 locator = ("id", "txtPassword") wait.until(ec.visibility_of_element_located(locator)).send_keys(password) # 定位验证码元素,并进行验证码图像存储 file_name = "imgVerify.png" driver.find_element(value="chkd").screenshot(file_name) # 对存储的验证码进行均值迁移去噪声,然后二值化处理,最终覆盖源文件,进行存储 image = cv.imread(file_name) blurred = cv.pyrMeanShiftFiltering(image, 10, 100) gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) t, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) cv.imwrite(file_name, binary) # 使用 PIL 打开图像转化为图像对象,并使用 pytesseract 进行图像识别验证码 image = Image.open(file_name) img_str = pytesseract.image_to_string(image) # 输入识别的验证码 driver.find_element(value="TxtChkCode").send_keys(img_str) # 显性等待注册按钮元素并进行点击 locator = ("id", "btnRegister") wait.until(ec.visibility_of_element_located(locator)).click() # 显性等待url地址发生了变化 wait.until(ec.url_changes(register_url)) if __name__ == '__main__': register_verification_code()

使用cv2中的图像识别解析出图像中的数字或字母,该方式有相应的限制就是背景图比较杂乱的话识别出来的字符串可能不是图片上的所以可以做注册成功或者登录成功的判断循环注册或者登录成功的标准性元素

PS:如果是爬虫的请设置浏览器头部信息躲避检测

二、浏览器复用(Debug模式启动浏览器)

Selenium启动浏览器默认是会清除所有缓存的,所以系统如果有需要登陆验证的,每

次全部都要验证一遍。

我们可以让Selenium直接用带有缓存的浏览器,就像我们使用本机浏览器一样,去访

问系统。常规系统,比如淘宝、携程,只要完成一次登陆验证,后续登陆是不会再有验证码

的。通过Debug模式启动谷歌浏览器,就能达到这个效果。

并且Debug模式的浏览器,还可以在自动化过程中实现复用浏览器来提高调试效率:

1.当运行 selenium 自动化时,要求已经登录才能才做。这个时候我们可以提前登录,

运行脚本的时候复用已经打开的浏览器。

2.当调试了某个步骤很多的测试用例,前面N-1步已经成功,只需调试第N步。如果从

头开始运行脚本,耗时过多,这时我们可以直接复用浏览器只操作第N步。

复用浏览器的特点:

webdriver启动时将不再创建新的浏览器窗口 将运用已打开的浏览器的当前页面,对元

素的进行操作 。

废话不多说直接上源码

# 加载浏览器其中 os.popen("快捷方式路径") time.sleep(5) options = webdriver.ChromeOptions() options.debugger_address = "127.0.0.1:12138" driver = webdriver.Chrome(options=options) # 这里需要先运行启动浏览器,在频闭以上代码后再运行get之后的操作 driver.get("url") #即可

该方法需要配置浏览器的快捷方式至PC的系统变量中去

PS(找到goole的快捷打开方式地址:一般都在C盘的Program Files (x86)中,看个人的下载地址,没有改下载地址的应该是:C:\Program Files (x86)\Google\Chrome\Application)

把该至添加至PC的系统变量中,再新建一个txt文本把 chrome.exe --remote-debugging-port=12138 该命令行复制进去把文件后缀改成.bat可执行文件,如

在CMD看看chrome是否可以运行打开浏览器

源码中的浏览器器路径就是该可执行文件的路径

三、直接绕过登录

PS:该方法也是最不想说的方式

直接通过访问登录时候的URL去进行之后的操作,该方式限制就是需要把登录后访问的URL请求需要传的值以及是头和各项参数,详细的请问项目前端,就是通过直接drv.get(登录后的浏览器URL)。在前方设置drv访问这个URL需要传参,以及限制即可(本人项目中没有好的例子就不放源码了,敲也不想敲嫌弃)

任性!!!哼😕

相关新闻

基于Django的爬虫与大数据二手房信息采集系统实战解析

基于Django的爬虫与大数据二手房信息采集系统实战解析

做毕设最怕什么?不是不会写代码,而是代码写完了,老师问你“你这个系统架构是怎么设计的”“数据怎么保证不重复”“可视化图表背后的接口是怎么组织的”,你支支吾吾答不上来。今天聊的这个项目——基于Django的爬虫与大数据二手房…

2026/10/21 2:50:01 阅读更多 →
考研助手毕设全流程复盘:SSM+Vue+MySQL从设计到答辩

考研助手毕设全流程复盘:SSM+Vue+MySQL从设计到答辩

毕设选题这件事,我身边多数同学都纠结了两三周。电商系统做烂了,小区物业没有新意,最后我把方向定在了“考研助手”上——这个选题放在2026届毕设里,既有现实场景支撑,又不会显得空泛。更关键的是,它能把SS…

2026/10/21 2:50:01 阅读更多 →
安客居二手房信息采集:Django+爬虫+可视化全链路解析

安客居二手房信息采集:Django+爬虫+可视化全链路解析

这两年毕业设计市场上,“爬虫Web展示”的选题一直很热门,但能把爬虫采集、数据处理、可视化分析完整串起来,再配上Django后端做Web呈现的,其实不多。这套“基于django大数据技术的网络爬虫的安客居二手房屋信息采集系统”&#xf…

2026/10/21 2:50:01 阅读更多 →

最新新闻

51单片机贪吃蛇实战:12864驱动、EEPROM掉电保存与嵌入式分层设计

51单片机贪吃蛇实战:12864驱动、EEPROM掉电保存与嵌入式分层设计

简介:本资源是一套面向大学本科课程设计的51单片机贪吃蛇游戏完整开发方案,适用于单片机原理与应用、嵌入式系统实践等课程学习与项目实训。资源包含Proteus仿真工程(.pdsprj)、Keil C51源码(.c/.a51)、编译…

2026/10/21 3:32:25 阅读更多 →
图书推荐系统实战:Python协同过滤从原理到代码避坑指南

图书推荐系统实战:Python协同过滤从原理到代码避坑指南

我记得第一次带学生跑这个图书推荐系统项目时,好几个人卡在了同一个地方:代码能跑通,但推荐结果全是乱的。后来查了半天,问题出在一个被注释掉的函数上。这个项目在中文互联网上流传了很多版本,绝大多数人拿到的都是简…

2026/10/21 3:32:25 阅读更多 →
空间注意力模块实战指南:原理、代码与调参经验

空间注意力模块实战指南:原理、代码与调参经验

做视觉任务这些年,大家都会遇到一个很实际的需求:网络深了、宽了,但该学的东西没学会。SpatialAttention空间注意力模块,是我调过的结构里性价比最高的一个——代码就几十行、参数量几乎可以忽略,却能明显改变网络的关…

2026/10/21 3:32:25 阅读更多 →
awesome-shizuku vs Dhizuku:两大Android权限提升工具终极对比指南

awesome-shizuku vs Dhizuku:两大Android权限提升工具终极对比指南

awesome-shizuku vs Dhizuku:两大Android权限提升工具终极对比指南 在Android开发的世界中,awesome-shizuku和Dhizuku是两个备受关注的高权限工具,它们都致力于让普通应用获得系统级权限,从而突破Android系统的限制。无论你是普通…

2026/10/21 3:32:25 阅读更多 →
CANN内测实战:从环境初始化到模型推理的完整指南

CANN内测实战:从环境初始化到模型推理的完整指南

前阵子看到某社区的“内测招募,免费体验CANN开发环境”活动,我第一时间就报名了。说实话,当时打动我的不只是“免费”两个字,而是想看看这个面向昇腾AI处理器的异构计算架构,在过去一年里到底进化到了什么程度。CANN这…

2026/10/21 3:32:25 阅读更多 →
Redis单线程还是多线程?从4.0到7.2的线程模型演进真相

Redis单线程还是多线程?从4.0到7.2的线程模型演进真相

1. 这个问题为什么值得花十分钟认真搞懂“Redis 到底是单线程还是多线程?”——这句提问在技术群、面试现场、甚至线上课程评论区里,几乎每周都会高频出现。它表面看是个“是非题”,但背后牵扯的是你对 Redis 性能本质、架构演进逻辑、以及高…

2026/10/21 3:31:24 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →