Python使用captcha库制作带参数输入验证码案例

目录
  • 效果图
  • 参数解析
  • 安装相关库
  • 完整源码

最近研究验证码识别,需要生成大量验证码,最方便的是使用captcha库来生成验证码,网上代码仅仅使用默认设置,但是它还有很多参数可以设定,于是我又添加了一些参数,方便使用。

效果图

参数解析

在上述案例中,完整命令为

python captcha_gen.py w=210 h=100 n=6 c=2 fontsize=[40,50,60]

其中:

  • w=210指定验证码图片宽度
  • h=100指定验证码图片高度
  • n=6指定验证码字符长度
  • c=2指定生成的验证码图片数量
  • fontsize=[40,50,60]指定验证码字体大小(单个字符的字体大小从中随机选取)

参数默认值都写在代码里了。

好像我是唯一一个使用这种方式输入captcha参数的。

安装相关库

首先安装两个库:

pip install captcha
pip install pillow

完整源码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Use `pip install captcha` and `pip install pillow` to install dependencies
###
from tkinter import font
from captcha.image import ImageCaptcha
from PIL import Image
import random
import time
import os,sys,ast
NUMBER = ['0','1','2','3','4','5','6','7','8','9']
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
ALPHABET = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
ALL_CHAR_SET = NUMBER + alphabet + ALPHABET
#最终生成的验证码数量
count = 10
#参数: 宽度、高度、字符长度、字体大小
img_width,img_height,labelno,fontsize = 200,100,4,[42, 50, 56]
def mylist(x):
    if isinstance(x,(list,tuple)):
        return x
    else:
        return [x]
def get_argv():
    global img_width,img_height,labelno,fontsize,count
    if len(sys.argv) > 1:
        for i in range(1,len(sys.argv)):
            arg = sys.argv[i].split('=')
            if arg[0]=='w':
                img_width = int(arg[1])
            if arg[0]=='h':
                img_height = int(arg[1])
            if arg[0]=='n':
                labelno = int(arg[1])
            if arg[0]=='c':
                count = int(arg[1])
            if arg[0] == 'fontsize':
                # fontsize = mylist(int(arg[1]))
                fontsize = ast.literal_eval(arg[1])
    print(f'img_width:{img_width}, img_height:{img_height}, labelno:{labelno},fonsize:{fontsize},filecount={count}')

def random_captcha_text():
    global labelno
    captcha_text = []
    for i in range(labelno):
        c = random.choice(ALL_CHAR_SET)
        captcha_text.append(c)
    return ''.join(captcha_text)
# 生成字符对应的验证码
def gen_captcha_text_and_image():
    global img_width,img_height,fontsize
    image = ImageCaptcha(width=img_width,height=img_height,font_sizes=fontsize)
    captcha_text = random_captcha_text()
    # print('captcha_text:',captcha_text)
    captcha_image = Image.open(image.generate(captcha_text))
    return captcha_text, captcha_image
def main():
    global img_width, img_height, count, labelno
    get_argv()
    # 保存路径
    path = f'{img_width}x{img_height}_{labelno}chars'
    print('save path:',path)
    if not os.path.exists(path):
        os.makedirs(path)
    for i in range(count):
        now = str(int(time.time()))
        text, image = gen_captcha_text_and_image()
        filename = text+'_'+now+'.png'
        image.save(path  + os.path.sep +  filename)
        print('saved %d : %s' % (i+1,filename))
if __name__ == '__main__':
    main()

参考资料:

Python使用captcha制作验证码

修改captcha包中image.py文件生成不改变字符形状的有背景和无背景文本验证码

captcha · PyPI

