Python+Requests对图片验证码的处理

Requests对图片验证码的处理

在web端的登录接口经常会有图片验证码的输入,而且每次登录时图片验证码都是随机的;当通过request做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用;

通过request对图片验证码的识别方法(带有噪点的图片)

一、通过在本地安装OcrServer工具识别图片验证码

百度下载ocrserver工具

如下图:解压后双击OcrServer.exe;然后电脑的右下角会显示该服务的IP和端口

二、通过python编写脚本,并配合OcrServer工具,识别出图片验证码的值

前置条件:导入需要的插件

import base64
import request

1、发送图片验证码的接口,返回图片的响应后保存到指定文件夹

# 获取验证码图片,并保存下来为123.png
response = requests.get('获取验证码图片的URL地址')
img = response.content
with open('../sample/123.png','wb') as f:
    f.write(img)

2、打开并读取图片后,通过base64对图片进行编码

# 读取图片后,通过base64对图片进行编码
png = open('123.png','rb')
res = png.read()
s = base64.b64encode(res)
png.close()
# print(s.decode('ascii'))

3、在本地打开OcrServer.exe插件后,发送编码后的图片到指定的url地址,返回值为json格式

# 在本地打开OcrServer.exe插件后,发送编码后的图片到指定的url地址,返回值为json格式:{"code":"验证码图片的值"}
response = requests.post(url="http://127.0.0.1:12349",data=s)
code_num = response.json()
print(code_num['code'])

4、查看识别的验证码图片的值

获取到的验证码图片如下图

 代码执行后输出的结果如下图

 全部代码如下图示例:可写成一个封装类,用来调用

import base64
import requests

# 获取验证码图片,并保存下来为123.png
response = requests.get('获取图片验证码的url地址')
img = response.content
with open('../sample/123.png','wb') as f:
    f.write(img)

# 读取图片后,通过base64对图片进行编码
png = open('123.png','rb')
res = png.read()
s = base64.b64encode(res)
png.close()
# print(s.decode('ascii'))

# 在本地打开OcrServer.exe插件后,发送编码后的图片到指定的url地址,返回值为json格式{“code”:"验证码图片的值"}
response = requests.post(url="http://127.0.0.1:12349",data=s)
code_num = response.json()
print(code_num['code'])

通过编写python代码,导入第三方库(),识别图片验证码(没有噪点的图片)

 没有噪点的图片;如下图:

纯数字:下面代码的图片名称以为666.png代替

纯中文:下面代码的图片名称以为999.png代替

 1、首先下载 Pillow库和 pytesseract库,用来识别图片验证码

pip install Pillow
pip install pytesseract

2、通过导入第三方库,然后编写如下代码识别图片验证码;

示例代码:下面以纯数字的图片验证码举例

from PIL import Image
import pytesseract

# pytesseract和PIL只能对图片验证码没有噪点的识别成功
path = '666.png'
captcha = Image.open(path)
result = pytesseract.image_to_string(captcha,lang="chi_sim")
print(result)

执行结果:识别成功

 示例代码:下面以纯中文的图片验证码举例

from PIL import Image
import pytesseract

# pytesseract和PIL只能对图片验证码没有噪点的识别成功
path = '999.png'
captcha = Image.open(path)
result = pytesseract.image_to_string(captcha,lang="chi_sim")
print(result)

执行结果:识别成功

获取验证码图片的URL地址

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

Vscode中字符串报错:Unknown word.cSpell

一. 报错现象 二. 原因 是vscode IDE工具中的插件 Code Spell Checker 会检查字符串的合理性,我们写的中式拼音的字符串,不是一个标准英文单词,就会提示错误,解决方法就是让该插件遇到特定词汇不报错 三. 解决方法

macOS本地调试k8s源码

目录 准备工作创建集群注意点1. kubeconfig未正常加载2. container runtime is not running3. The connection to the server 172.16.190.132:6443 was refused - did you specify the right host or port?4. 集群重置5.加入子节点 代码调试 准备工作 apple m1芯片 安装vmwa…

TCP_报文格式解读

