摘要:驗(yàn)證碼制作模塊自帶數(shù)字字母特殊字符變量集合,不需要我們手寫(xiě)集合生成隨機(jī)生成數(shù)字或字母生成干擾字符定義干擾字符顏色生成驗(yàn)證碼建議下載幾款字體,變換下風(fēng)格,我在粒定義了路徑,這里就直接導(dǎo)入了填充顏色填充驗(yàn)證碼填充驗(yàn)證碼路由配置前端配置郵
驗(yàn)證碼制作
#string模塊自帶數(shù)字、字母、特殊字符變量集合,不需要我們手寫(xiě)集合 import string import random import os import uuid import settings from PIL import Image, ImageDraw, ImageColor, ImageFilter, ImageFont class Code(object): # 生成隨機(jī)生成數(shù)字或字母 def random_hexdigits(self, len=1): return random.sample(string.hexdigits, len) # 生成干擾字符 def punctuation(self, len=1): return tuple(random.sample(string.punctuation, len)) # 定義干擾字符顏色 def random_color(self, min=64, max=255): return tuple((random.randint(min, max) for i in range(3))) # 生成驗(yàn)證碼 def creat_code(self, width=80, height=24, color=(192, 192, 192)): image = Image.new("RGB", (width, height), color) #建議下載幾款字體,變換下風(fēng)格,我在setting粒定義了static路徑,這里就直接導(dǎo)入了 font = ImageFont.truetype(os.path.join(settings.STATICPATH, "fonts/Lora-Regular.ttf"), 20) draw = ImageDraw.Draw(image) self.fill_color(draw, image, 5) self.fill_dischar(draw, image, 10) code = self.fill_char(draw, image, 4, 10, font) image_name = "{}.jpeg".format(uuid.uuid4().hex) image_path = os.path.join(settings.STATICPATH, "code/{}".format(image_name)) print(image_path) image.save(image_path) return {"code": code, "image_path": image_path} # 填充顏色 def fill_color(self, draw, image, interval): for i in range(0, image.width, interval): for j in range(0, image.height, interval): draw.point((i, j), fill=self.random_color()) # 填充驗(yàn)證碼 def fill_dischar(self, draw, image, interval): for i in range(0, image.width, interval): dis = self.punctuation() j = random.randrange(3, image.height - 3) draw.text((i, j), dis[0], fill=self.random_color(64, 255)) # 填充驗(yàn)證碼 def fill_char(self, draw, image, num, interval, font): code = "" for i in range(num): cha = self.random_hexdigits() code += str(cha[0]) j = random.randrange(0, 5) # print(cha) # print(image.width*(i/num)+interval,j) draw.text((image.width * (i / num) + interval, j), cha[0], fill=self.random_color(32, 127), font=font) return code if __name__ == "__main__": code = Code() print(code.creat_code())
flask路由配置
import os from flask import Flask, Response from flask import render_template from utils.code import Code app = Flask(__name__) @app.route("/") def Register(): return render_template("verify.html") @app.route("/codes/") def code(): infor = Code().creat_code() image_path = infor["image_path"] code = infor["code"] print(image_path) with open(image_path, "rb") as f: image_content = f.read() os.remove(image_path) return Response(image_content, mimetype="jpeg") if __name__ == "__main__": app.run(debug=True)
前端配置
引用github源碼
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44623.html
摘要:現(xiàn)在的網(wǎng)頁(yè)中,為了防止機(jī)器人提交表單,圖片驗(yàn)證碼是很常見(jiàn)的應(yīng)對(duì)手段之一?,F(xiàn)在就給出用的庫(kù)實(shí)現(xiàn)驗(yàn)證碼圖片的代碼。代碼中有詳細(xì)注釋。生成的驗(yàn)證碼圖片效果這時(shí)候,細(xì)心的同學(xué)可能要問(wèn),如果每次生成驗(yàn)證碼,都要先保存生成的圖片,再顯示到頁(yè)面。 現(xiàn)在的網(wǎng)頁(yè)中,為了防止機(jī)器人提交表單,圖片驗(yàn)證碼是很常見(jiàn)的應(yīng)對(duì)手段之一。這里就不詳細(xì)介紹了,相信大家都遇到過(guò)。 現(xiàn)在就給出用Python的PIL庫(kù)實(shí)現(xiàn)驗(yàn)證...
摘要:目前還不是很熟悉的驗(yàn)證表單的原理,比如驗(yàn)證應(yīng)該是用,這種就是放在后端處理的。此時(shí)就需要手動(dòng)控制表單的生成。如果表單驗(yàn)證失敗,失敗的消息保存在中。 Flask-WTF遇到的坑 在使用Flask-WTF的時(shí)候,使用qucik_form()快速生成表單的確是很爽,但是生成的表單的樣式并不是想要的,這個(gè)時(shí)候就不能使用qucik_form()了。 PS:目前還不是很熟悉Flask-WTF的驗(yàn)證表...
摘要:在這兩種情況下,如果你簽名的都是用戶(hù),那么該用戶(hù)可以在激活賬戶(hù)和升級(jí)賬戶(hù)時(shí),復(fù)用的可變部分。變量是一個(gè)元組,包括一個(gè)透視變換的系數(shù)。 額,一個(gè)突然的交流讓我想起來(lái)我耽擱許久各種驗(yàn)證的實(shí)現(xiàn)遲遲沒(méi)做過(guò)趁著這個(gè)機(jī)會(huì)就搞了一下分為三部分:郵箱驗(yàn)證,短信驗(yàn)證,圖片驗(yàn)證碼 郵箱驗(yàn)證 這個(gè)部分是主要參考的經(jīng)典書(shū)籍-狗書(shū)思路就是根據(jù)用戶(hù)某些信息通過(guò)JSON Web簽名生成token,然后再發(fā)送郵件驗(yàn)證...
摘要:識(shí)別網(wǎng)站驗(yàn)證碼詳見(jiàn)維基百科或者百度百科識(shí)別的驗(yàn)證碼原理采集一批驗(yàn)證碼,根據(jù)圖片特點(diǎn)進(jìn)行初步處理二值化灰度化濾波降噪等處理然后分割圖片,旋轉(zhuǎn)圖片,模板選取,訓(xùn)練算法,讓它更準(zhǔn)確。 最近在爬某網(wǎng)站,老是蹦出來(lái)驗(yàn)證碼,就想著找個(gè)OCR破了這個(gè)驗(yàn)證碼,然后就開(kāi)始了OCR探索之旅。 首先簡(jiǎn)單說(shuō)一下什么是OCR OCR是(Optical Character Recognition,光學(xué)字符識(shí)別)的...
摘要:下面我們便來(lái)講種驗(yàn)證碼的識(shí)別方式和一些思路。哈哈庫(kù)其實(shí),驗(yàn)證碼識(shí)別歸根到底還是對(duì)各種各樣圖片的識(shí)別和操作,中有很對(duì)圖像處理的庫(kù),其中就是其中之一。所以在處理驗(yàn)證碼識(shí)別之前,必須先了解庫(kù)和。第五步,按照規(guī)定軌跡進(jìn)行拖動(dòng),完成驗(yàn)證。 寫(xiě)在前面 現(xiàn)在,很多網(wǎng)站采取各種各樣的措施來(lái)反爬蟲(chóng),其中之一就是使用驗(yàn)證碼。當(dāng)我們?cè)L問(wèn)網(wǎng)頁(yè)時(shí),必須先通過(guò)驗(yàn)證碼才能夠訪問(wèn)頁(yè)面。下面我們便來(lái)講2種驗(yàn)證碼的識(shí)別方...
閱讀 1453·2023-04-25 19:00
閱讀 4157·2021-11-17 17:00
閱讀 1768·2021-11-11 16:55
閱讀 1527·2021-10-14 09:43
閱讀 3131·2021-09-30 09:58
閱讀 858·2021-09-02 15:11
閱讀 2129·2019-08-30 12:56
閱讀 1406·2019-08-30 11:12