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地址

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值