为什么会出现验证码? 验证按的作用?
互联网时代早期免费邮件提供商雅虎为了解决用户们每天遇到的数以百计的垃圾邮件轰炸而引入的
他们找到一位当时刚刚21岁的卡内基梅隆大学的计算机天才路易斯(路易斯·范·安),也是后来的验证码之父,
他提出让计算机先是产生一个随机的字符串,然后用程序把这个字符串的图像进行随机的污染,扭曲,再显示给电脑前的人,
而只有人眼才能够辨识这些被随机污染的扭曲字符。
发展到现在就出现了图片验证码、短信验证码、语音验证码、Gif动画验证码、视频验证码
作用: 是一种区分用户是计算机还是人的公共全自动程序
应用范围:
网站安全 – 防止程序进行垃圾注册滥用资源,防止恶意登录和账号盗用,为用户的账号安全提供保障
数据安全 – 阻挡数据爬取、防止数据被破坏的一道屏障起了重要作用。
运营安全 – 它阻碍恶意刷单现象、防止虚假秒杀、虚假评论,保障投票结果的真实性。
交易安全 – 它阻挡虚假交易、恶意套现、盗卡支付等行为,为交易支付保驾护航。
学习交流,直播学习可以进我的python学习交流群 1093619026
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
# 随机生成一个字母(大写或小写)
def rand_char():
return chr(random.randint(65, 90) + random.randint(0, 1) * 32)
# 随机一个颜色
def rand_rgb1():
return random.randint(128, 255), random.randint(128, 255), random.randint(128, 255)
# 随机一个颜色
def rand_rgb2():
return random.randint(30, 127), random.randint(30, 127), random.randint(30, 127)
# 确定验证码大小,这里设置240 * 60 pix
width, height = 60 * 4, 60
# 创建图片,设置图片显色模式、图片尺寸、背景色
image = Image.new("RGB", (width, height), (255, 255, 255))
font = ImageFont.truetype("Arial.ttf", 36)
# 创建Draw对象,用于后续绘制图片
draw = ImageDraw.Draw(image)
# 逐个填充每个像素
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rand_rgb1())
# 绘制文字
for num in range(4):
draw.text((10 + 60 * num, 10), rand_char(), font=font, fill=rand_rgb2())
# 图像模糊处理
image = image.filter(ImageFilter.BLUR)
image.save("me.png")