关于图片验证码的识别

在平时的接口自动化的工作中,不可避免的会遇到关于图片验证码的识别的问题,一般来说我们有3种方法:

1、让开发提供一个万能验证码

2、让开发在测试环境去掉验证码验证

3、使用第三方接口进行验证码识别

1和2本质上是避开验证码的干扰,而2一般不建议采用,这里主要对3进行讲解。

一、第三方接口

这里我们通过图鉴图片识别平台:http://www.ttshitu.com/,充值一元可以用很多次,非常适合平时自己学习和使用。

查看接口文档:http://www.ttshitu.com/docs/index.html#pageTitle,只使用必填参数:username、password、image即可。

其中image参数说明如下,我们使用base64图片:

二、抓取图片验证码接口

通过对验证码图片接口进行抓包以及base64编码解码得到验证码图片code.jpg

三、Code

with open(file=r'api\manage\code.jpg', mode='rb') as f:
    base64_data = base64.b64encode(f.read())
    b64 = base64_data.decode()


def get_image_code():
    url = 'http://api.ttshitu.com/predict'
    data = {
        'username': 'xxx',# 图鉴用户名
        'password': 'xxx',# 图鉴密码
        'image': b64
    }
    res = requests.post(url=url, json=data)
    result = json.loads(res.text)
    print(result)
    if result['message'] == 'success':
        image_code = result['data']['result']
        print(f'验证码是{image_code}')
        return image_code
    else:
        print('解析验证码失败')
get_image_code()

>>>
{'success': True, 'code': '0', 'message': 'success', 'data': {'result': 'xnxs', 'id': 'C_RtZoaYSWyd_QUxrfTFhg'}}
验证码是xnxs

ps:

res.json():返回json格式的响应内容

res.text:返回Unicode str格式的响应内容

res.content:返回二进制字节bytes格式的响应内容

总结:获取json用res.json(),获取文本用res.text, 获取图片或文件用res.content

posted @ 2022-06-04 17:30  少年不太冷2  阅读(1664)  评论(0)    收藏  举报