Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Selenium+dddocr轻松解决Web自动化验证码识别

Selenium+dddocr轻松解决Web自动化验证码识别

作者头像
测试开发技术
发布于 2023-09-12 06:18:40
发布于 2023-09-12 06:18:40
2.1K07
代码可运行
举报
文章被收录于专栏:测试开发技术测试开发技术
运行总次数:7
代码可运行

1、介绍

dddocr是一个基于深度学习的OCR(Optical Character Recognition,光学字符识别)库,用于识别图片中的文字。它可以识别各种类型的文字,包括印刷体、手写体、表格、条形码等。dddocr库使用了深度卷积神经网络(CNN)和循环神经网络(RNN)等先进的模型,具有较高的准确性和稳定性。

使用dddocr库可以方便地进行文字识别的开发和应用。它提供了简单易用的API接口,可以接收图片作为输入,返回识别结果。用户只需要将待识别的图片传入dddocr库的API接口,即可获取识别出的文字信息。同时,dddocr库还支持批量处理多张图片,提供了多线程和分布式处理的功能,可以提高识别速度和效率。

dddocr库可以广泛应用于各种场景,例如文档数字化、图像检索、自动化办公等。它可以帮助用户快速准确地提取图片中的文字信息,方便进行后续的处理和分析。在实际应用中,dddocr库已经被广泛应用于金融、医疗、物流等领域,取得了良好的效果。

2、基本使用

安装:pip install dddocr

利用dddocr库可以支持识别不同类型的验证码

示例1:英文字母验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_letter_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='letter')
    return result

image_path = 'letter_captcha.png'
result = recognize_letter_captcha(image_path)
print(result)

示例2:数字验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_number_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='number')
    return result

image_path = 'number_captcha.png'
result = recognize_number_captcha(image_path)
print(result)

示例3:混合验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_mixed_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='mixed')
    return result

image_path = 'mixed_captcha.png'
result = recognize_mixed_captcha(image_path)
print(result)

示例4:滑动验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_slide_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.slide_captcha(image_path)
    return result

image_path = 'slide_captcha.png'
result = recognize_slide_captcha(image_path)
print(result)

示例5:中文验证码识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dddocr

def recognize_chinese_captcha(image_path):
    ocr = dddocr.DddOcr()
    result = ocr.classification(image_path, model_type='chinese')
    return result

image_path = 'chinese_captcha.png'
result = recognize_chinese_captcha(image_path)
print(result)

以上示例中,image_path为待识别的验证码图片路径,通过调用不同的识别函数来识别不同类型的验证码。每个示例都创建了一个dddocr的实例,然后调用相应的方法进行识别。识别结果会以字符串形式返回。实际应用中,可能需要根据具体情况进行参数调整和模型训练,以提高识别准确性。

3、selenium+dddorc自动化登录识别验证码

使用selenium和dddocr进行自动登录时,可以通过以下步骤识别验证码:

  1. 安装selenium和dddocr库:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  pip install selenium
  pip install dddocr
  1. 导入必要的库和模块:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   from selenium import webdriver
   from selenium.webdriver.common.by import By
   from selenium.webdriver.support.ui import WebDriverWait
   from selenium.webdriver.support import expected_conditions as EC
   import dddocr
  1. 创建一个dddocr的实例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  ocr = dddocr.DddOcr()
  1. 使用selenium打开登录页面,并找到验证码图片元素:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   driver = webdriver.Chrome()
   driver.get('https://example.com/login')
   captcha_image = driver.find_element(By.ID, 'captcha-image')
  1. 获取验证码图片的src属性,并下载保存到本地:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  captcha_image_src = captcha_image.get_attribute('src')
  driver.get_screenshot_as_file('screenshot.png')
  1. 使用dddocr识别验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   result = ocr.classification('screenshot.png', model_type='mixed')
   captcha_code = result[0]['text']
  1. 在登录页面找到验证码输入框,并输入识别出的验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. 输入其他登录信息,并提交表单:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   username_input = driver.find_element(By.ID, 'username-input')
   password_input = driver.find_element(By.ID, 'password-input')
   username_input.send_keys('your_username')
   password_input.send_keys('your_password')
   submit_button = driver.find_element(By.ID, 'submit-button')
   submit_button.click()

