分享好友 资讯首页 资讯分类 切换频道

程序验证码

2025-05-10 21:5500

程序验证码通常用于验证用户输入的数据是否合法,防止恶意攻击和自动化操作。常见的程序验证码包括图形验证码、语音验证码、短信验证码等。下面是一个简单的图形验证码的示例代码(使用Python语言和PIL库)。

程序验证码

from PIL import Image, ImageDraw, ImageFont
import random
import string
生成随机字符串作为验证码内容
def generate_code(length=4):
    all_chars = string.ascii_letters + string.digits  # 包括大小写字母和数字的字符集
    return ’’.join(random.choice(all_chars) for i in range(length))
生成带有验证码的图形图片
def generate_captcha_image(text):
    width, height = 200, 80  # 图片大小
    image = Image.new(’RGB’, (width, height), color=(255, 255, 255))  # 创建空白图片
    font = ImageFont.truetype(’arial.ttf’, 36)  # 设置字体和大小(需要安装ttf字体文件)
    draw = ImageDraw.Draw(image)  # 创建绘图对象
    text_width, text_height = draw.textsize(text, font)  # 获取文本大小
    text_x = (width - text_width) / 2  # 计算文本水平位置居中显示
    text_y = height // 2 + (height - text_height) // 2  # 计算文本垂直位置居中显示(考虑字体大小不同)
    draw.text((text_x, text_y), text, font=font, fill=(0, 0, 0))  # 在图片上绘制文本内容
    return image
生成带有干扰线条的图片验证码(增加识别难度)
def generate_noise_image(image):
    draw = ImageDraw.Draw(image)  # 创建绘图对象,对原图进行操作
    for i in range(random.randint(5, 10)):  # 随机生成干扰线条数量
        start_point = (random.randint(0, image.width), random.randint(0, image.height))  # 随机起点坐标
        end_point = (random.randint(0, image.width), random.randint(0, image.height))  # 随机终点坐标
        draw.line([start_point, end_point], fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), width=random.randint(1, 3))  # 随机生成干扰线条的颜色和粗细
    return image
生成带有验证码的图片并保存文件或返回给前端展示(根据实际情况选择保存方式)
def generate_captcha():
    code = generate_code()  # 生成随机验证码内容
    image = generate_captcha_image(code)  # 生成带有验证码的图片对象
    image = generate_noise_image(image)  # 生成带有干扰线条的图片对象(增加识别难度)
    image.save(’captcha.png’)  # 保存图片文件到本地(根据实际情况选择保存方式)或返回给前端展示(例如使用Flask框架返回给前端)
    return code  # 返回生成的验证码内容供后端验证使用(例如保存到数据库或缓存中)

代码只是一个简单的示例,实际应用中还需要考虑安全性、用户体验等因素,例如增加验证码的复杂度、防止恶意攻击等,不同的应用场景可能需要不同类型的验证码,需要根据实际需求进行设计和实现。

举报
收藏 0
打赏 0
评论 0
 
友情链接