【Python爬虫项目实战三】Ddddocr识别Ocr过开放猫验证码(接Authorization认证更新)

news2024/12/23 3:43:30

在这里插入图片描述

目录

  • 🍇前言
  • 🍍验证码识别的几个方法
    • 🥥百度AI开放平台
    • 🥥Ddddocr
      • 🦑分析验证码位数
      • 🦑获取验证码接口
      • 🦑算法识别匹配
      • 🦑请求登陆接口
  • 🍋总结:

🍇前言

本篇文章接《获取Chatgpt3.5免费接口文末付代码(过Authorization认证)》,由于上次更新了代码后,对方做了验证,而且验证码有点难识别,真人都有点难看明白,喜欢爬虫类文章的可以订阅我专栏哦
⭐⭐欢迎订阅⭐⭐ ⭐⭐欢迎订阅⭐⭐
🚀Python爬虫项目实战系列文章!!
⭐⭐欢迎订阅⭐⭐ ⭐⭐欢迎订阅⭐⭐
在这里插入图片描述
例如:
在这里插入图片描述

🚀Python爬虫项目实战系列文章!!
⭐⭐欢迎订阅⭐⭐

【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)
【Python爬虫项目实战二】Chatgpt还原验证算法-解密某宝伪知网数据接口

⭐⭐欢迎订阅⭐⭐


🍍验证码识别的几个方法

🥥百度AI开放平台

在对接之前,我们先看一下识别效果,可见效果一般,存在个别识别不出来,又因为需要付费于是不考虑
在这里插入图片描述
在这里插入图片描述

🥥Ddddocr

之前在其他项目中,已经介绍过了Dddocr,可以参考我的文章
《Selenium验证码ddddocr识别:带带ddocr》

识别验证码,5行搞定

 ocr = ddddocr.DdddOcr()
    with open('image.jpg', 'rb') as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes)
    print(res)

效果和百度一样遇到几个畸形的就直接识别出错,可以看看我的截图
在这里插入图片描述


{"msg":"操作成功","img":"","code":200,"captchaEnabled":true,"uuid":"d14f1de7a0b842cfae525f3389d00f86"}
识别结果:9t67
提取结果:9t6
字符串中不包含 +-*/ 符号
{"msg":"操作成功","img":"","code":200,"captchaEnabled":true,"uuid":"010ed8010fe241c9a8c2e8c0989f9084"}
识别结果:4j4e7
4j4
字符串中不包含 +-*/ 符号
{"msg":"操作成功","img":"","code":200,"captchaEnabled":true,"uuid":"623dd34830554da49911b2ae75507921"}
识别结果:3t03
3t0
字符串中不包含 +-*/ 符号
{"msg":"操作成功","img":"","code":200,"captchaEnabled":true,"uuid":"164524dd70e74ae18d3782d7887b8974"}
识别结果:1*37
提取结果:1*3
字符串中包含 +-*/ 符号

之前识别发现效果不理想,但是在验证码中,存在简单的验证码随机刷新,所以我的做法是:舍弃百度AI通过Ddddocr识别,识别过程中判断"+、-、*、/"逐步往下获取参数,具体可以往下看


🦑分析验证码位数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在上面的验证码中,都是10内的"+、-、、/“运算,所以只需要匹配”+、-、、/"左右的数字即可

🦑获取验证码接口

def get_captcha():
    headers = {
        'Accept': 'application/json, text/plain, */*',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Origin': 'https://openmao.panchuang.net',
        'Referer': 'https://openmao.panchuang.net/',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-site',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }

    response = requests.get('https://mapi.panchuang.net/api/user/captchaImage', headers=headers)
    print(response.text)
    return response.json()

🦑算法识别匹配

在这里插入图片描述

将获取到的验证码通过解析base64存放在根目录

def decode_base64_to_img(base64_str):
    img_data = base64.b64decode(base64_str)
    with open('image.jpg', 'wb') as f:
        f.write(img_data)
    img = Image.open('image.jpg')

Ddddocr识别,识别到后进行特征提取,提取完毕逐步分析,如果提取失败反复操作


def verification():
    # 验证码识别
    ocr = ddddocr.DdddOcr()
    with open('image.jpg', 'rb') as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes)
    print(res)
    text = res[:3]  # 提取前三位子串
    print(text)  # 输出:8*4
    if "+" in text or "-" in text or "*" in text or "/" in text:
        print("字符串中包含 +、-、* 或 / 符号")
        first_char = text[0]  # 第一位字符
        last_char = text[-1]  # 最后一位字符
        print("第一位字符:", first_char)
        print("最后一位字符:", last_char)
        if "+" in text:
            result=int(first_char)+int(last_char)
        if "-" in text:
            result=int(first_char)-int(last_char)
        if "*" in text:
            result=int(first_char)*int(last_char)
        if "/" in text:
            result=int(first_char)/int(last_char)
        print(f"计算结果为{result}")
    else:
        print("字符串中不包含 +、-、* 或 / 符号")
        result = get_captcha()
        # 转换本地
        decode_base64_to_img(result['img'])
        verification()