完整的代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import dddocr

ocr = dddocr.DddOcr()

driver = webdriver.Chrome()
driver.get('https://example.com/login')

captcha_image = driver.find_element(By.ID, 'captcha-image')
captcha_image_src = captcha_image.get_attribute('src')
driver.get_screenshot_as_file('screenshot.png')

result = ocr.classification('screenshot.png', model_type='mixed')
captcha_code = result[0]['text']

captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)

username_input = driver.find_element(By.ID, 'username-input')
password_input = driver.find_element(By.ID, 'password-input')
username_input.send_keys('your_username')
password_input.send_keys('your_password')

submit_button = driver.find_element(By.ID, 'submit-button')
submit_button.click()

以上代码示例中,假设登录页面的验证码图片元素的id为'captcha-image',验证码输入框的id为'captcha-input',用户名输入框的id为'username-input',密码输入框的id为'password-input',登录按钮的id为'submit-button'。根据实际情况,需要替换这些id值为实际的页面元素id。

注意:上述示例仅适用于验证码图片直接以img标签的形式嵌入在页面中的情况。

4、验证码通过Ajax请求加载如何识别

如果验证码是通过Ajax请求加载的,可以通过以下步骤识别验证码:

  1. 使用selenium打开登录页面,并等待验证码图片加载完成:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   driver = webdriver.Chrome()
   driver.get('https://example.com/login')

   wait = WebDriverWait(driver, 10)
   captcha_image = wait.until(EC.presence_of_element_located((By.ID, 'captcha-image')))
  1. 执行JavaScript代码,获取验证码图片的base64编码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)
  1. 将base64编码解码为图片,并保存到本地:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   with open('captcha.png', 'wb') as f:
       f.write(base64.b64decode(captcha_image_base64))
  1. 使用dddocr识别验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  result = ocr.classification('captcha.png', model_type='mixed')
  captcha_code = result[0]['text']
  1. 在登录页面找到验证码输入框,并输入识别出的验证码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   captcha_input = driver.find_element(By.ID, 'captcha-input')
   captcha_input.send_keys(captcha_code)
  1. 输入其他登录信息,并提交表单:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   username_input = driver.find_element(By.ID, 'username-input')
   password_input = driver.find_element(By.ID, 'password-input')
   username_input.send_keys('your_username')
   password_input.send_keys('your_password')

   submit_button = driver.find_element(By.ID, 'submit-button')
   submit_button.click()

完整的代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import dddocr
import base64

ocr = dddocr.DddOcr()

driver = webdriver.Chrome()
driver.get('https://example.com/login')

wait = WebDriverWait(driver, 10)
captcha_image = wait.until(EC.presence_of_element_located((By.ID, 'captcha-image')))

captcha_image_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(21);", captcha_image)

with open('captcha.png', 'wb') as f:
    f.write(base64.b64decode(captcha_image_base64))

result = ocr.classification('captcha.png', model_type='mixed')
captcha_code = result[0]['text']

captcha_input = driver.find_element(By.ID, 'captcha-input')
captcha_input.send_keys(captcha_code)

username_input = driver.find_element(By.ID, 'username-input')
password_input = driver.find_element(By.ID, 'password-input')
username_input.send_keys('your_username')
password_input.send_keys('your_password')

submit_button = driver.find_element(By.ID, 'submit-button')
submit_button.click()

以上代码示例中,假设登录页面的验证码图片元素的id为'captcha-image',验证码输入框的id为'captcha-input',用户名输入框的id为'username-input',密码输入框的id为'password-input',登录按钮的id为'submit-button'。根据实际情况,需要替换这些id值为实际的页面元素id。