报文格式 header部分字段含义解析 固定字段 对于header中固定部分字段含义,见之前的blog《TCP报文分析》; 对部分字段含义补充说明 Data Offset:4bit,tcp header的长度,单位:32bit(4字节&…

指针(3)

如图,这是比较常见的冒泡排序,不过只能对整形数据进行排序。本篇博文主要介绍如何模拟qsort函数实现冒泡排序对任何数据的排序。 如果我们想对任何数据进行排序,我们可以发现,排序的趟数是固定的,我们只需要对比较大…

大数据Doris(三十一):Doris简单查询

文章目录 Doris简单查询 一、简单查询 二、Join

linux(3)之buildroot配置软件包

Linux(3)之buildroot配置软件包 Author:Onceday Date:2023年11月30日 漫漫长路,才刚刚开始… 参考文档: Buildroot - Making Embedded Linux Easymdev.txt docs - busybox - BusyBox: The Swiss Army Knife of Embedded Linu…

组合(回溯+剪枝、图解)

77. 组合 - 力扣(LeetCode) 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 样例输入 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],…

Unittest单元测试之unittest用例执行顺序

unittest用例执行顺序 当在一个测试类或多个测试模块下,用例数量较多时,unittest在执行用例 (test_xxx)时,并不是按从上到下的顺序执行,有特定的顺序。 unittest框架默认根据ACSII码的顺序加载测试用例&a…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标)

时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标) 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测(多图,多指标)预测效果基本介绍环境准备程序设计参考资料预测效果 基本介绍

ChatGPT一周年,奥特曼官宣 OpenAI 新动作!

大家好,我是二狗。 今天是11月30日,一转眼,ChatGPT 发布已经一周年了! 而就在刚刚,ChatGPT一周年之际。 OpenAI 正式宣布Sam Altman回归重任CEO, Mira Murati 重任CTO,Greg Brockman重任总裁,O…

无需繁琐编程 开启高效数据分析之旅!

不学编程做R统计分析:图形界面R Commander官方手册 R Commander是 R 的图形用户界面,不需要键入命令就可通过熟悉的菜单和对话框来访问 R 统计软件。 R 和 R Commander 均可免费安装于所有常见的操作系统——Windows、Mac OS X 和 Linux/UNIX。 本书作…

LeetCode Hot100 169.多数元素

题目: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 方法一:哈希表 ​ class Solution {public int…

FATFS基本入门教程(2)-什么是文件系统

作者注:FATFS应该是一个比较常用的嵌入式文件系统,支持FAT12/FAT16/FAT32/EXFAT格式,很多开发人员都用过。我在这里会写一系列文章来介绍FATFS的基本使用,欢迎感兴趣的同学关注。 已发布的内容: FATFS基本入门指南&…

wordpress安装之Linux ftp传输

工欲善其事,必先利其器。 最近准备在自己的服务器上搭建一个个人技术分享的平台。 因为我发现现在网络上的工具呀,还有一些问题的解答总是模棱两可,所以我打算自己做一个。 首先呢,我们需要有一个linxu的系统当服务器,然后呢&a…

Windows安装Mysql Workbench及常用操作

Mysql Workbench是mysql自带的可视化操作界面,功能是强大的,但界面和navicat比,就是觉得别扭,但其实用惯了也还好,各有特色吧。这里记录一下常用的操作。 官方手册:MySQL Workbench 一、安装 1. 下载 官方…

RPG项目01_场景及人物动画管理器

基于“RPG项目01_UI登录”,新建一个文件夹名为Model(模型) 将资源场景拖拽至Model中 找到相应场景双击进入 红色报错部分Clear清掉即可,我们可以重做 接下来另存场景 起名为Game 点击保存 场景就保存至Scene中了 在文件夹下新创建…

探究Kafka原理-4.API使用

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理🔥如果感觉博主的文章还不错的话,请&#x1f44…

[读论文]meshGPT

概述 任务:无条件生成mesh (无颜色)数据集:shapenet v2方法:先trian一个auto encoder,用来获得code book;然后trian一个自回归的transformermesh表达:face序列。face按规定的顺序&a…

SAP_ABAP_编程基础_列表_自定义列表 / 多页列表 / 列表页面设置

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读494次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/j…

WebSocket 前端使用vue3+ts+elementplus 实现连接

1.配置连接 websocket.ts文件如下 import { ElMessage } from "element-plus";interface WebSocketProps {url: string; // websocket地址heartTime?: number; // 心跳时间间隔,默认为 50000 msheartMsg?: string; // 心跳信息,默认为pingr…