最后获得计算数据
在这里插入图片描述

🦑请求登陆接口

观察login接口
在这里插入图片描述
uuid是和验证码一起获取到的
在这里插入图片描述
uuid用于定位图片id,带着计算结果和uuid去login接口请求即可

我将计算出来的uuid和验证码结果,显示出来进行构造,这里注释了请求,因为请求了就显示验证码过期
在这里插入图片描述

 print(uuid)
 print(result_num)
    json_data = {
        'username': '****9',
        'password': '*****',
        'loginTypeEnum': 'ACCOUNT',
        'code': result_num,
        'uuid': uuid,
    }

    # response = requests.post('https://mapi.panchuang.net/api/user/login', headers=headers, json=json_data)
    # print(response.text)

通过拼接手动填上去验证最后获得token
在这里插入图片描述

🍋总结:

以上就是今天的教程,代码审核通过后会放在评论区,该项目现在只是demo仅供提取计算验证码,如果需要Chatgpt3.5接口的可以留言哦,该接口现在用于本人账号对接自动回复,长期互动支持的可以互关哈

推荐我的爬虫文章
《记一次云之家签到抓包》
《记一次视频抓包m3u8解密过程》
《抓包部分软件时无网络+过代理检测 解决办法 安卓黄鸟httpcanary+vmos》
《Python】记录抓包分析自动领取芝麻HTTP每日免费IP(成品+教程)》
《某课抓包视频 安卓手机:黄鸟+某课app+VirtualXposed虚拟框架》

推荐专栏:

《Python爬虫脚本项目实战》

该专栏往期文章:
《【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)》

🥦如果感觉看完文章还不过瘾,欢迎查看我的其它专栏
🥦作者对python有很大的兴趣,完成过很多独立的项目:例如滇医通等等脚本,但是由于版权的原因下架了,爬虫这一类审核比较严谨,稍有不慎就侵权违规了,所以在保证质量的同时会对文章进行筛选

如果您对爬虫感兴趣请收藏或者订阅该专栏哦《Python爬虫脚本项目实战》,如果你有项目欢迎联系我,我会同步教程到本专栏!

🚀Python爬虫项目实战系列文章!!
⭐⭐欢迎订阅⭐⭐

【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)
【Python爬虫项目实战二】Chatgpt还原验证算法-解密某宝伪知网数据接口

⭐⭐欢迎订阅⭐⭐
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Doris(13):数据模型

在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。一张表包括行(Row)和列(Column)。Row即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column可以分为两大类:Key&a…

Java双亲委派和类加载器

Java双亲委派和类加载器 Java类生命周期主要内容类加载器的分类Bootstrap ClassLoader非Bootstrap ClassLoaderExtension ClassLoaderApplication ClassLoaderUser ClassLoader 类加载的命名空间问题提出双亲委派机制问题解答 破坏双亲委派破坏双亲委派-第一次破坏双亲委派-第二…

【MySQL】GROUP BY分组子句与联合查询的使用详解

目录 前篇都在这里喔~ MySQL的增删改查 MySQL数据库约束和聚合函数的使用 1.GROUP BY子句 练习表如下: 1.查询不包含董事长的平均工资 2.按照角色分组计算平均工资 3.过滤掉平均工资大于一万的角色 4.♥过滤数据♥ 2.联合查询 以下列表作为依据 1.内连接 …

(十二)rk3568 NPU 中部署自己训练的模型,(1)使用yolov5训练自己的数据集-环境搭建部分

rk3568中带有0.8T算力的NPU,可以完成一些轻量级的图像识别任务。 本文向零基础人员介绍从windows中搭建训练环境,模型训练、模型转换到rknn模型部署到电路板上全部过程。 rk3568npu支持caffe、darknet、onnx、pytorch、tensorflow等多种框架。 本人使用…

springboot+vue企业人事人力资源管理系统java公司员工出差考勤办公OA系统

“简易云”是这个系统的名字 (6)系统管理:主要下拉分为角色管理、菜单管理; 角色管理:此页面可对角色进行增删改查操作,可修改不同角色的权限; 菜单管理:此页面可配置系统可展示的菜…

linux学习记录 和文件系统相关的命令

记录过程,会有错误,硬链接与软链接哪里可能没有说清楚 文件,目录操作命令 pwd 获取当前处于哪个目录当中,返回的是绝对路径 [rootlocalhost home]# pwd /homecd cd 相对/绝对路径 切换目录的,change directory .代表当前目录 …代表上一级…

