系统版本: CentOS 7.4
Python版本: Python 3.6.1
在现在的WEB中,为了防止爬虫类程序提交表单,图片验证码是最常见也是最简单的应对方法之一。
1.验证码图片的生成
在python中,图片验证码一般用PIL或者Pillow库实现,下面就是利用Pillow生成图片验证码的代码:
#!/usr/bin/env python3
#- * -coding: utf - 8 - * -#@Author: Yang#@ Time: 2017 / 11 / 06 1: 04
import random
from PIL
import Image, ImageDraw, ImageFont, ImageFilter
_letter_cases = "abcdefghjkmnpqrstuvwxy"#
小写字母, 去除可能干扰的i, l, o, z
_upper_cases = _letter_cases.upper()# 大写字母
_numbers = ''.join(map(str, range(10)))# 数字
init_chars = ''.join((_letter_cases, _upper_cases, _numbers))
def create_validate_code(size = (120, 30),
chars = init_chars,
img_type = "GIF",
mode = "RGB",
bg_color = (230, 230, 230),
fg_color = (18, 18, 18),
font_size = 20,
font_type = ‘/usr/share / fonts / dejavu / DejaVuSans - Bold.ttf',
length = 4,
draw_lines = True,
n_line = (1, 2),
draw_points = True,
point_chance = 1):
''
'@
todo: 生成验证码图片@ param size: 图片的大小, 格式( 宽, 高), 默认为(120, 30)@ param chars:
允许的字符集合, 格式字符串@ param img_type: 图片保存的格式, 默认为GIF, 可选的为GIF, JPEG, TIFF,
PNG@ param mode: 图片模式, 默认为RGB@ param bg_color: 背景颜色, 默认为白色@ param fg_color: 前景色,
验证码字符颜色, 默认为蓝色 #0000FF
@param font_size: 验证码字体大小
@param font_type: 验证码字体的详细路径,默认为 ae_AlArabiya.ttf
@param length: 验证码字符个数
@param draw_lines: 是否划干扰线
@param n_lines: 干扰线的条数范围,格式元组,默认为(1, 2),只有draw_lines为True时有效
@param draw_points: 是否画干扰点
@param point_chance: 干扰点出现的概率,大小范围[0, 100]
@return: [0]: PIL Image实例
@return: [1]: 验证码图片中的字符串
'''
width, height =