pip install flask PillowFlask: 一个轻量级的Web服务器和框架。
Pillow: 处理图像操作,用于生成验证码图像。
from PIL import Image, ImageDraw, ImageFont import random import string def generate_captcha_image(): # 定义图片大小及背景颜色 image = Image.new('RGB', (120, 30), color=(73, 109, 137)) # 使用系统自带字体,或指定字体文件路径 font_path = "./arial.ttf" fnt = ImageFont.truetype(font_path, 15) d = ImageDraw.Draw(image) # 生成5位数的验证码文本 captcha_text = ''.join(random.choices(string.ascii_uppercase + string.digits, k=5)) d.text((10, 10), captcha_text, font=fnt, fill=(255, 255, 0)) # 堆代码 duidaima.com # 添加干扰线条和噪点 for _ in range(random.randint(3, 5)): start = (random.randint(0, image.width), random.randint(0, image.height)) end = (random.randint(0, image.width), random.randint(0, image.height)) d.line([start, end], fill=(random.randint(50, 200), random.randint(50, 200), random.randint(50, 200))) for _ in range(100): xy = (random.randrange(0, image.width), random.randrange(0, image.height)) d.point(xy, fill=(random.randint(50, 200), random.randint(50, 200), random.randint(50, 200))) return image, captcha_text使用Flask建立Web应用
from flask import Flask, render_template, jsonify, request, session import io app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key_here' @app.route('/') def index(): # 渲染登录页面 return render_template('login.html') @app.route('/captcha') def captcha(): # 使用上述函数生成验证码图片 image, captcha_text = generate_captcha_image() # 将验证码文本存储到session,以便之后进行验证 session['captcha'] = captcha_text buf = io.BytesIO() image.save(buf, format='PNG') buf.seek(0) return buf.getvalue(), 200, { 'Content-Type': 'image/png', 'Content-Length': str(len(buf.getvalue())) }处理登录请求
@app.route('/login', methods=['POST']) def login(): # 检查用户输入的验证码是否与session中的一致 if request.json.get('captcha', '').upper() == session.get('captcha', '').upper(): return jsonify({'status': 'success', 'message': '登录成功'}) else: return jsonify({'status': 'error', 'message': '验证码错误'}), 400