Utiliser Python pour générer des images de code de vérification

Dans l’environnement Internet moderne, les gens dépendent de plus en plus des ordinateurs et d’Internet. Cependant, certains logiciels malveillants ou pirates peuvent exploiter les vulnérabilités du réseau pour attaquer votre ordinateur ou voler vos informations personnelles. Pour protéger notre sécurité et notre confidentialité, nous devons utiliser diverses mesures de sécurité, notamment la génération de codes de vérification.

CAPTCHA est une technologie de sécurité largement utilisée qui identifie si un utilisateur est humain et empêche les robots ou les logiciels malveillants d'attaquer ou d'abuser d'un site Web. Dans cet article, nous présenterons comment utiliser la bibliothèque Pillow en Python pour générer des codes de vérification et améliorer leur sécurité.

1. Importez les bibliothèques nécessaires

  • PILC'est l'abréviation de Python bibliothèque de traitement d'images (Pillow). Il fournit un ensemble d'outils puissants pour créer, traiter et modifier facilement divers fichiers image.
  • ImageC'est l'une des classes les plus importantes de la bibliothèque PIL et représente un objet image. Utilisez Imagedes classes pour ouvrir, créer, modifier et enregistrer facilement des fichiers image.
  • ImageDrawest une autre classe PIL importante qui fournit Imagedes méthodes pour dessiner et manipuler des éléments graphiques sur des objets. Utilisez ImageDrawdes classes pour dessiner facilement des formes de base telles que des lignes, des rectangles et du texte, et ajoutez des effets tels que des dégradés et de la transparence.
  • ImageFontEst une classe utilisée pour gérer les polices et peut charger et utiliser divers fichiers de polices pour restituer le texte. Utilisez ImageFontdes classes pour définir facilement le type, la taille et la couleur de la police.
  • randomIl s'agit du module aléatoire intégré de Python, qui peut être utilisé pour générer des nombres aléatoires, sélectionner des éléments aléatoires, etc. Lors de la génération du code de vérification, nous utilisons randomle module pour sélectionner aléatoirement certains caractères du jeu de caractères comme chaîne de code de vérification.
from PIL import Image, ImageDraw, ImageFont
import random

2. Définissez la fonction generate_verification_code pour générer une chaîne de code de vérification aléatoire

Un code de vérification est généralement une chaîne de caractères alphanumériques. Par conséquent, nous avons besoin d’une fonction pour générer une chaîne aléatoire d’une longueur spécifiée.

def generate_verification_code(length):
    letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    code = ""
    for i in range(length):
        code += random.choice(letters)
    return code

Dans cette fonction, nous définissons une chaîne contenant tous les caractères possibles letters, puis utilisons le module intégré de Python randompour en sélectionner aléatoirement certains caractères et les assembler en tant que code de vérification.

3. Définissez la fonction generate_verification_image pour générer une image de code de vérification

L'idée de base de la génération d'un code de vérification est de dessiner des caractères ou des chiffres aléatoires sur une image et d'ajouter des effets d'interférence pour augmenter la difficulté de craquage. En Python, nous pouvons utiliser la bibliothèque de traitement d'image tierce Pillow pour implémenter ce processus.

def generate_verification_image(code):
    # 图片大小
    width, height = 120, 50
    # 创建一张空白图片
    image = Image.new("RGB", (width, height), "white")
    # 创建画笔
    draw = ImageDraw.Draw(image)
    # 创建字体
    font = ImageFont.truetype("arial.ttf", 36)
    # 绘制字符串
    draw.text((10, 10), code, font=font, fill=(0, 0, 0))
    # 添加干扰线
    for i in range(5):
        x1 = random.randint(0, width)
        y1 = random.randint(0, height)
        x2 = random.randint(0, width)
        y2 = random.randint(0, height)
        draw.line((x1, y1, x2, y2), fill=(0, 0, 0), width=2)
    # 添加噪点
    for i in range(100):
        x = random.randint(0, width)
        y = random.randint(0, height)
        draw.point((x, y), fill=(0, 0, 0))
    return image

Dans cette fonction, nous définissons d'abord la taille de l'image du code de vérification, puis créons une image blanche et vierge de la taille spécifiée. Ensuite, nous avons créé un pinceau et une police et dessiné une chaîne captcha sur l'image. Ensuite, nous avons ajouté des lignes d'interférence et des effets de bruit pour augmenter la difficulté de fissuration.

4. Définissez la fonction save_verification_image pour enregistrer l'image du code de vérification

Après avoir généré l’image du code de vérification, nous devons l’enregistrer sous forme de fichier pour l’utiliser. Vous pouvez utiliser la save()méthode de la bibliothèque Pillow pour implémenter ce processus.

def save_verification_image(image, filename):
    image.save(filename)

Dans cette fonction, nous transmettons l'objet image du code de vérification généré et le nom de fichier spécifié, et utilisons save()la méthode pour enregistrer l'image dans le format de fichier spécifié.

5. Utilisez la fonction définie aux étapes 2 et 3 pour générer l'image du code de vérification et enregistrez-la

Après avoir terminé la définition des trois fonctions ci-dessus, nous pouvons générer une image de code de vérification de base. Voici un exemple d'utilisation :

code = generate_verification_code(4) # 生成一个长度为4的随机验证码字符串
image = generate_verification_image(code) # 根据验证码生成一个图片
save_verification_image(image, "verification.png") # 将图片保存到指定文件名

Dans cet exemple, nous avons généré un code de vérification en utilisant une chaîne aléatoire de longueur 4 et l'avons transmis à la fonction `generate_verification_image()` pour générer une image de code de vérification. Ensuite, nous appelons la fonction `save_verification_image()` pour enregistrer l'image sous le nom de fichier spécifié.

Résumer

Dans cet article, nous avons expliqué comment utiliser Python et la bibliothèque Pillow pour générer des codes de vérification et améliorer leur sécurité. Tout d'abord, nous avons défini une fonction pour générer une chaîne aléatoire ; ensuite, nous avons écrit une fonction pour générer une image de code de vérification et ajouté des effets d'interférence pour augmenter la difficulté de craquage ; enfin, nous avons défini une fonction pour enregistrer l'image de code de vérification générée. . Avec ces étapes, nous pouvons facilement générer une image CAPTCHA de base et l'optimiser si nécessaire pour la rendre plus sécurisée.

Guess you like

Origin blog.csdn.net/m0_55813592/article/details/130517910