🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
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地址
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!