前言

  验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻。本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义。

  GitHub上有大神总结的非常好的源码及博客,链接如下

GitHub:

博客:http://blog.topspeedsnail.com/archives/10858

 

本文需要的依赖:

 

  • python3.5
  • PIL
  • libsvm

 

破解验证码的基本流程:

  1. 准备原始图片素材
  2. 图片预处理
  3. 图片字符切割
  4. 图片尺寸归一化
  5. 图片字符标记
  6. 字符图片特征提取
  7. 生成特征和标记对应的训练数据集
  8. 训练特征标记数据生成识别模型
  9. 使用识别模型预测新的未知图片集
  10. 达到根据“图片”就能返回识别正确的字符集的目标

 

正文

第一步:准备素材

  验证码图片如下:

  Python识别字符型图片验证码

真正的破解程序需要准备大量的素材,然后在进行大量的训练后才可达到相对高的识别度

def downloads_pic(**kwargs):
    pic_name = kwargs.get('pic_name', None)

    url = 'http://xxxx/rand_code_captcha/'
    res = requests.get(url, stream=True)
    with open(pic_path + pic_name+'.bmp', 'wb') as f:
        for chunk in res.iter_content(chunk_size=1024):
            if chunk:  # filter out keep-alive new chunks
                f.write(chunk)
                f.flush()
        f.close()
#循环执行N次,即可保存N张验证素材了。
抓取大量验证码素材的代码

相关文章:

  • 2021-09-09
  • 2021-09-30
  • 2021-10-22
  • 2022-01-18
  • 2022-01-09
  • 2021-10-29
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-10
  • 2021-12-11
  • 2021-05-21
  • 2022-12-23
  • 2022-01-04
相关资源
相似解决方案