当前位置: 首页 > news >正文

做淘宝客网站科技馆里面有什么展品

做淘宝客网站,科技馆里面有什么展品,网站营销成功的案例,厦门优化公司随着互联网的不断发展,安全性问题日益突出。为了保障用户账号的安全性,很多网站都引入了验证码机制。验证码是一种区分用户是计算机还是人的公共全自动程序,可以有效防止恶意攻击和自动化脚本的滥用。本文将介绍如何使用Python生成随机图片验…

随着互联网的不断发展,安全性问题日益突出。为了保障用户账号的安全性,很多网站都引入了验证码机制。验证码是一种区分用户是计算机还是人的公共全自动程序,可以有效防止恶意攻击和自动化脚本的滥用。本文将介绍如何使用Python生成随机图片验证码,提高网站的安全性。

效果图

在这里插入图片描述

一、准备工作

在生成随机图片验证码之前,我们需要准备一些必要的库和工具。首先,我们需要安装Python环境,然后使用pip安装以下库:

  1. PIL(Python Imaging Library):用于图像处理和操作。
  2. random:用于生成随机数。
  3. 下载字体文件:字体文件

可以通过以下命令安装这些库:

pip install pillow

二 功能介绍

1. 生成随机验证码

import random  
import string  # 生成指定长度的随机验证码
all_chars = string.ascii_letters + string.digits  # 包含大小写字母和数字  
random_code = ''.join(random.choice(all_chars) for _ in range(4))  
print(random_code)

通过string生成随机大小字母数组长度为4的字符串

2. 创建图片

from PIL import Image
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))with open('code.png','wb') as f:img.save(f,format='png')

在这里插入图片描述

通过pillow模块可以创建图片, 如图可以指定图片的大小和颜色。

3. 创建画笔

from PIL import Image, ImageDraw# 创建一个新的白色图像,大小为200x200像素  
image = Image.new('RGB', (200, 200), color=(255, 255, 255))# 创建一个可以在给定图像上绘图的对象  
draw = ImageDraw.Draw(image)# 画线  
# 参数分别为:起始点的x坐标,起始点的y坐标,结束点的x坐标,结束点的y坐标,线条颜色,线条宽度  
draw.line((0, 0, 200, 200), fill=(0, 0, 0), width=5)  # 从(0, 0)到(200, 200)画一条黑色线条,宽度为5  # 画点  
# 参数分别为:点的x坐标,点的y坐标,点的颜色  
draw.point((100, 100), fill=(255, 0, 0))  # 在(100, 100)处画一个红色点  # 画圆  
# 参数分别为:圆心的x坐标,圆心的y坐标,半径,填充颜色(可选),线条颜色(可选),线条宽度(可选)  
draw.ellipse((50, 50, 150, 150), fill=(0, 255, 0), outline=(0, 0, 255))  # 画一个绿色的圆,边缘为红色,位置由矩形的左上角和右下角坐标定义  # 画矩形  
# 参数分别为:矩形左上角的x坐标,矩形左上角的y坐标,矩形右下角的x坐标,矩形右下角的y坐标,填充颜色(可选),线条颜色(可选),线条宽度(可选)  
draw.rectangle((10, 10, 190, 190), fill=None, outline=(0, 0, 255), width=3)  # 画一个红色的矩形框,位置由左上角和右下角坐标定义  draw.text([100,100],'python',"red")
# 显示图像  
image.show()

在这里插入图片描述

创建画笔之后,就能在上一个步骤中创建的图片中根据自己的需要将生成的验证码画在图片上

4. 添加文字资源

font = ImageFont.truetype("kumo.ttf", 28)

使用pillow中的默认字体是正常的字体,但是这种字体容易被爬虫给破解,需要更换字体

5. 添加干扰

# 写干扰点
for i in range(20):draw.point([random.randint(0, self.width), random.randint(0, self.height)], fill=self.random_color())# 写干扰圆圈
for i in range(20):draw.point([random.randint(0, self.width), random.randint(0, self.height)], fill=self.random_color())x = random.randint(0, self.width)y = random.randint(0, self.height)draw.arc((x, y, x + 4, y + 4), 0, 90, fill=self.random_color())# 画干扰线
for i in range(5):x1 = random.randint(0, self.width)y1 = random.randint(0, self.height)x2 = random.randint(0, self.width)y2 = random.randint(0, self.height)draw.line((x1, y1, x2, y2), fill=self.random_color())
# 应用模糊滤镜,增加干扰效果
self.img = self.img.filter(ImageFilter.EDGE_ENHANCE_MORE)

更换了字体后安全性也不是很高,需要在图片上增加一些干扰的元素,防止爬虫失败到图片中的验证码。

未增加干扰和增加干扰的对比

在这里插入图片描述

三、使用示例

现在我们可以将上述函数结合起来,生成一个随机图片验证码,并将其保存为文件或直接在网页上显示。