到此这篇关于Python使用captcha库制作验证码,带参数输入的文章就介绍到这了,更多相关Python aptcha验证码内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python为tornado添加recaptcha验证码功能

    复制代码 代码如下: from urllib.request import urlopen    from urllib.parse import urlencode    import tornado.httpserver    import tornado.ioloop    import tornado.web #获取key: https://www.google.com/recaptcha/whyrecaptcha    publickey = '填入你的 public key'   

  • Python免费验证码识别之ddddocr识别OCR自动库实现

    目录 安装过程: 完成之后,找个参考图片 附ddddocr-验证码识别案例 总结 需要ocr识别,推荐一个Python免费的验证码识别-ddddocr 安装过程: 1.镜像安装:pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple 2.python.exe -m pip install --upg

  • Python+Pillow+Pytesseract实现验证码识别

    目录 一.环境配置 二.验证码识别 实例1 实例2 实例3 昨天十行代码实现文字识别,感觉怎样,是不是很爽 今天咋们继续利用pillow和pytesseract来实现验证码的识别 一.环境配置 需要 pillow 和 pytesseract 这两个库,pip install 安装就好了. pip install pillow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pip install pytesserac

  • Python实现滑块拼图验证码详解

    目录 初级版滑块拼图验证码 补充知识点 高级版滑动拼图验证码 滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂.本节将介绍两种滑动拼图验证码:初级版和高级版本. 初级版滑块拼图验证码 初级版滑动拼图验证码是在普通滑块验证码的基础上增加了随机的滑动距离,用户需要根据拼图的缺口位置来决定滑块的滑动位置. 如下左图所示为一个滑块拼图验证码的起始状态,注意此时还没有显示拼图和缺口.单击滑块后就会出现拼图和缺口,如下右图所示.之后会利用这一特性来找到拼图和缺口的位置. 下面开始编写代码.首先

  • python之验证码生成(gvcode与captcha)

    今天向大家总结一下python在做项目时用到的验证码生成工具:gvcode与captcha gvcode 全称:graphic-verification-code 安装: pip install gvcode 使用: import gvcode s, v = gvcode.generate() #序列解包 s.show() #显示生成的验证码图片 print(v) #打印验证码字符串 效果: captcha 安装: pip install captcha 使用: from captcha.ima

  • Python使用captcha库制作带参数输入验证码案例

    目录 效果图 参数解析 安装相关库 完整源码 最近研究验证码识别,需要生成大量验证码,最方便的是使用captcha库来生成验证码,网上代码仅仅使用默认设置,但是它还有很多参数可以设定,于是我又添加了一些参数,方便使用. 效果图 参数解析 在上述案例中,完整命令为 python captcha_gen.py w=210 h=100 n=6 c=2 fontsize=[40,50,60] 其中: w=210指定验证码图片宽度 h=100指定验证码图片高度 n=6指定验证码字符长度 c=2指定生成的验

  • Python实现计算长方形面积(带参数函数demo)

    如下所示: # 计算面积函数 def area(width, height): return width * height def print_welcome(name): print("Welcome", name) print_welcome("duhuifeng") w = int(input("请输入长方形的宽:")) h = int(input("请输入长方形的长:")) print(" area =&qu

  • python使用Streamlit库制作Web可视化页面

    每当你对Excel文件进行更改保存,Web页面还能够实时进行更新,确实挺不错的. Streamlit的文档和教程地址如下. https://docs.streamlit.io/en/stable/ https://streamlit.io/gallery 相关的API使用可以去文档中查看,都有详细的解释. 项目一共有三个文件,程序.图片.Excel表格数据. 数据情况如下,某公司年底问卷调查(虚构数据),各相关部门对生产部门在工作协作上的打分情况. 有效数据总计约676条,匿名问卷,包含问卷填写

  • python基于Bokeh库制作子弹图及瀑布图示例教程

    目录 子弹图 瀑布图 首先,让我们进行导入并使 Bokeh 的输出显示在我们的笔记本中: from bokeh.io import show, output_notebook from bokeh.palettes import PuBu4 from bokeh.plotting import figure from bokeh.models import Label output_notebook() 子弹图 在这个例子中,我们将用 python 列表填充数据. 我们可以修改它以适应Panda

  • PHP+javascript制作带提示的验证码源码分享

    html代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equi

  • python中使用PIL制作并验证图片验证码

    验证码制作 #string模块自带数字.字母.特殊字符变量集合,不需要我们手写集合 import string import random import os import uuid import settings from PIL import Image, ImageDraw, ImageColor, ImageFilter, ImageFont class Code(object): # 生成随机生成数字或字母 def random_hexdigits(self, len=1): retu

  • 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)

    上一篇我们写了怎么将xmind转换成想要的excel格式,这篇再讲一下用Python自带的tkinter库设计一个简单的gui界面,让我们的xmind路径,用例版本执行等都通过这个gui界面来输入,生成我们需要的excel文件. Python要生成gui,库还是比较多的比如wxpython,这个我看了下,感觉比较难懂,毕竟只是设计一个比较简单的gui界面,所以就使用了tkinter库,感觉这个还是比较方便易懂的,大家可以在这里学习tkinter库http://c.biancheng.net/py

  • Python实现带参数的用户验证功能装饰器示例

    本文实例讲述了Python实现带参数的用户验证功能装饰器.分享给大家供大家参考,具体如下: user_list = [ {'name': 'sb1', 'passwd': '123'}, {'name': 'sb2', 'passwd': '123'}, {'name': 'sb3', 'passwd': '123'}, {'name': 'sb4', 'passwd': '123'} ] # 初始状态,用来保存登陆的用户, client_dic = {'username': None, 'lo

  • Python之根据输入参数计算结果案例讲解

    一.问题描述 define function,calculate the input parameters and return the result. 数据存放在 txt 里,为 10 行 10 列的矩阵. 编写一个函数,传入参数:文件路径.第一个数据行列索引.第二个数据行列索引和运算符. 返回计算结果 如果没有传入文件路径,随机生成 10*10 的值的范围在 [6, 66] 之间的随机整数数组存入 txt 以供后续读取数据和测试. 二.Python程序 导入需要的依赖库和日志输出配置 # -

  • 基于Python Dash库制作酷炫的可视化大屏

    目录 介绍 数据 大屏搭建 介绍 大家好,我是小F- 在数据时代,我们每个人既是数据的生产者,也是数据的使用者,然而初次获取和存储的原始数据杂乱无章.信息冗余.价值较低. 要想数据达到生动有趣.让人一目了然.豁然开朗的效果,就需要借助数据可视化. 以前给大家介绍过使用Streamlit库制作大屏,今天给大家带来一个新方法. 通过Python的Dash库,来制作一个酷炫的可视化大屏! 先来看一下整体效果,好像还不错哦. 主要使用Python的Dash库.Plotly库.Requests库. 其中R

随机推荐