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

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

时间:2024-08-23 14:54:31浏览次数:9  
标签:点选 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/141453657

相关文章

  • 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参数,我们就可以通过这个参数计......
  • 前端实现验证码功能
    文章目录需求分析1.输入验证2.滑动验证3.拼图验证需求前端实现验证码功能分析1.输入验证dentify.vue<template><divclass="s-canvas"><canvasid="s-canvas":width="contentWidth":height="contentHeight"......
  • 基于YOLOv8的通用的滑动验证码滑块缺口检测模型
    文章目录前言滑块缺口验证码验证码示例训练步骤总结前言首先放张图片表达此时的心情,同志们节日快乐!!!滑块缺口验证码滑动验证码滑块缺口的位置识别是破解滑块验证码的关键,这里我们尝试使用YOLOV8训练目标检测模型,识别出滑块图片的缺口验证码示例模型通过大批量......
  • 腾讯 图标点选 分析
    声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!有相关问题请第一时间头像私信联系我删除博客!前言用了ddddocr和别人发的数据集。随便测了一下,腾讯图......
  • JavaWeb登录实现验证码功能
    1、新建两个工具类importjava.util.Arrays;publicclassCreateVerificationCode{/***验证码难度级别*/publicenumSecurityCodeLevel{Simple,Medium,Hard}publicstaticStringgetSecurityCode(){......