import random
import string
from PIL import Image, ImageDraw, ImageFilter, ImageFontclass ImageCode:def __init__(self, width=120, height=30, char_length=5, font_file='kumo.ttf', font_size=28):self.width = widthself.height = heightself.char_code = Noneself.char_length = char_lengthself.font_file = font_fileself.font_size = font_sizeself.img = Image.new(mode='RGB', size=(self.width, self.height), color=(255, 255, 255))def random_code(self):"""生成指定长度的随机验证码"""all_chars = string.ascii_letters + string.digits  # 包含大小写字母和数字random_code = ''.join(random.choice(all_chars) for _ in range(self.char_length))return random_code@staticmethoddef random_color():"""生成随机颜色"""return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255))def draw_code(self, draw):"""画随机码"""font = ImageFont.truetype(self.font_file, self.font_size)for i in range(self.char_length):char = self.char_code[i]h = random.randint(0, 4)draw.text([i * self.width / self.char_length, h], char, font=font, fill=self.random_color())def add_interfere(self, draw):"""添加干扰"""# 写干扰点for i in range(20):draw.point([random.randint(0, self.width), random.randint(0, self.height)], fill=self.random_color())# 写干扰圆圈for i in range(20):draw.point([random.randint(0, self.width), random.randint(0, self.height)], fill=self.random_color())x = random.randint(0, self.width)y = random.randint(0, self.height)draw.arc((x, y, x + 4, y + 4), 0, 90, fill=self.random_color())# 画干扰线for i in range(5):x1 = random.randint(0, self.width)y1 = random.randint(0, self.height)x2 = random.randint(0, self.width)y2 = random.randint(0, self.height)draw.line((x1, y1, x2, y2), fill=self.random_color())# 应用模糊滤镜,增加干扰效果self.img = self.img.filter(ImageFilter.EDGE_ENHANCE_MORE)def save_image(self, image_file):f = open(image_file, "wb")self.img.save(f, format="png")def get_image_code(self):self.char_code = self.random_code()draw = ImageDraw.Draw(self.img, mode='RGB')self.draw_code(draw)self.add_interfere(draw)image_file = "image_code.png"self.save_image(image_file)return image_file, self.char_codeif __name__ == '__main__':img_code = ImageCode()image_file, image_code = img_code.get_image_code()print(image_file, image_code)

在这里插入图片描述
在这里插入图片描述
运行上述代码后,将生成一个名为image_code.png的图片文件,其中包含了随机生成的验证码。你可以将此图片嵌入到你的网站中,要求用户输入验证码以进行验证。

四、总结

本文介绍了如何使用Python生成随机图片验证码的过程。通过生成随机字符串和绘制干扰线,我们可以创建一个安全可靠的验证码系统,提高网站的安全性。你可以根据自己的需求进行进一步的扩展和优化,例如添加更多的干扰元素、调整字体和颜色等。希望本文对你有所帮助!

http://www.yayakq.cn/news/753562/

相关文章:

  • 坪地网站建设价格深圳做公司网站推广的
  • 太原网站建设pnjfw江宁网站建设方案
  • 威海网站优化wordpress 导出 主题
  • 中建西部建设网站宣威市住房和城乡建设局网站下载中心
  • 国外有哪几家做充电桩网站个人博客网站备案
  • 广东网站建设商家礼品网站建设
  • 自己的网站怎么编辑jsp 网站开发例子
  • 微网站好制作吗信息化建设 网站作用
  • 家教网站制作凡科微信小程序登录
  • 网站建设如何包含数据库wordpress 数据库 utf8
  • 行业网站推广表白网站制作
  • 如何给网站做第三方流量监测网站外链多的危害
  • 公司门户网站及oa系统建设的请示做导购网站赚钱
  • 西宁做网站最好的公司哪家好网站建设中 目录是什么
  • 商城网站多少钱农村自建别墅二层效果图
  • 湖南网站建设小公司排名新泰网站定制
  • 单位门户网站软文营销的技巧有哪些
  • 中国建设银行网站结构企业邮箱是什么类型的账户
  • 成都网站建设私单wordpress怎样输入分数
  • 橙色网站欣赏如何找到做网站的客户
  • 济南seo网站排名关键词优化国外做鞋子的网站
  • 龙岩做网站公司有哪些网站建设与应用教案
  • 青岛网站设计怎么选公司注册地址可以跨市迁移吗
  • 手机销售网站的设计与实现快速搭建网站系统
  • 常熟专业网站建设济南百度快照推广公司
  • 龙华网站网页设计移动设备网站开发注意点
  • 深圳分销网站制作wordpress4.9.8汉化
  • 荣县网站建设html网页制作大作业范例
  • 网站图片优化大小常州企业网页制作
  • 上海网站建设 网页制作wordpress 代码编写