首页 > 其他分享 >验证码

验证码

时间:2023-11-11 14:34:37浏览次数:35  
标签:code img randint random 验证码 width font

import random

from PIL import Image, ImageDraw, ImageFont, ImageFilter


def check_code(width=120, height=30, char_length=5, font_file='Monaco.ttf', font_size=28):
	code = []
	img = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255))
	draw = ImageDraw.Draw(img, mode='RGB')

def rndChar():
    """
    生成随机字母
    :return:
    """
    return chr(random.randint(65, 90))
    # 生成随机数字
    # return str(random.randint(0, 9))

def rndColor():
    """
    生成随机颜色
    :return:
    """
    return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255))

# 写文字
font = ImageFont.truetype(font_file, font_size)
for i in range(char_length):
    char = rndChar()
    code.append(char)
    h = random.randint(0, 4)
    draw.text([i * width / char_length, h], char, font=font, fill=rndColor())

# 写干扰点
for i in range(40):
    draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())

# 写干扰圆圈
for i in range(40):
    draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor())
    x = random.randint(0, width)
    y = random.randint(0, height)
    draw.arc((x, y, x + 4, y + 4), 0, 90, fill=rndColor())

# 画干扰线
for i in range(5):
    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=rndColor())

img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)
return img, ''.join(code)


if __name__ == '__main__':
	# 1. 直接打开
	img,code = check_code()
	print(code)

	# 2. 写入文件
	# img,code = check_code()
	with open('code.png','wb') as f:
		img.save(f,format='png')

	# 3. 写入内存(Python3)
	# from io import BytesIO
	# stream = BytesIO()
	# img.save(stream, 'png')
	# stream.getvalue()

	# 4. 写入内存(Python2)
	# import StringIO
	# stream = StringIO.StringIO()
	# img.save(stream, 'png')
	# stream.getvalue()

标签:code,img,randint,random,验证码,width,font
From: https://www.cnblogs.com/jyfyb/p/17825884.html

相关文章

  • 随机生成图片验证码
    随机生成验证码fromPILimportImage,ImageDraw,ImageFontimportrandom随机颜色1(背景颜色):defrndColor():return(random.randint(170,250),random.randint(170,250),random.randint(170,250))随机颜色2(数字或字母颜色):defrnd......
  • 【2023最新】超详细!!!新商盟卷烟js逆向_包括验证码错误问题
    前言新商盟卷烟密码js逆向密码加密好解决,但是多次请求,还会有一个验证码这个时候就会请求失败所以验证码问题我也会解决1抓包先模拟登录,抓到返回表单的包2搜素加密字段输入加密的字段,搜索js文件打断点调试3断点调试在可疑的字段处打上断点再次输入进行调试调......
  • 网站验证码cookie,localStorage
    很多网站登录或则注册时,都会做一个利用手机号获取验证码证明为本人操作的选项。当然为了网站的web网站安全和防止信息炸弹等恶意操作,都会对再次获取验证码做一个倒计时,一般都为60s。而正常情况下只需利用JS定时函数很容易实现,这种情况下用户一旦刷新页面,页面dom中我们定义的js变量......
  • 纯前端实现图片验证码
    前言之前业务系统中验证码一直是由后端返回base64与一个验证码的字符串来实现的,想了下,前端其实可以直接canvas实现,减轻服务器压力。实现子组件,允许自定义图片尺寸(默认尺寸为100*40)与验证码刷新时间(默认时间为60秒)。同时暴露绘制验证码方法drawPic(),允许父组件直接调用(......
  • selenium+python,登录有验证码的处理方式
    验证码的验证方式1.关闭验证码功能2.设置万能验证码3.通过第三方打码平台识别验证码 验证码图片获取提取验证码信息 验证码图片识别通过第三方平台1.超级鹰https://www.chaojiying.com/2.通过发送一个第三方的接口请求处理识别验证码http://upload.chaojiying.net/U......
  • python获取企业微信的验证码
    Python获取企业微信的验证码介绍在企业微信中,验证码是一种常见的安全验证方式,用于确认用户的身份。作为一名开发者,你需要掌握如何使用Python来获取企业微信的验证码。本文将为你详细介绍整个获取验证码的流程,并提供相应的代码示例。流程概述下面是获取企业微信验证码的整个流程......
  • 登录页面--图片验证码
    登陆界面实现图片验证码功能 开始吧!!!如何生成图片呢安装pillow模块pipinstallpillow新建myproject/app01/utils/ttf目录,将字体放在其下新建myproject/app01/utils/code.py,编辑验证码生成函数fromPILimportImage,ImageDraw,ImageFilter,ImageFontimpor......
  • 图片验证码
    图片验证码fromPILimportImage,ImageDraw,ImageFontfromioimportBytesIOimportrandom#RGB颜色随机数defget_random():returnrandom.randint(0,255),random.randint(0,255),random.randint(0,255)#图片验证码生成defget_code(request):#产生一......
  • 验证码不出来
    启动无验证吗图片检查发现web.xml未正确配置重新配置恢复正常 ......
  • web基础漏洞-验证码爆破
    1、介绍验证码爆破,攻击者可以持续请求验证,从而获取正确验证码。2、防护(1)限制验证码有效时间如果设置相对较长的验证码有效时间,那么攻击者就可以用较低的频率爆破。反之,验证码有效时间相对较短,则对爆破的频率提出高要求,这既考验攻击者的硬件和软件,也考验网络传输和服务端压力......