【C++学习】类和对象--对象特性(1)

构造函数和析构函数 对象的初始化和清理是两个非常重要的安全问题 一个对象或变量没有初始状态,对其使用后果是未知的 使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 C利用构造函数和析构函数解决上述问题,这两个函数…

排序 Comparable 和 Comparator 区别所在

在 Java 中,Comparable 和Comparator 都是用来元素排序的,但是本质不用。我们从几点开始分析。 1.字面含义 Comparable 中文翻译是”比较“,以 able 结尾 说明它具有某种能力。 Comparator 中文翻译是”比较器“,以 or 结尾 表明…

【C++ 二十】STL:遍历、查找、排序、拷贝和替换、算术生成、集合算法

STL:遍历、查找、排序、拷贝和替换、算术生成、集合算法 文章目录 STL:遍历、查找、排序、拷贝和替换、算术生成、集合算法前言1 常用遍历算法1.1 for_each1.2 transform 2 常用查找算法2.1 find2.2 find_if2.3 adjacent_find2.4 binary_search2.5 count…

室内人员定位系统源码,采用java语言+UWB定位技术开发

运用UWB定位技术开发的人员定位系统源码 文末获取联系 本套系统运用UWB定位技术开发的高精度人员定位系统,通过独特的射频处理,配合先进的位置算法,可以有效计算复杂环境下的人员与物品的活动信息。 系统提供位置实时显示、历史轨迹回放、人…

循序渐进,学会用pyecharts绘制瀑布图

循序渐进,学会用pyecharts绘制瀑布图 瀑布图简介 瀑布图(Waterfall Plot)是由麦肯锡顾问公司所独创的图表类型,因为形似瀑布流水而称之为瀑布图。 瀑布图采用绝对值与相对值结合的方式,适用于表达多个特定数值之间的数量变化关系。当用户想…

本地Nacos设置脚本命令启动

一、起因: 每次启动都要找到位置写一遍命令费劲。 1、可设置开机启动 2、可设置脚本自动 二、配置脚本: 1、这是我nacos的位置 用bat命令启动一个cmd命令行,然后在里面执行两天命令。 ①命令一:打开指定路径 ②命令二&#xf…

Java图书借阅管理系统详细设计和实现

基于JavaSpringHtml的图书借阅管理系统详细设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

cmd连接本地mysql数据库和远程服务器mysql数据库

1.在cmd窗口里连接本地的mysql数据库 打开运行窗口,输入cmd,确定 windowsr 或在左下角windows图标处鼠标右键,点击运行按钮打开运行窗口 格式: mysql -u用户名 -p密码 mysql -uroot -p123456 成功进入mysql 2. 在cmd窗口里连接远…

尚硅谷_宋红康_第17章_反射机制

第17章_反射机制 本章专题与脉络 1. 反射(Reflection)的概念 1.1 反射的出现背景 Java程序中,所有的对象都有两种类型:编译时类型和运行时类型,而很多时候对象的编译时类型和运行时类型不一致。 Object obj new String(“hello”); obj.ge…

Django使用Celery异步发送邮件

Django使用Celery异步发送邮件 前言邮箱配置Django项目发送邮件配置邮件服务器Django发送邮件模块 Celery概述工作模式安装Celery Celery的基本使用创建config.py配置文件创建Celery实例并加载配置定义任务启动Celery服务提交任务异常 Celery发送邮件创建config.py配置文件创建…

机器学习 day05(多元线性回归,向量化,及向量化高效的原理)

1. 单个特征(变量)的线性回归模型 房子的价格仅由房子的大小决定,如图: 2. 多个特征(变量)的线性回归模型 房子的价格由房子的大小,房子有多少个卧室,房子有几层,房子…

2023年,逆势拿到大厂Offer,我怎么做?|原创

关于面试,做一些经验分享。 过年时候默默给自己定下了3个目标。第一个就是2023要换一份喜欢的工作。没想到在4月就提前实现了这个目标。 是一个我很看好的大厂,期待的岗位、看好的方向,薪资涨幅也比较给力。最近这段时间没空发文章&#xff0…

MySql中,join 语句怎么优化?

既然每次从驱动表取数据比较耗时,那我们每次从驱动表取一批数据放到内存中,然后对这一批数据进行匹配操作。这批数据匹配完毕,再从驱动表中取一批数据放到内存中,直到驱动表的数据全都匹配完毕 批量取数据能减少很多IO操作&#…

二十三、高级网络技术及应用——BFD解析

文章目录 前言一、BFD 简介1、概述:2、作用: 二、静态路由调用 BFD1、配置静态 BFD2、配置动态 BFD 三、OSPF联动BFD四、BFD 单臂回声(one arm echo) 前言 BFD:Bidirectional Forwarding Detection,双向转…