欢迎访问宙启技术站
智能推送

Python实现一个简单的验证码生成程序

发布时间:2023-12-04 22:59:21

验证码(CAPTCHA)是一种用于区分机器与人类的程序。它用于防止自动化程序(例如恶意机器人)对网站进行恶意行为,例如暴力破解、垃圾邮件、恶意留言等。

在Python中,我们可以使用PIL库(Python Imaging Library)来生成验证码。PIL库是Python中常用的图像处理库,它提供了一些用于创建、操作和显示图像的工具。下面是一个简单的验证码生成程序的实现:

from PIL import Image, ImageDraw, ImageFont
import random

def generate_captcha(captcha_text, font_path, font_size, image_size, noise_level=2):
    # 创建一张空白的图片
    image = Image.new('RGB', image_size, (255, 255, 255))
    
    # 创建画笔对象
    draw = ImageDraw.Draw(image)
    
    # 设置字体
    font = ImageFont.truetype(font_path, font_size)
    
    # 在图片上随机生成噪点
    for _ in range(noise_level):
        x = random.randint(0, image_size[0])
        y = random.randint(0, image_size[1])
        draw.point((x, y), fill=get_random_color())
    
    # 在图片上绘制验证码
    draw.text((10, 10), captcha_text, fill=get_random_color(), font=font)
    
    # 保存图片
    image.save('captcha.png')

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

上面的代码中,generate_captcha函数接受以下参数:

- captcha_text:验证码文本。

- font_path:字体文件路径。

- font_size:字体大小。

- image_size:图片尺寸。

- noise_level:噪点数量,默认为2。

使用例子如下:

captcha_text = 'ABCD1234'
font_path = '/path/to/font.ttf'
font_size = 40
image_size = (200, 100)

generate_captcha(captcha_text, font_path, font_size, image_size)

运行上面的代码后,会在当前目录下生成一张名为captcha.png的验证码图片。

这是一个非常简单的验证码生成程序,更复杂的验证码往往包括扭曲、干扰线、干扰点等特性。要生成更加复杂的验证码,可以使用其他库或开源项目,例如captcha、python-captcha等。这些库提供了更多的自定义选项,可以生成更具挑战性的验证码。