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

news2024/11/19 3:24:51

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.coloradmin.cn/o/1276090.html

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

相关文章

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来,就成为了大家的好帮手,学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了,莫名奇妙的成为了“帮凶”,一位研究人员利用 ChatGPT 创建了虚假的数据集,用来支持未知的科学假设。…

Windows环境 dockertopdesk 部署gitlab

1.在dockertopdesk里搜索 gitlab镜像 (pull)拉取镜像 2.运行镜像到容器 mkdir gitlab gitlab/etc gitlab/log gitlab/opt docker run -id -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitla…

Linux系统之centos7编译安装Python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包,并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…

8.整数转换为浮点数【2023.11.30】

1.问题描述 整数转换为浮点数。 2.解决思路 使用input函数读取输入的整数 input_int int(input()) #将整数转换为浮点数类型 output_float float(input_int) 3.代码实现 numint(input("请输入一个整数")) num1float(num) print(num1)4.运行结果

掌握HarmonyOS框架的ArkTs如何管理和共享状态数据

ARKTS(Ark TypeScript)是HarmonyOS应用框架的一部分,提供了一种灵活而强大的状态管理机制。在ARKTS中,AppStorage和LocalStorage是两个关键的概念,它们分别用于应用级和页面级的状态共享。通过深入了解这两个特性&…

【Python】OpenCV库中常用函数详解和示例

在Python中,OpenCV(Open Source Computer Vision Library)是一个广泛使用的图像和视频处理库。它包含许多用于图像处理和计算机视觉任务的函数。本文对一些常用的OpenCV函数及其详细解释和示例,以帮助大家理解和使用。 目录 cv2.…

跨模态图像翻译:使用具有感知监督的多生成网络合成MR脑图像的CT图像

Cross-modality image translation: CT image synthesis of MR brain images using multi generative network with perceptual supervision 跨模态图像翻译:使用具有感知监督的多生成网络合成MR脑图像的CT图像背景贡献实验方法损失函数Thinking 跨模态图像翻译&…

使用 NRF24L01 无线收发模块进行远程控制

NRF24L01 是一款基于 2.4GHz 射频通信的低功耗无线收发模块,具有高性能和稳定性,适用于远程控制和数据传输应用。本文将介绍如何使用 NRF24L01 模块进行远程控制,包括硬件的连接和配置,以及相应的代码示例。 一、引言 NRF24L01 是…

es6之class类(未完成)

es6之class类 一、什么是类二、类的基本用法1.定义类2.constructor() 方法3.静态方法(属性)4.私有方法(属性) 三、继承 一、什么是类 类是用于创建对象的模板,类只是让对象原型的写法更加清晰、更像面向对象编程的语法。 class Pe…

matlab 多目标粒子群优化算法MOPSO

1、内容简介 略 21-可以交流、咨询、答疑 多目标、粒子群 2、内容说明 多目标粒子群优化算法MOPSO 3、仿真分析 略 %% Problem Definition TestProblem3; % Set to 1, 2, or 3 switch TestProblem case 1 CostFunction(x) MyCost1(x); nVar5; …

REST-Assured--JAVA REST服务自动化测试的Swiss Army Knife

什么是REST-Assured REST Assured是一套基于 Java 语言实现的开源 REST API 测试框架 Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into t…

TCP简介及特性

1. TCP协议简介 TCP是Transmission Control Protocol的简称,中文名是传输控制协议。它是一种面向连接的、可靠的、基于IP的传输层协议。两个TCP应用之间在传输数据的之前必须建立一个TCP连接,TCP采用数据流的形式在网络中传输数据。TCP为了保证报文传输的…

网站更换IP的四大注意事项

1.对网站当中的数据进行备份 网站更换IP时可以将页面的数据库文件和站点文件通过下载工具在本地完成备份。 2.更换解析域名 从站点域名管理后台当中更换域名地址,改为新的IP地址。 3.确保IP安全 在用户更换IP前一定要确定IP是否安全,一旦IP存在不良…

如何选择适合长期投资的股票板块?

大家在学习炒股的过程中肯定没少听“板块”这个词,新手可能一脸懵逼,板块到底是啥意思?为什么会有这么多板块? 一、什么是股票板块?常见的板块分类有哪些? 板块理解起来其实很简单,它就是一种分…

java开发实战 基于Resuful风格开发接口, IocDi和nginx,以及三层架构思想,分层解耦,并使用Apifox对接口数据进行测试。

开发规范: 前后端分离: 根据需求文档开发 Resultful风格: REST(REpresentational State Transfer),表述性状态转换,它是一种软件架构风格。 POST(insert) 负责新增的操作 http://localhost:8080…

TZOJ 1386 十转换转R进制

答案&#xff1a; #include<stdio.h> char fun(int n) {if (n > 0 && n < 10) //如果是小于10进制的return n 48; //ASCII值48else if (n > 10 && n < 16) //如果是大于10进制小于16进制的return n 55; //ASCII值55elseretur…

JIRA 基本使用

该页面可以&#xff1a; 查看个人基本信息以及归属的邮件组修改常用参数配置查看指给自己的 Open 问题查看自己最近的活动记录等 权限管理 Project 权限管理 JIRA 项目有三种通用权限方案&#xff1a; 公开权限方案&#xff08;默认禁止使用此方案&#xff09;&#xff1a…

Google Chrome 下载 (离线版)

1 访问网址 Google Chrome 网络浏览器 2 点击 下载Chrome 3 直接运行 ChromeStandaloneSetup64.exe 其他&#xff1a; ####################### 谷歌浏览器 (Google Chrome) 最新版离线安装包下载 https://www.iplaysoft.com/tools/chrome/#google_vignette Google Chrome …

【二叉树】常见题目解析(2)

题目1&#xff1a;104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 题目1描述&#xff1a; 题目1分析及解决&#xff1a; &#xff08;1&#xff09;base case&#xff1a;当前节点为null时&#xff0c;以当前节点为根节点的树最大深度是0。 &#xff08;2&…

深入理解前端路由:构建现代 Web 应用的基石(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…