首页 > 其他分享 >验证码

验证码

时间:2024-02-19 21:33:08浏览次数:12  
标签:code img randint random 验证码 rgb valid

验证码:

views.py:

# 随机生成rgb数字的函数
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO ## 图片保存(写到内存中)
import random

def get_rgb():
    return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))


def get_valid(request):

     # img = Image.new('RGB', (450, 30), get_rgb())
 # 生成一张图片(Image模块下的new函数,返回一个Image对象)数字是宽,高
  
    img = Image.new('RGB', (450, 30), (255, 255, 255))
    
    img_draw = ImageDraw.Draw(img) 
 # 把图片放到画板上
    img_font = ImageFont.truetype('./static/font/ss.TTF', 25)
    # 随机生成5个大写字母,小写字母,数字,文件需要是ttf格式,25是大小
    valid_code = ''
    for i in range(5):
        low_char = chr(random.randint(97, 122))
        num_char = random.randint(0, 9)
        upper_char = chr(random.randint(65, 90))
        res = random.choice([low_char, num_char, upper_char])
        valid_code += str(res)
        img_draw.text((i * 63 + 50, 0), str(res), get_rgb(), img_font)
    print(valid_code)
    # 把验证码存到session中
    request.session['valid_code'] = valid_code
    # 画线和点圈
    width = 450
    height = 30
    for i in range(10):
        x1 = random.randint(0, width)
        x2 = random.randint(0, width)
        y1 = random.randint(0, height)
        y2 = random.randint(0, height)
        # 在图片上画线
        img_draw.line((x1, y1, x2, y2), fill=get_rgb())

    for i in range(50):
        # 画点
        img_draw.point([random.randint(0, width), random.randint(0, height)], fill=get_rgb())
        x = random.randint(0, width)
        y = random.randint(0, height)
        # 画弧形
        img_draw.arc((x, y, x + 4, y + 4), 0, 90, fill=get_rgb())

    f = BytesIO()
    img.save(f, 'png')
    data = f.getvalue()
    return HttpResponse(data)

 

 

随机验证码点击更换:

html:

<script>
    $("#id_valid_code").click(function () {
        var url = $("#id_valid_code")[0].src
        $("#id_valid_code")[0].src = url + '?'
    })

    $("#id_submit").click(function () {
        //不建议在js中写模板语法
        $.ajax({
            url: '/login/',
            method: 'post',
            data: {
                'username': $('[name="username"]').val(),
                'password': $('[name="password"]').val(),
                'valid_code': $('[name="valid_code"]').val(),
                'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val()
            },
            success:function (data) {
                if(data.code==100){
                    location.href=data.url
                }else {
                    $('.error').html(data.msg)
                }

            }
        })

    })


</script>

 

# 生成一张图片(Image模块下的new函数,返回一个Image对象)

标签:code,img,randint,random,验证码,rgb,valid
From: https://www.cnblogs.com/97zs/p/17931579.html

相关文章

  • DVWA-Insecure CAPTCHA(不安全的验证码)
    InsecureCAPTCHA意思是不安全的验证码,指验证在验证过程中,存在逻辑漏洞,导致可以绕过验证。CAPTCHA全称为:CompletelyAutomatedPublicTuringTesttoTellComputersandHumansApart(全自动区分计算机和人类的图灵测试)。DVWA-InsecureCAPTCHA级别:--low--medium......
  • 三十、简单的验证码实现
    check_code.py(需要字体文件:Monaco.ttf)importrandomfromPILimportImage,ImageDraw,ImageFont,ImageFilter_letter_cases="abcdefghjkmnpqrstuvwxy"#小写字母,去除可能干扰的i,l,o,z_upper_cases=_letter_cases.upper()#大写字母_numbers=''.join(ma......
  • 逆向实战29——某度-某家号2024旋转验证码识别
    前言本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!目标网站aHR0cHM6Ly9hdXRob3IuYmFpZHUuY29tL2hvbWU/ZnJvbT1iamhfYXJ0aWNsZSZhcHBfaWQ9MTU2NTA5MjE0MjUwO......
  • 发送短信验证码
    1.发送验证码importrequestsimportreimportthreadingimportosimportrandomimportsocketimportstructimporttime#API接口初始化,按照手机号生成不同的网址definitAPI(phone):#短信接口API请求间隔时间备注请求方式请求参数需要SESSION的先决请求URL......
  • 06-图片验证码识别
    本节目标:图片验证码识别+其他1.图片验证码在很多登录、注册、频繁操作等行为时,一般都会加入验证码的功能。如果想要基于代码实现某些功能,就必须实现:自动识别验证码,然后再做其他功能。2.识别基于Python的模块ddddocr可以实现对图片验证码的识别。pip3.11installdddd......
  • 软件测试学习笔记丨UI_ai自动化获取图片验证码
    UI自动化获取图片验证码代码test_ai.pyfromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromL5.AICode.ocr_codeimportOCRCodeclassTestAi:defsetup_class(self):self.driver=webdriver.Chrome()......
  • 八、多种登陆方式接口 短信验证码接口
     多种登陆方式接口#路由fromdjango.urlsimportpath,includefrom.importviewsfromrest_framework.routersimportSimpleRouterrouter=SimpleRouter()router.register('',views.LoginView,'login')urlpatterns=[path('',include(r......
  • 【验证码逆向专栏】最新某验三代滑块逆向分析,干掉所有的 w 参数!
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......
  • SpringSecurity-手机号+短信验证码登陆
    与验证码登录逻辑是不一样的,所以不能使用SpringSecurity默认提供的那套逻辑;需要自个去写一个自定义身份认证逻辑短信验证码生成生成验证码短信验证码类ValidateCode是父类,ImageCode子类publicclassValidateCode{privateStringcode;/***过期时间......
  • python随机生成图片验证码第二篇
    Python生成随机验证码,需要使用PIL模块.安装: pip3installpillow基本使用1.创建图片fromPILimportImageimg=Image.new(mode='RGB',size=(120,30),color=(255,255,255))#在图片查看器中打开#img.show()#保存在本地withopen('code.png','wb')asf......