简单的登录验证码,数字和英文组合的,可以轻松识别

登录验证码

如下图登录验证码

验证码是一个图片链接,每次打开页面它会自动刷新

解决思路是先获取到验证码图片,获取验证码图片的方式,可以直接定位到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