简单的登录验证码,数字和英文组合的,可以轻松识别
登录验证码
如下图登录验证码
验证码是一个图片链接,每次打开页面它会自动刷新
解决思路是先获取到验证码图片,获取验证码图片的方式,可以直接定位到img元素,对元素截图即可
# 保存验证码
page.locator('#imgCode').screenshot(path='yzm.png')
最后使用ddddocr 快速识别
import ddddocr
# 识别验证码
ocr = ddddocr.DdddOcr(show_ad=False) # 实例化
with open('yzm.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
yzm = ocr.classification(img_bytes) # 识别
print(f'识别到的验证码: {yzm }')
代码示例
先安装ddddocr
pip install ddddocr -i https://pypi.douban.com/simple
完整代码
"""
简单的图像验证码
"""
from playwright.sync_api import sync_playwright
import ddddocr
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto('https://www.xxx.com/login')
page.locator("#email").fill('123@qq.com')
page.locator('#pwd').fill('111111')
# 保存验证码
page.locator('#imgCode').screenshot(path='yzm.png')
# 识别验证码
ocr = ddddocr.DdddOcr(show_ad=False) # 实例化
with open('yzm.png', 'rb') as f: # 打开图片
img_bytes = f.read() # 读取图片
yzm = ocr.classification(img_bytes) # 识别
print(f'识别到的验证码: {yzm }')
# 输入验证码
page.locator('#code').fill(yzm)
page.pause()
文章转自:https://www.cnblogs.com/yoyoketang/p/17302103.html