0
点赞
收藏
分享

微信扫一扫

验证码的生成数字+大小写字母,加减乘运算


一、验证码背景

公司又不想花钱购买第三方的,此时需要我们自行生成啦经常出没的地方

  • 登录
  • 访问固定网页时
  • 访问频率过快,反爬

二、数字+字母大小写验证码

  • 通常保存到redis中是不区分大小写的,区分的话一旦输错,重新生成验证嘛,需要重新输入,用户体验差,感觉不爽。我也不爽

import random
def captcha():
ret = ""
for i in range(6):
num = chr(random.randint(48,57))#ASCII表示数字
letter = chr(random.randint(97, 122))#取小写字母
Letter = chr(random.randint(65, 90))#取大写字母
s = str(random.choice([num, letter, Letter]))
ret += s
return ret
print(captcha())

三、10以内加减乘验证码

  • 为什么10以内?小学生就能算出来,复杂的不好算 比如 ​​17*18=​​。
  • 为什么没有除法?因为有余数

def math_challenge():
operators = ('+', '*', '-',)
operands = (random.randint(1, 10), random.randint(1, 10))
operator = random.choice(operators)
if operands[0] < operands[1] and '-' == operator:
operands = (operands[1], operands[0])
challenge = '%d%s%d' % (operands[0], operator, operands[1])
return '{}={}'.format(challenge, eval(challenge))

print(math_challenge())

三、纯字母

def random_char_challenge():
chars, ret = 'abcdefghijklmnopqrstuvwxyz', ''
for i in range(6):
ret += random.choice(chars)
return ret.upper(), ret
print(random_char_challenge())


举报

相关推荐

0 条评论