python生成验证码

生成验证码

在写个人网站的时候做到登录界面需要使用到验证码登录 写个博文记录一下

生成随机数字

# 生成随机验证码字符串
def random_numbers():
    captcha_list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                    'Y', 'Z']
    num = random.choices(captcha_list, k=4)
    num_str = ''.join(num)
    return num_str

逻辑很简单 数字和字母大小写的列表 然后随机选取4个 用这4个随机码生成一个字符串并且返回

生成验证码

def generate_captcha_image(save_path, number):  # 生成验证码图片
    image = ImageCaptcha()
    if not os.path.exists(save_path):  # 检测目录是否存在,不在则创建
        os.makedirs(save_path)
    img_path = '{}/{}.png'.format(save_path, number)
    image.write(number, img_path)  # 保存图片
    return img_path

这里需要下载一个第三方库captcha 可以直接pip下载
需要传入保存的路径和随机字母 image.write直接生成验证码 最好返回了一个路径

代码

import os
import random  # 生成随机验证码
from captcha.image import ImageCaptcha  # 生成图片


# 生成随机验证码字符串
def random_numbers():
    captcha_list = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
                    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                    'Y', 'Z']
    num = random.choices(captcha_list, k=4)
    num_str = ''.join(num)
    return num_str


def generate_captcha_image(save_path, number):  # 生成验证码图片
    image = ImageCaptcha()
    if not os.path.exists(save_path):  # 检测目录是否存在,不在则创建
        os.makedirs(save_path)
    img_path = '{}/{}.png'.format(save_path, number)
    image.write(number, img_path)  # 保存图片
    return img_path

if __name__ == "__main__":
    num = random_numbers()
    print(num)
    image = generate_captcha_image("images", num)
    print("验证码保存在:", image)

后记

1、后期需要封装成一个接口 我希望这个接口可以返回图片路径(方便登录成功之后删除图片)和验证码的数值(方便验证 当然也可以从路径当中解析)
2、图片的删除逻辑这里没有写 如有需要自己添加
3、保存路径请自己更改 上传服务器建议保存到静态文件夹走nginx加载到界面
注意 需要下载第三方库captcha 直接使用命令 pip install captcha

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值