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

发布时间:2026/10/21 2:51:03

关于图像验证码问题,解决方案 目录前言一、使用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(localezh_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(valuechkd).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(valueTxtChkCode).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(optionsoptions) # 这里需要先运行启动浏览器在频闭以上代码后再运行get之后的操作 driver.get(url) #即可该方法需要配置浏览器的快捷方式至PC的系统变量中去PS找到goole的快捷打开方式地址一般都在C盘的Program Files (x86)中看个人的下载地址没有改下载地址的应该是C:\Program Files (x86)\Google\Chrome\Application把该至添加至PC的系统变量中再新建一个txt文本把 chrome.exe --remote-debugging-port12138 该命令行复制进去把文件后缀改成.bat可执行文件如在CMD看看chrome是否可以运行打开浏览器源码中的浏览器器路径就是该可执行文件的路径三、直接绕过登录PS该方法也是最不想说的方式直接通过访问登录时候的URL去进行之后的操作该方式限制就是需要把登录后访问的URL请求需要传的值以及是头和各项参数详细的请问项目前端就是通过直接drv.get登录后的浏览器URL。在前方设置drv访问这个URL需要传参以及限制即可(本人项目中没有好的例子就不放源码了敲也不想敲嫌弃)任性哼
延伸阅读

更多相关文章

2026/10/21 2:46:03

重言式判别:从真值表到DNF的工程化实现

简介:本资源是一份面向计算机专业本科生的数据结构课程设计实践材料,聚焦重言式判别程序的完整实现与原理剖析,解决布尔表达式逻辑恒真性自动验证这一典型算法问题。压缩包共4个文件(2个DOC文档、2个C源码)&#xff0c…

2026/10/21 2:46:03

Vue 打包发布Nginx配置

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

2026/10/21 2:46:03

JSP电子投票系统:Java Web教学级完整实战项目

简介:这是一套基于JSP技术实现的企业级电子投票系统完整源码,面向Java Web初学者与课程设计实践者,解决中小型组织在线投票管理场景下的功能闭环需求,涵盖用户参与、结果统计与后台管控全流程。资源包共64个文件,以37个…

2026/10/21 5:11:20

NLP与无人船:从自然语言指令到自主靠泊的完整技术链路

去年我带着组里的几位同学把一个挺有意思的项目从零做到了仿真验证——给一艘无人船加一套自然语言操控链路,让操作员可以直接说“慢速驶向测试场北侧码头,左舷靠泊”或者“绕开右前方漂浮物,停到A区泊位”,船载系统自己去完成意图…

2026/10/21 5:11:20

鸿蒙+Flutter跨平台实战:桌面图标焕新方案全解析

桌面图标焕新大师这个名字,听起来像某个手机美化App的宣传语,但它本质上是一个很典型的跨平台实战项目:把视觉设计、资源管理、系统桌面机制和Flutter渲染能力串在一起,最终在鸿蒙设备上完成“一键切换桌面图标风格”的完整闭环。…

2026/10/21 5:11:20

从ReAct到龙虾架构:AI Agent编排演进与工程实践

这两年AI Agent架构的文章我看了不下几十篇,名字一个比一个唬人:ReAct、Plan-and-Execute、Reflexion、多Agent系统、图式编排、龙虾架构……但真能把“从A到B是怎么一步步走出来”讲明白的,确实不多。尤其对小程序员来说,最痛苦的…

2026/10/21 5:11:20

C++游戏服务器集群编译部署实战:14个组件从零到上线

做游戏服务器集群的编译和部署,最怕的不是代码本身出问题,而是十四五个进程一起上线时,依赖顺序、配置路径、端口占用、环境差异这些琐碎的事能把人磨到没脾气。我前阵子刚把一套基于 C 的模拟项目集群完整跑通,从零开始编译了 14…

2026/10/21 5:11:20

VS2026下C++游戏服务器集群化拆分与部署实战

我前后折腾了大概两周时间,才把一个原本耦合严重的单体游戏后端,拆成了由 14 个独立 C 进程组成的集群,然后在 VS2026 下完成了整套编译、部署和压测闭环。这个过程里踩过的坑,比我想象中多得多,但拆完之后回头看&…

2026/10/21 5:06:20

轻量地图组件库 lingbot-map:Canvas 2D架构设计与性能优化实践

1. 项目定位与设计思路1.1 lingbot-map 到底解决什么问题lingbot-map 是我目前在一套机器人业务系统里维护的地图组件库,最初立项时只有一个朴素需求:业务侧需要在一个 web 环境里展示机器人所在场地的实时位置、移动轨迹、工作状态,同时还要…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/21 0:00:35

交通流仿真实战:IDM跟驰与MOBIL换道模型参数调优与避坑指南

简介:这份资源是面向交通工程学习者与Python开发者的微观交通流仿真项目,核心实现智能驾驶模型(IDM)下的车辆跟驰与换道行为,可用于理解速度、密度与流量之间的动态关系,适合具备Python基础、希望深入交通模…

2026/10/21 0:00:35

揭穿智能体表面顺从:用追踪代码重建任务执行确定性

1. 表面顺从不是智能体的“礼貌”,而是任务执行链路上的隐性断点最近在调试一个跨平台长周期任务调度系统时,我反复遇到一种令人困惑的现象:智能体在用户指令发出后,几乎秒级响应“已收到”“正在处理”“请稍候”,UI上…

2026/10/21 0:00:35

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

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