注意:上述示例仅适用于验证码图片通过Ajax请求加载,并且返回的是base64编码的情况。如果验证码图片是通过其他方式加载的,或者返回的是其他格式的数据(如图片的URL),则需要根据具体情况进行相应的处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-12 08:20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
58同城批量发布软件,自动发布58同城信息工具,python框架分享
下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1135
用户11749621
2025/07/21
130
黄牛都怕的抢票神器来了!手把手教你0基础打造24小时不停歇的智能抢票小助手,带你打通演唱会门票最后一公里!
其实这不是你的错。现在的热门演出门票太抢手了,尤其是偶像类演唱会,几秒钟就能被“机器”抢空——也就是那些自动化的抢票程序;于是我们想到:能不能自己写一个“抢票小助手”,让它帮我们在后台自动监控、自动下单,提高抢票成功率?
羑悻的小杀马特.
2025/07/20
1280
黄牛都怕的抢票神器来了!手把手教你0基础打造24小时不停歇的智能抢票小助手,带你打通演唱会门票最后一公里!
使用Selenium自动化操作浏览器
Selenium可以自动化操作浏览器,例如:选择元素,输入,点击等,可以用于软件自动化测试,爬虫等工作,也可以做你想做的任何事情。
YaoQi
2025/07/14
2200
使用Selenium自动化操作浏览器
token登录提取工具,拼多多京东淘宝token,提取登录器python版分享
下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1133
用户11744395
2025/07/16
1360
[428]极验验证码识别
很多网站的登陆都有验证码一项,而极验的方案就是应用的非常普遍。更多的场景是在反爬虫的对抗中,极客验证码更是首选。本次目标则是用程序来识别并通过极验验证码的验证。本次使用的是Python库是selenium库,Chrome浏览器,并配置好ChromeDriver。极验验证码官网为:https://auth.geetest.com/login/。它是一个专注于提供验证安全的系统,主要验证方式是拖动滑块拼合图像。若图像完全拼合,则验证成功,即表单成功提交,否则需要重新验证,如图所示:
周小董
2022/04/13
2K0
[428]极验验证码识别
Selenium验证码ddddocr识别:带带ddocr
思路: 由于验证码不是图片,需要用到selenium进行截取验证码,然后通过ddddocr识别数字
德宏大魔王
2023/08/08
9640
Selenium验证码ddddocr识别:带带ddocr
Selenium+2Captcha 自动化+验证码识别实战
本文深入探讨了使用Selenium库进行网页自动化操作,并结合2Captcha服务实现ReCAPTCHA验证码的破解。内容涵盖Selenium的基础知识、验证码的分类、2Captcha服务的使用,以及通过实例进行的详细讲解,最后对实践进行总结和优化思考,为读者提供了一条完整的验证码破解实践路线图。
TechLead
2023/10/21
2K0
Selenium+2Captcha 自动化+验证码识别实战
基于python语言识别验证码(自动化登录,接口验证)
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/11/04
7890
自动滑块验证码识别_滑块验证码原理
有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。其实验证码的英文为 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart),翻译成中文就是全自动区分计算机和人类的公开图灵测试,它是一种可以区分用户是计算机还是人的测试,只要能通过 CAPTCHA 测试,该用户就可以被认为是人类。由此也可知道激活成功教程滑块验证码的关键即是让计算机更好的模拟人的行为,这也是激活成功教程的难点所在。(注:本文18年所作,仅作参考)
全栈程序员站长
2022/11/18
4K0
自动滑块验证码识别_滑块验证码原理
Python Selenium全栈指南:从自动化入门到企业级实战
这篇文章全面解析了Python Selenium库的核心技术与应用实践,从环境配置、元素定位(涵盖ID、CSS、XPath等八种方法)、表单操作及文件上传等基础操作入手,逐步深入至显式等待策略、Page Object设计模式、数据驱动测试等高级应用,并探讨了企业级场景下的分布式测试集群搭建、云平台集成及验证码处理方案。通过性能优化技巧(如无头模式、网络监控)和移动端与AI结合的扩展生态,展示了Selenium的多样化潜力,同时总结了十大最佳实践与常见问题解决方案,为读者提供了从入门到精通的系统化学习路径和进阶资源,助力实现高效、稳定的Web自动化测试与开发。
Lethehong
2025/03/01
6050
Python Selenium全栈指南:从自动化入门到企业级实战
Python+Selenium爬虫:豆瓣登录反反爬策略解析
1. 引言 在当今互联网时代,数据抓取(爬虫)技术广泛应用于数据分析、市场调研、自动化测试等领域。然而,许多网站采用动态加载技术(如Ajax、React、Vue.js等框架)来渲染页面,传统的requests库无法直接获取动态生成的内容。这时,Selenium成为解决动态页面爬取的重要工具。 豆瓣作为一个典型的动态加载网站,其登录页面涉及表单提交、动态验证码、Ajax请求等复杂交互。本文将通过Python + Selenium,详细介绍如何模拟登录豆瓣,并处理动态加载的登录页面。
小白学大数据
2025/05/14
2870
web自动化测试进阶篇03 ———自动化并发测试应用
web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通常都会作为广大测试从业者的首选学习对象,相较于C/S架构的自动化来说,B/S有着其无法忽视的诸多优势,从行业发展趋、研发模式特点、测试工具支持,其整体的完整生态已经远远超过了C/S架构方面的测试价值。
Austin_zhai
2023/07/25
5810
web自动化测试进阶篇03 ———自动化并发测试应用
Python爬虫之点触验证码的识别
可能你对这个名字比较陌生,但是肯定见过类似的验证码,比如 12306 就是典型的点触验证码。
仲君Johnny
2024/02/23
7351
Python爬虫之点触验证码的识别
Python自动打码,DdddOcr通用验证码自动识别库
在Python爬虫中,或者使用POST提交的过程中,往往需要提交验证码来验证,除了人工打码,付费的api接口(打码接口),深度学习识别验证码,当然还有适合新人使用的OCR验证码识别库,简单的验证码是可以完全实现自动打码的,比如下面本渣渣分享的通用验证码自动识别库:ddddocr(带带弟弟OCR)!
二爷
2021/11/19
3.9K0
Python自动打码,DdddOcr通用验证码自动识别库
Python实现大麦网抢票的四大关键技术点解析
随着互联网的普及和发展,线上购票已经成为人们生活中不可或缺的一部分。然而,在抢购热门演出门票时,往往会遇到抢票难、抢票快的问题,有时候一秒钟的延迟就意味着与心仪的演出擦肩而过。为了解决这个问题,技术爱好者们开始探索利用Python多线程技术来提高抢票效率。本文将介绍Python实现大麦网抢票的四大关键技术点,帮助读者了解抢票脚本的核心原理,并通过示例代码详细说明实现过程。
小白学大数据
2024/05/22
2.5K0
python 自动化测试(1):获取验证码图片,实现自动登录
firefox:59.0.2 selenium:3.11.0
Mokwing
2020/09/08
2.4K0
爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别
在我们写爬虫的过程中,目标网站常见的干扰手段就是设置验证码等,本就将基于Selenium实战讲解如何处理弹窗和验证码,爬取的目标网站为某仪器预约平台
刘早起
2020/07/29
2.4K0
爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别
遇到只有点击一下验证码的空白处,才会出现验证码,这种登录怎么解?
前几天在Python钻石群【gw】问了一个Python模拟登录的问题,这里拿出来给大家分享下。
前端皮皮
2023/08/17
3980
遇到只有点击一下验证码的空白处,才会出现验证码,这种登录怎么解?
Python网络爬虫实战使用Requests、Beautiful Soup和Selenium获取并处理网页数据
在网络数据变得日益丰富和重要的今天,网络爬虫成为了获取和分析数据的重要工具之一。Python作为一种强大而灵活的编程语言,在网络爬虫领域也拥有广泛的应用。本文将介绍如何使用Python中的两个流行库Beautiful Soup和Requests来创建简单而有效的网络爬虫,以便从网页中提取信息。
一键难忘
2024/04/23
2.2K0
selenium 模拟滑块验证码
slider-captcha/slider_captcha.py at master · maxnoodles/slider-captcha (github.com)
卓越笔记
2023/02/22
1.3K0
推荐阅读
相关推荐
58同城批量发布软件,自动发布58同城信息工具,python框架分享
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验