zoukankan      html  css  js  c++  java
  • 算数验证码破解方式

    计算型验证码

      算数验证码,也叫计算型验证码。

      计算型验证码其实是一种特殊的字符型验证码,只不过在它的基础上增加了数字运算。

      计算型验证码在将人类视觉和计算机视觉的差异作为区分用户和电脑的依据的同时,还加上了逻辑运算,从而来增加机器识别的难度。

      Python 提供了专门的库用于破解计算性验证码——Ddddocr

    破解方式

      Ddddocr 其实是一种 OCR,可以将图形识别后得到字符串,字符串中带有运算符

    第一步:安装

    pip install ddddocr

    第二步:准备一张图片,图片命名为 '验证码.jpg'

    第三步:使用 Ddddocr 

    import ddddocr
    ocr = ddddocr.DdddOcr()
    with open('验证码.jpg', 'rb') as f:
       img_bytes = f.read()
        f.close()
    res = ocr.classification(img_bytes)
    print(res)  # 47+40

    第四步:编写程序,对识别得到的字符串进行运算

    if'+'in res:
       zhi =  int(res.split('+')[0])+int(res.split('+')[1][:-1])
       print(zhi)
    if'-'in res:
       zhi =  int(res.split('+')[0])-int(res.split('+')[1][:-1])
       print(zhi)
    if'*'in res:
       zhi =  int(res.split('+')[0])*int(res.split('+')[1][:-1])
       print(zhi)
    if'/'in res:
       zhi =  int(res.split('+')[0])/int(res.split('+')[1][:-1])
       print(zhi)

    第五步:大功告成

    制作验证码

      我们也可以自己编写一个程序用于形成一个算数型验证码

    from PIL import Image,ImageDraw,ImageFont
    import random
    def getRandomColor():
       # 获取一个随机的rgb格式颜色
       r = random.randint(0, 255)
       g = random.randint(0, 255)
       b = random.randint(0, 255)
       return (r,g,b)
    def getRandomStr():
       # 获取一个随机字符串,其中每个字符也是随机的
       num_random = str(random.randint(1,50))
       return num_random
    text =''
    for i in range(3):
       if i != 1:
           k = getRandomStr()+' '
       else:
           k = random.choice(['+','-','*','/'])+' '
       text += k
    text = text+' = '
    # 获取一个Image对象,参数分别是:RGB格式,宽120,高40,随机颜色
    image = Image.new('RGB',(160,40),(255,255,255))
    # 获取一个画笔对象,将图片对象传过去
    draw = ImageDraw.Draw(image)
    # 获取一个font字体对象,参数是ttf的字体文件的目录,以及字体的大小
    font = ImageFont.truetype(r'K:msyh.ttc',size=24)
    # 在图片上写东西,参数是定位、字符串、颜色和字体
    draw.text((10,10),text,getRandomColor(),font=font)
    image.save('验证码.jpg')

    参考:https://mp.weixin.qq.com/s/Yvo0ucKIU8Fpm-GZ-vxOfA

  • 相关阅读:
    Python 最强 IDE 详细使用指南!-PyCharm
    Python中最常用的字符串方法!
    转:用 Python 一键分析你的上网行为, 看是在认真工作还是摸鱼
    python中hasattr()、getattr()、setattr()函数的使用
    下载图片到本地,保存字符串内容到本地
    根据经纬度算出两个位置之间的距离
    根据日期获取星座和生肖
    java去除字符串的html标签
    java环信服务端注册IM代码
    linux命令
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/15132352.html
Copyright © 2011-2022 走看看