欢迎光临
我们一直在努力

电话邦语言验证码识别

一、简介

如图所示,是电话邦的语义验证码,图片中会有很多形状,比如:长方形、正方形,圆形等。不同形状还有不同颜色,比如:红色、蓝色、紫色等。每一个形状上面都有一个数字,而且这些数字周围都有很多其他数字干扰。很多数字重叠在一起,导致这个验证码的识别非常困难。

二、识别准备

1、图片

识别这个验证码需要获取背景图片,如下图所示。最好是获取原图(原图就是通过图片链接下载的图片,这样得到的图片都是统一的)

实在获取不了原图,也可以通过截图的方式得到图片。截图尽量和原图一样就行。

2、描述文本

识别还需要得到让用户输入、点击的描述文本,不然不知道选什么。描述的文本不用识别,直接在html中就可以获得文本内容

比如:请输入橙色菱形中的数字

三、识别代码

下面的代码只需要传入上面要求的图片、描述文本就可以识别

import base64
import requests
import datetime
from io import BytesIO
from PIL import Image

t1 = datetime.datetime.now()

#PIL图片保存为base64编码
def PIL_base64(img, coding='utf-8'):
img_format = img.format
if img_format == None:
img_format = 'JPEG'

format_str = 'JPEG'
if 'png' == img_format.lower():
format_str = 'PNG'
if 'gif' == img_format.lower():
format_str = 'gif'

if img.mode == "P":
img = img.convert('RGB')
if img.mode == "RGBA":
format_str = 'PNG'
img_format = 'PNG'

output_buffer = BytesIO()
# img.save(output_buffer, format=format_str)
img.save(output_buffer, quality=100, format=format_str)
byte_data = output_buffer.getvalue()
base64_str = 'data:image/' + img_format.lower() + ';base64,' + base64.b64encode(byte_data).decode(coding)
# base64_str = base64.b64encode(byte_data).decode(coding)

return base64_str

# 加载图片
img1 = Image.open(r'E:\\Python\\lixin_project\\OpenAPI接口测试\\test_img\\94-1.jpg')
# 图片转base64
img1_base64 = PIL_base64(img1)

# 验证码识别接口
# 可以根据自己网络情况选择不同接口
# http://bq1gpmr8.xiaomy.net(电信)
# http://220.167.181.200:9009(移动、电信、联通)

# 验证码识别接口
url = "http://220.167.181.200:9009/openapi/verify_code_identify/"
data = {
# 用户的key
"key":"vVlAIZWYS6RSVDbwOt1d",
# 验证码类型
"verify_idf_id":"94",
# 样例图片
"img_base64":img1_base64,
# 文本描述
"words": "请输入橙色菱形中的数字",
}

header = {"Content-Type": "application/json"}

# 发送请求调用接口
response = requests.post(url=url, json=data, headers=header)

# 获取响应数据,识别结果
print(response.text)
print("耗时:", datetime.datetime.now() – t1)

识别结果会给你要输入的数字,你拿到后直接输入文本框点击验证就好,如下图所示。

而且识别速度也是非常快,0.3秒就可以得到识别结果。

想了解更多验证码识别,请访问:得塔云

赞(0)
未经允许不得转载:171主机测评 » 电话邦语言验证码识别
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址