免费验证码识别:用ddddocr实现Playwright自动化登录

免费验证码识别:用ddddocr实现Playwright自动化登录

在自动化爬虫、自动化登录等场景中,验证码是最常见的"拦路虎"。对于个人开发者、初学者而言,付费解码平台虽精准,但成本较高,而免费的OCR工具中,ddddocr凭借轻量、无需训练、开箱即用的优势,成为处理简单验证码的首选。

本文将聚焦免费版ddddocr的基础使用,结合Playwright自动化工具,实现网页验证码的自动识别与登录,全程使用基础代码,不添加复杂逻辑(如逐字输入、异常处理),适合初学者上手练习。下一篇将重点讲解付费解码平台API的使用,对比免费与付费方案的差异,满足不同场景需求。

本文核心目标:掌握ddddocr的基础调用方法,结合Playwright完成网页截图、验证码识别、自动化填充登录,全程用最基础的代码实现,避开复杂逻辑,专注核心功能落地。

一、前置知识与环境准备

在开始编写代码前,我们需要准备好相关环境和依赖包,所有操作均为基础配置,适合零基础初学者,全程无需复杂配置。

1.1 核心依赖包说明

本文用到两个核心工具,均为Python生态中常用且易安装的包,无需额外配置环境变量:

  • ddddocr:免费开源的OCR验证码识别工具,支持数字、字母、简单汉字验证码识别,无需训练模型,安装后可直接调用,体积轻量,适合个人开发者使用。

  • Playwright:微软开源的自动化测试工具,支持Chrome、Firefox等浏览器,能够模拟浏览器操作(打开页面、填写内容、点击按钮、截图等),语法简洁,上手难度低,适合实现网页自动化。

1.2 环境安装步骤(基础版)

打开CMD或终端,输入以下命令,一键安装所有依赖,无需额外操作:

bash 复制代码
# 安装ddddocr(免费版,无需额外配置)
pip install ddddocr

# 安装Playwright
pip install playwright

# 安装Playwright浏览器驱动(自动安装Chrome、Firefox等驱动,无需手动下载)
playwright install

安装完成后,即可开始编写代码,全程无复杂配置,确保Python版本在3.7及以上即可(大部分主流Python版本都支持)。

二、核心场景介绍:自动化登录中的验证码识别

ddddocr的免费版本虽识别精度不如付费平台,但足以应对大多数简单验证码(如数字+字母混合、无复杂干扰线的验证码),常见应用场景包括:

  • 个人爬虫项目:爬取无需高强度反爬的网站,自动识别登录验证码,实现批量登录。

  • 自动化测试:个人开发的小型网站,自动化测试登录功能,无需手动输入验证码。

  • 学习练习:初学者学习OCR识别、浏览器自动化的入门案例,快速掌握两个工具的基础使用。

