免费验证码识别:用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 运行步骤(初学者必看)
-
复制上述完整代码,粘贴到Python编辑器(PyCharm、VS Code均可);
-
确保已安装所有依赖包(按照1.2步骤安装);
-
直接运行代码,即可看到浏览器自动打开、填写账号密码、识别验证码并登录的全过程。
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调用方法,实现高精度验证码识别;
-
对比免费版与付费版的差异,选择适合自己的方案;
-
添加重试机制、异常处理,优化代码稳定性,适配更多场景。
初学者学习建议
-
先熟练运行本文基础代码,理解每一步的作用,不要急于添加复杂逻辑;
-
尝试替换目标网站,用相同的代码逻辑,实现其他简单验证码的识别(如个人博客登录、小型网站登录);
-
记录运行过程中遇到的问题,逐一排查,积累调试经验;
-
等待下一篇付费版教程,对比学习,理解免费与付费方案的适用场景,提升代码实用性。
七、总结
本文以最基础的代码,讲解了免费版ddddocr的核心使用方法,结合Playwright实现了网页自动化登录中的验证码识别,全程无复杂逻辑,适合初学者上手练习。
ddddocr免费版虽有局限性,但足以应对个人学习、小型项目的基础需求,是入门OCR识别和浏览器自动化的绝佳案例。通过本文的学习,可快速掌握两个工具的基础用法,为后续学习更复杂的自动化场景、付费解码方案打下基础。
下一篇,我们将聚焦付费解码平台API,解决免费版识别精度低、不支持复杂验证码的问题,实现更稳定、更高效的验证码识别,敬请期待!
如果本文对你有帮助,欢迎点赞、收藏、关注,后续将持续分享Python自动化、爬虫相关的基础教程,助力初学者快速成长。