首页 > 其他分享 >京东中文点选验证码识别方案

京东中文点选验证码识别方案

时间:2024-08-27 16:57:52浏览次数:12  
标签:点选 img format base64 验证码 str 京东 识别 point

 一、验证码介绍

这款验证码防御能力还是很强,主要是中文字体特殊,颜色和背景融合度很高,以至于人都很难看清楚。有些文字甚至进行了模糊处理,人都很难识别是上面字。所以给机器识别造成了很大困扰。

二、识别代码

1、识别参数介绍

京东中文点选验证码识别,我们需要两种图片才能完成,分别是点击区大图

点击顺序小图

这里都需要原图才能达到最好的识别效果,截图效果可能会差一点。

2、识别代码

import base64
import requests
import datetime
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont

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\57-1.jpg')
# 图片转base64
img1_base64 = PIL_base64(img1)
img2 = Image.open(r'E:\Python\lixin_project\OpenAPI接口测试\test_img\57-2.jpg')
# 图片转base64
img2_base64 = PIL_base64(img2)

# 验证码识别接口
url = "http://www.detayun.cn/openapi/verify_code_identify/"
data = {
    # 用户的key
    "key": "IQt9nbDGqZ4AYIrPAvrB",
    # 验证码类型
    "verify_idf_id": "57",
    # 点击区大图
    "img1": img1_base64,
    # 点击顺序小图
    "img2": img2_base64,
}
header = {"Content-Type": "application/json"}

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

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

# 标记识别结果
draw = ImageDraw.Draw(img1)
# 字体设置
font_type = "./msyhl.ttc"
font_size = 20
font = ImageFont.truetype(font_type, font_size)
# 获取结果列表
y = response.json()['data']['res_str']
point_list = eval(y)
# 标记点击序号
for i, point in enumerate(point_list):
    draw.ellipse((point[0] - 15, point[1] - 15,point[0] + 15, point[1] + 15), fill=(255, 0, 0))
    draw.text((point[0] - 5, point[1] - 15), str(i + 1), fill=(255, 255, 255), font=font)

img1.show()

运行上面代码,可以看到实际的点击效果如下图

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

标签:点选,img,format,base64,验证码,str,京东,识别,point
From: https://blog.csdn.net/Dxy1239310216/article/details/141567718

相关文章

  • 京东内推码
    内推码:C49L8秋招到啦!使用内推码可私信帮忙查看投递进度哦~每个岗位都可以用哦!感谢大家多多评论点赞转发~京东2025校园招聘“燃”力全开专属导师助推身份转变专属培养赋能快速发展十大职位方向只为等待最“燃”的你网申入口:https://campus.jd.com/api/wx/position/inde......
  • 京东面试:600Wqps高并发ID如何设计?时钟回拨 如何解决?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 京东中文点选验证码识别方案
     一、验证码介绍这款验证码防御能力还是很强,主要是中文字体特殊,颜色和背景融合度很高,以至于人都很难看清楚。有些文字甚至进行了模糊处理,人都很难识别是上面字。所以给机器识别造成了很大困扰。二、识别代码1、识别参数介绍京东中文点选验证码识别,我们需要两种图片才能完......
  • 京东中文点选验证码识别方案
    一、验证码介绍这款验证码防御能力还是很强,主要是中文字体特殊,颜色和背景融合度很高,以至于人都很难看清楚。有些文字甚至进行了模糊处理,人都很难识别是上面字。所以给机器识别造成了很大困扰。二、识别代码1、识别参数介绍京东中文点选验证码识别,我们需要两种图片才能完成......
  • KubeCon China 2024全球大会在香港举行,京东云受邀参加探讨云原生、开源及 AI
    和数字化大潮一样,在AI化的革命下,云端也在全面拥抱AI,并在方方面面变得更安全、更高效,让全球各行各业受益。2024年8月21日,由云原生计算基金会(CNCF)和 Linux 基金会联合主办的KubeCon + CloudNativeCon + Open Source Summit + AI_dev China 2024在香港开幕。大会首日吸......
  • 京东小程序折叠屏适配探索
    前言随着近年来手机行业的飞速发展,手机从功能机进入到智能机,手机屏幕占比也随着技术和系统的进步越来越大,特别是Android10推出以后,折叠屏逐渐成为Android手机发展的趋势。图1Android手机屏幕发展趋势京东小程序近年来也支持了越来越多的业务和应用,做好小程序的折叠屏的适配......
  • 京东面试:mysql分库分表,深度翻页太慢,如何解决
    京东面试:mysql分库分表,深度翻页太慢,如何解决?在40岁老架构师尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein希音、shopee、百度、网易的面试资格,遇到很多很重要的面试题:mysql分库分表,深度翻页太慢,如何解决?分库分表后,分页......
  • 【Minecraft】京东云轻量云主机搭建我的世界联机服务器教程(Java版)
    一、Minecraft介绍《我的世界》(英语:Minecraft)是一款沙盒游戏,最初由瑞典游戏设计师马库斯·阿列克谢·泊松单独开发,随后由2009年成立的瑞典公司Mojang开发并发行。玩家可以在一个随机生成的3D世界内,以带材质贴图的立方体为基础进行游戏。游戏中的其他特色包括探索世界、采集资......
  • 网易增强滑块验证码识别
     先来看看实际的滑动效果这款验证码和传统的相比,确实难度增加了不少。不仅要识别滑块位置,还要识别滑块的旋转角度。难度确实是上了一个台阶,而且只增加了机器的识别难度,真人去滑动还是很容易拼接成功的。网站在获取验证码的时候,会给我们一个attrs参数,我们就可以通过这个参数......
  • 网易增强滑块验证码识别
    先来看看实际的滑动效果这款验证码和传统的相比,确实难度增加了不少。不仅要识别滑块位置,还要识别滑块的旋转角度。难度确实是上了一个台阶,而且只增加了机器的识别难度,真人去滑动还是很容易拼接成功的。网站在获取验证码的时候,会给我们一个attrs参数,我们就可以通过这个参数计......