首页 > 其他分享 >滑块拼图验证码识别

滑块拼图验证码识别

时间:2024-07-16 16:25:58浏览次数:11  
标签:滑块 img format 拼图 base64 验证码 str img1 data

通常滑块验证码都是横向滑动,今天看到一个比较特别的滑块拼图验证码,他不仅能在横向上滑动,还需要进行纵向滑动。如下图所示:

他的滑块在背景图片的左上角,需要鼠标拖动左上角的滑块,移动到背景图的缺口位置拼好。

首先会识别滑块左上角的坐标,然后识别缺口左上角的坐标。然后他们两个相减,就是x,y方向上的滑动距离

识别代码如下:

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

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\53-1.png')
# 图片转base64
img1_base64 = PIL_base64(img1)

# 验证码识别接口
url = "http://www.detayun.cn/openapi/verify_code_identify/"
data = {
    # 用户的key
    "key":"78t9jTqCbAnHFO0tbBDW",
    # 验证码类型
    "verify_idf_id":"53",
    # 样例图片
    "img_base64":img1_base64,
}
header = {"Content-Type": "application/json"}

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

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

# 获取识别距离
point = eval(response.json()['data']['res_str'])
img1 = img1.convert("RGB")
draw = ImageDraw.Draw(img1)
x = point[0]
y = point[1]
draw.line((x, 0, x, img1.size[1]), fill=(255, 0, 0), width=2)  # 线的起点和终点,线宽
draw.line((0, y, img1.size[0], y), fill=(255, 0, 0), width=2)  # 线的起点和终点,线宽
img1.show()

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

标签:滑块,img,format,拼图,base64,验证码,str,img1,data
From: https://blog.csdn.net/Dxy1239310216/article/details/140425339

相关文章

  • 记一次Burp与NEW_xp_CAPTCHA工具联动爆破验证码
    首先下载NEW_xp_CAPTCHA工具地址:https://github.com/smxiazi我下载的是大佬直接发布的打包好的环境,包括对应python3.6.6与NEW_xp_CAPTCHA工具脚本下载完后直接点击运行即可本地访问http://127.0.0.1:8899/,看到这个页面,证明没问题然后就是burp导入插件jar。这里要下载xp_CA......
  • 帝国CMS的点击显示验证码如何调用?
    帝国CMS的点击显示验证码如何调用?1、显示页面要加载/e/data/js/ajax.js文件,即加:<scriptsrc="/e/data/js/ajax.js"></script>2、显示验证码用:<divid="V变量名showkey"><ahref="#EmpireCMS"onclick="edoshowkey('V变量名showkey','......
  • 验证码图片
    前言:最近写的实验室的一个管理系统需要更改登录界面的验证码,原来使用的是若依的,但是有时确实容易看错,没有太大必要,所以就更换一个简单清晰的,在网上看了一下之后,决定更换为easy-captcha来实现1生成验证的流程⬇️前端发送请求⬇️后端接受请求并进行处理​ ↘️生成uuid、验证码......
  • python 基础中requests 验证码
    验证码登录importrequests#古诗文网登录页面的URL地址url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTM......
  • springboot+vue前后端分离项目-项目搭建10-验证码功能
    本次演示的验证码功能只涉及前端,而且功能简单1.新建vue/src/components/ValidCode.vue<template><divclass="ValidCodedisabled-select":style="`width:${width};height:${height}`"@click="refreshCode"><spanv-f......
  • 易优CMS后台登陆验证码怎么关闭(图文)
    可以安装易优助手插件,在插件里可以直接关闭验证码。插件内置多种功能,包含功能有:1.检测数据库2.文档付费限制3.文档链接提取4.文档管理器5.特殊字符6.检查bom头部信息7.执行数据库8.检测目录权限9.sql命令执行10.病毒扫描11.木马图片扫描12.检测重复文档13.重置数据表ID14.后台......
  • JAVA生成验证码(字母+数字)
    /***验证码、邀请码工具类*/@ComponentpublicclassVerificationCodeUtil{/***生成验证码:字母+数字*@paramlength验证码长度*@return验证码字符串*/publicstaticStringgetVerificationCode(intlength){Str......
  • 自动化验证码登录如何实现?
    WebUI自动化验证码登录如何实现?点击查看代码#encoding=utf8importsysimportrequestsimportmuggle_ocrimportjsonclassloginerp():def__init__(self):#将request开启会话self.session=requests.session()#登录获取cookied......
  • 百度站长最新AI旋转验证码识别
    上个月发现百度站长最新出了一个验证码,是AI生成的。内容每次可能都不一样,所以给识别造成了很大困难。传统的比对放松完全失效。一、介绍这个是最近才出的最新验证码,内容主要以工厂、建筑、山峰、机器人、汽车、盆栽植物等为主。如下图所示优点:解决了图片种类有限的问题,AI......
  • Qt实现字符验证码相关功能
            本文主要介绍了Qt实现自定义验证码控件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。        验证码的原理基于人类视觉和计算机视觉的差异性。通过给用户显示一些难以被机器识别的图形或文字,让用户进行人机交......