Python 驗(yàn)證碼的原理在于利用計(jì)算機(jī)的人工智能算法,生成隨機(jī)的圖像或文字,用來(lái)識(shí)別用戶是否為真實(shí)人類,而非惡意機(jī)器程序,從而實(shí)現(xiàn)對(duì)網(wǎng)站或系統(tǒng)的有效保護(hù)。
# 驗(yàn)證碼生成代碼示例 import random import string from PIL import Image, ImageDraw, ImageFont # 隨機(jī)生成幾個(gè)字母或數(shù)字 def random_str(length=4): choices = string.ascii_letters + string.digits return ''.join([random.choice(choices) for _ in range(length)]) # 生成背景顏色 def random_color(): red = random.randint(0, 255) green = random.randint(0, 255) blue = random.randint(0, 255) return (red, green, blue) # 生成驗(yàn)證碼圖像 def gen_captcha(width=120, height=30, font_size=18, font_file='arial.ttf', save_file=None): image = Image.new('RGB', (width, height), random_color()) draw = ImageDraw.Draw(image) # 生成驗(yàn)證碼文本 captcha_text = random_str() text_width, text_height = draw.textsize(captcha_text) # 生成隨機(jī)字體,字體大小、顏色 font = ImageFont.truetype(font_file, font_size) text_color = random_color() font_x = random.randint(0, width - text_width) font_y = random.randint(0, height - text_height) draw.text((font_x, font_y), captcha_text, text_color, font=font) # 添加干擾線或點(diǎn),增加安全性 for i in range(10): line_width = random.randint(1, 4) line_color = random_color() 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=line_color, width=line_width) # 輸出或保存驗(yàn)證碼圖像 if save_file: image.save(save_file, 'jpeg') else: image.show() # 返回驗(yàn)證碼文本,用于比對(duì)用戶輸入 return captcha_text
以上是一個(gè)簡(jiǎn)單的驗(yàn)證碼生成代碼示例,可以根據(jù)實(shí)際需要自行修改參數(shù),包括圖像尺寸、字體大小、顏色、樣式等,從而讓驗(yàn)證碼更加有效、安全。