在開發網站或者應用時,為了防止機器人或者其他自動化程序對某些功能做出惡意或者過多訪問請求,我們通常會使用驗證碼來驗證用戶是否是真實的人類。下面是一個使用Python編寫的驗證碼源碼。
import random import string from PIL import Image, ImageDraw, ImageFont # 隨機生成驗證碼 def generate_code(code_len=4): # 生成大小寫字母和數字的列表 all_chars = string.ascii_letters + string.digits # 從列表中隨機選擇指定個數的字符,并拼接成字符串 code = ''.join(random.choices(all_chars, k=code_len)) return code # 生成驗證碼圖片 def generate_captcha(image_width=120, image_height=30, font_size=20, code_len=4, font_path='arial.ttf', bg_color=(255, 255, 255), code_color=(0, 0, 0), line_color=(0, 0, 0), line_num=2): # 創建一個圖片對象,填充背景色 image = Image.new('RGB', (image_width, image_height), bg_color) # 創建一個繪圖對象 draw = ImageDraw.Draw(image) # 創建一個字體對象 font = ImageFont.truetype(font_path, font_size) # 生成隨機驗證碼 code = generate_code(code_len) # 在圖片上寫入驗證碼 for i in range(code_len): x = int(image_width / (code_len + 1)) * (i + 1) y = int(image_height / 2) draw.text((x, y), code[i], font=font, fill=code_color) # 添加干擾線 for i in range(line_num): x1 = random.randint(0, image_width) y1 = random.randint(0, image_height) x2 = random.randint(0, image_width) y2 = random.randint(0, image_height) draw.line((x1, y1, x2, y2), fill=line_color) # 返回驗證碼和圖片對象 return code, image # 測試 if __name__ == '__main__': code, image = generate_captcha() print(code) image.show()
以上是Python實現驗證碼生成的源碼。在代碼中,我們引入了random、string、PIL三個模塊,在函數中使用這些模塊來生成隨機的驗證碼和驗證碼圖片。使用該實現方式,可以輕松生成不同樣式的驗證碼圖片,通過設置字體大小、顏色、背景色、干擾線數量等參數,可以生成大量的驗證碼圖片。這種方式可以應用到登錄、注冊、找回密碼等場景中,有效避免機器人或其他自動化程序的攻擊。