系统版本: 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 = size# 宽, 高<