合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
本次来分享一个关于验证码的知识,在登录网站时,为了确保是人在操作,一般会要求输入图片上的验证码。那么这个验证码要怎么生成呢?以及在做爬虫的时候,怎么用机器来识别呢?
围绕着这两个问题,我们开始今天的内容。
所谓验证码就是一张图片,图片上有一些数字和字母。所以我们只要生成一张图片,然后在图片上写一些内容即可。
使用 PIL 模块可以非常方便做到这一点,没有安装的话,需要执行 pip install pillow。
from random import randint, sample
import string
from PIL import Image, ImageFont, ImageDraw
# 随机生成画板颜色
bg_color = randint(0, 255), randint(0, 255), randint(0, 255)
# 定义画板的宽和高
width, height = 200, 80
# 创建画板对象
im = Image.new("RGB", (width, height), bg_color)
# 创建画笔对象,接收画板对象
# 这样一来,画笔所画的内容都会显示在画板上
draw = ImageDraw.Draw(im)
# 绘制噪点,噪点的数量一般为 width * height * 0.1
for _ in range(int(width * height * 0.1)):
# 噪点的横纵坐标
point_pos = randint(0, width), randint(0, height)
# 噪点的颜色,尽量也是随机的
point_color = randint(0, 255), randint(0, 255), randint(0, 255)
# 绘制
draw.point(point_pos, point_color)
# 查看绘制的图片
im.show()
TOP