Python使用通用识别OCR库:ddddocr识别验证码
前言
在使用自动化登录网站的时候,经常输入用户名和密码后会遇到验证码。今天介绍一款通用验证码识别 OCR库,对验证码识别彻底说拜拜,它的名字是 ddddocr(带带弟弟 OCR )。这里主要以字母数字类验证码进行说明。
项目地址:https://github.com/sml2h3/ddddocr
一、安装ddddocr
通过命令将自动安装符合自己电脑环境的最新 ddddocr。
pip install ddddocr
如果安装速度慢,可以连接国内镜像进行安装,命令如下:
pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple/
二、使用ddddocr
1. 使用举例
import ddddocr # 识别图片验证码 ocr = ddddocr.DdddOcr() with open('e:/image.jpg','rb') as f: img_bytes = f.read() res = ocr.classification(img_bytes) print(res)
2、案例
# pip install ddddocr # _*_ coding:utf-8 _*_ import ddddocr import urllib.request import urllib.parse import re import shutil import http.cookiejar import json import requests from urllib import error #验证码接口 CaptchaUrl = "http://192.168.0.41:8860/passport/code/image" #登录接口 PostUrl = "http://192.168.0.41:8860/passport/login/account" # 实例化cookie对象 cookie = http.cookiejar.CookieJar() # 创建一个cookie处理器 handler = urllib.request.HTTPCookieProcessor(cookie) # 创建带有cookie的opener opener = urllib.request.build_opener(handler) # 用户名和密码 username = 'aiotadmin' password = 'qwert!@#123' picture = opener.open(CaptchaUrl).read() # 用openr访问验证码地址,获取cookie local = open('e:/image.jpg', 'wb') local.write(picture) local.close() # 识别图片验证码 ocr = ddddocr.DdddOcr() with open('e:/image.jpg','rb') as f: img_bytes = f.read() res = ocr.classification(img_bytes) print(res) PostUrl001="http://192.168.0.41:8860/passport/lb/token" postData = {"username":username,"password":password, "code":res } # 根据抓包信息 构造表单 headers = { 'Accept': '*/*', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36' } headers001={ 'Content-Type': 'application/json', 'Origin': 'http://192.168.0.41:8860', 'Referer': 'http://192.168.0.41:8860/passport/oauth/authorize?client_id=9EU2WH38MAJ2HYuYf2r5qi&redirect_uri=http://192.168.0.41:7001/iot/user/login&response_type=code&scope=AIOT&state=n579Qz', 'Cookie': 'IOTSESSION=ZDE3MTY4N2UtZWM0OS00MWQ3LThkMzctYzFjYTdmYWRhMjM5; OAUTH2SESSION=YWQ0MmE5MWMtNTQzNC00NmU2LWI1ZDctZWMzNWI3ZGYwOTI0' } #postData=urllib.parse.urlencode(postData) #result=opener.open(PostUrl,postData.encode("utf-8")) #Result=result.read().decode("utf-8") #regex=re.compile(r"1440407133") #print(type(regex.search(Result))) r = requests.post(url=PostUrl001,data=json.dumps(postData),headers=headers001) print(r.text)
参考:https://blog.csdn.net/weixin_58839230/article/details/124243584
posted on 2022-07-14 15:13 uestc2007 阅读(5232) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性