本文将以"天天识图"网站(http://www.ttshitu.com/login.html?spm=null)为例,实现自动化登录------打开登录页面、填写账号密码、截图验证码、用ddddocr识别、填充验证码并点击登录,全程使用基础代码,不添加任何复杂逻辑,还原最基础的实现流程。

注:本文仅用于学习交流,请勿用于非法爬虫、恶意登录等违规操作,遵守网站robots协议,尊重网站版权和隐私。

三、基础版代码实现(全程无复杂逻辑)

以下代码为最基础版本,剔除所有复杂逻辑(如逐字输入、异常处理、Cookie保存等),仅保留核心功能:打开浏览器、填写账号密码、截图验证码、识别验证码、填充并登录,每一步都有详细注释,初学者可直接复制运行,无需修改过多内容。

3.1 完整基础代码

python 复制代码
# 导入所需依赖包(基础导入,无多余包)
import ddddocr
from playwright.sync_api import sync_playwright

# 启动Playwright,打开Chrome浏览器(无头模式关闭,可直观看到操作过程)
with sync_playwright() as p:
    # 启动Chrome浏览器,headless=False表示显示浏览器窗口,方便观察操作
    browser = p.chromium.launch(headless=False)
    # 新建一个浏览器页面
    page = browser.new_page()
    # 跳转到天天识图登录页面(目标网站,可替换为其他需要登录的网站)
    page.goto("http://www.ttshitu.com/login.html?spm=null")

    # 1. 填写账号密码(基础fill方法,直接填充内容)
    # 定位账号输入框,填充账号(替换为自己的账号)
    page.fill("div.l_content form div:nth-child(1) input", "(填自己的账号)")
    # 定位密码输入框,填充密码(替换为自己的密码)
    page.fill("div.l_content form div:nth-child(2) input", "(填自己的账号密码)")

    # 2. 截图验证码(定位验证码图片,直接截图,不保存到本地)
    # 定位验证码图片(通过CSS选择器定位,可从网页复制)
    captcha_img = page.locator("#captchaImg")
    # 截图并获取图片字节流(内存中操作,不落地文件,基础版核心操作)
    img_bytes = captcha_img.screenshot()

    # 3. 用ddddocr识别验证码(免费版基础调用,无需训练)
    # 初始化ddddocr识别器(默认配置,无需修改)
    ocr = ddddocr.DdddOcr()
    # 识别图片字节流,获取验证码结果(返回字符串格式)
    code = ocr.classification(img_bytes)
    # 打印识别结果,方便观察识别是否正确(调试用,可保留)
    print("验证码识别结果:", code)

    # 4. 填充验证码并点击登录(基础操作,直接填充、点击)
    # 定位验证码输入框,填充识别到的验证码
    page.fill("body > div > div > div.l_content > form > div.l_input_wrapper.pure-g > div.pure-u-2-3 > input", code)
    # 定位登录按钮,点击登录
    page.click("body > div > div > div.l_content > form > button")

    # 等待5秒,观察登录结果(基础等待方法,避免页面过快关闭)
    page.wait_for_timeout(5000)

    # 关闭浏览器(基础收尾操作,可省略,页面会自动关闭)
    browser.close()

3.2 代码核心步骤解析(基础版重点)

代码全程无复杂逻辑,每一步都是基础操作,初学者可逐行理解,重点掌握3个核心步骤:

步骤1:浏览器自动化基础操作

使用Playwright的基础语法,启动浏览器、打开页面、填写内容,核心代码只有3行:

python 复制代码
browser = p.chromium.launch(headless=False)  # 启动Chrome,显示窗口
page = browser.new_page()  # 新建页面
page.goto("目标网址")  # 跳转到登录页面

填写账号密码使用page.fill(选择器, 内容)方法,选择器可直接从网页复制(右键验证码输入框→检查→复制CSS选择器),无需手动编写,降低入门难度。

步骤2:验证码截图(基础内存操作)

无需保存图片到本地,直接通过locator.screenshot()方法获取图片字节流,避免文件操作,简化代码:

python 复制代码
captcha_img = page.locator("#captchaImg")  # 定位验证码图片
img_bytes = captcha_img.screenshot()  # 获取图片字节流

这种方式无需处理文件路径,避免因路径错误导致代码运行失败,适合初学者快速上手。

步骤3:ddddocr基础识别(免费版核心)

ddddocr的免费版本调用极其简单,无需训练模型、无需配置参数,初始化识别器后,直接传入图片字节流即可识别:

python 复制代码
ocr = ddddocr.DdddOcr()  # 初始化识别器
code = ocr.classification(img_bytes)  # 识别验证码

识别结果为字符串格式,可直接用于填充验证码输入框,无需额外处理。

四、基础版代码运行说明与注意事项

4.1 运行步骤(初学者必看)

  1. 复制上述完整代码,粘贴到Python编辑器(PyCharm、VS Code均可);

  2. 确保已安装所有依赖包(按照1.2步骤安装);

  3. 直接运行代码,即可看到浏览器自动打开、填写账号密码、识别验证码并登录的全过程。

4.2 常见问题(基础版易踩坑点)

由于本文使用最基础的代码,未添加异常处理,运行过程中可能遇到以下问题,初学者可快速排查:

问题1:验证码识别错误,导致登录失败

原因:ddddocr免费版识别精度有限,对于带有复杂干扰线、扭曲严重、字体粘连的验证码,识别率会降低;

解决方法:刷新验证码后重新识别(基础版可手动刷新,下一篇付费版将解决此问题),或更换验证码样式简单的网站测试。

问题2:选择器失效,无法定位输入框或验证码

原因:网页结构更新,复制的CSS选择器失效;

解决方法:重新复制选择器(右键目标元素→检查→复制→Copy selector),替换代码中对应的选择器即可。

问题3:浏览器无法启动,提示驱动缺失

原因:未执行playwright install命令,未安装浏览器驱动;

解决方法:打开终端,输入playwright install,等待驱动安装完成后,重新运行代码。

问题4:代码运行过快,验证码未加载完成就截图

原因:网页加载速度较慢,验证码未加载完成,就执行了截图操作,导致截取空白图片,识别失败;

解决方法:在截图前添加基础等待(无需复杂逻辑),在captcha_img = page.locator("#captchaImg")前添加一行代码:

python 复制代码
page.wait_for_timeout(1000)  # 等待1秒,确保验证码加载完成

五、ddddocr免费版的优势与局限性

作为免费OCR工具,ddddocr适合初学者入门和个人小型项目使用,同时也存在一定局限性,提前了解可更好地选择使用场景。

5.1 免费版优势(适合初学者)

  • 完全免费:无任何收费项目,无需注册、无需API密钥,安装后可直接调用;

  • 轻量简洁:体积小,安装速度快,无需配置复杂环境,无需训练模型;

  • 上手简单:调用语法极简,只需2行代码即可完成识别,适合零基础初学者;

  • 支持多种验证码:可识别数字、字母、简单汉字、混合验证码,满足基础需求。

5.2 免费版局限性(后续将用付费版解决)

  • 识别精度有限:对于复杂验证码(干扰线多、字体扭曲、粘连严重),识别率较低,容易出现识别错误;

  • 无重试机制:识别失败后,无法自动重试,需要手动干预;

  • 不支持复杂场景:无法识别滑块验证码、点选验证码等复杂类型,仅支持图片类验证码;

  • 无技术支持:开源工具,遇到问题只能自行排查,无官方技术支持。

六、后续预告与学习建议

本文重点讲解了ddddocr免费版的基础使用,结合Playwright实现了简单的自动化登录,核心是掌握基础代码逻辑,避开复杂操作,适合初学者入门。

下一篇文章,我们将讲解付费解码平台API的使用,重点解决免费版的局限性:

  • 如何注册付费解码平台,获取API密钥;

  • 基础API调用方法,实现高精度验证码识别;

  • 对比免费版与付费版的差异,选择适合自己的方案;

  • 添加重试机制、异常处理,优化代码稳定性,适配更多场景。

初学者学习建议

  1. 先熟练运行本文基础代码,理解每一步的作用,不要急于添加复杂逻辑;

  2. 尝试替换目标网站,用相同的代码逻辑,实现其他简单验证码的识别(如个人博客登录、小型网站登录);

  3. 记录运行过程中遇到的问题,逐一排查,积累调试经验;

  4. 等待下一篇付费版教程,对比学习,理解免费与付费方案的适用场景,提升代码实用性。

七、总结

本文以最基础的代码,讲解了免费版ddddocr的核心使用方法,结合Playwright实现了网页自动化登录中的验证码识别,全程无复杂逻辑,适合初学者上手练习。

ddddocr免费版虽有局限性,但足以应对个人学习、小型项目的基础需求,是入门OCR识别和浏览器自动化的绝佳案例。通过本文的学习,可快速掌握两个工具的基础用法,为后续学习更复杂的自动化场景、付费解码方案打下基础。

下一篇,我们将聚焦付费解码平台API,解决免费版识别精度低、不支持复杂验证码的问题,实现更稳定、更高效的验证码识别,敬请期待!

如果本文对你有帮助,欢迎点赞、收藏、关注,后续将持续分享Python自动化、爬虫相关的基础教程,助力初学者快速成长。

相关推荐
Datawhale2 小时前
Claude AI 全套课程,如何从零开始构建并自动化各种项目!
运维·人工智能·自动化
数据知道2 小时前
claw-code 源码详细分析:子系统目录地图——几十个顶层包如何用五条轴(会话 / 工具 / 扩展 / 入口 / 桥接)读懂?
服务器·python·ai·claude code
cxr8282 小时前
GPU 加速声场求解器 - 深度扩展
人工智能·python
zaim12 小时前
计算机的错误计算(二百二十六)
java·python·c#·c·错数·mpmath
EmmaXLZHONG2 小时前
Django By Example - 学习笔记
笔记·python·学习·django
ZC跨境爬虫2 小时前
Playwright进阶操作:鼠标拖拽与各类点击实战(含自定义拖拽实例)
前端·爬虫·python·ui
kvo7f2JTy2 小时前
全面解析 Mineru:高效文件解析工具的核心参数详解
python
心静财富之门2 小时前
《前端零基础入门:HTML + CSS + JavaScript 全套速查表(详细版 + 实例)》
前端·javascript·python
蜜獾云2 小时前
Maven项目引入本地JAR包的三种正确方式对比
python·maven·jar