相信大家利用 Python 写的爬虫应该遇到过要输入验证码的尴尬局面,又或者写了个自动填充表单的小程序,结果就卡在了验证码上。

在ctf中有⼀一些题⽬目,本身有弱验证码识别绕过,那么我们怎么解决呢? 这⾥里里⽤用题⽬目
http://lab1.xseclab.com/vcode7_f7947d56f22133dbc85dda4f28530268/做实例例讲解

首先[Python] 纯文本查看 复制代码

?

 

发现脚本运⾏行行报错,然后开始装tesseract-OCR 准备⼯工作: 编译环境: gcc gcc-c++ make(这个环境⼀一般机器器都具备,可以忽略略)

[Python] 纯文本查看 复制代码

?

 

依赖的包: autoconf automake libtool libjpeg-devel libpng-devel
libtiff-devel zlib-devel leptonica(1.67以上) autoconf automake libtool
libjpeg-devel libpng-devel libtiff-devel zlib-devel 可以通过yum安装:

[Python] 纯文本查看 复制代码

?

 

leptonica 需要源码编译安装参考资料料:

http://paramountideas.com/tesseract-ocr-30-and-leptonica-installation-centos-55-and-opensuse-113http://www.leptonica.org/source/README.html下载leptonica 包: http://www.leptonica.org/source/leptonica-1.68.tar.gz 解压后切换到leptonica-1.68 根⽬目录

[AppleScript] 纯文本查看 复制代码

?

 

tesseract安装:

依赖安装完毕后开始安装tesseract

下载tesseract-3.01 安装包:http://tesseract-ocr.googlecode.com/files/ tesseract-3.01.tar.gz

解压后切换到tesseract-3.01 根⽬目录

(如果在make时遇到类似strngs.h:1: error: stray ‘\357’ in program 的错误,请将

tesseract-3.01/ccutil/strngs.h

⽂文件转为ANSI 编码保存,再重新编译)

[Python] 纯文本查看 复制代码

?

 

tesseract英⽂文语⾔言包安装:

载tesseract-3.01
英⽂文语⾔言包: http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.01.eng.tar.gz 解压后将tesseract-ocr/tessdata 下的所有⽂文件全部拷⻉贝到/usr/local/share/tessdata 下
安装完毕. 测试⼀一下: 切换到解压后的tesseract-3.01 根⽬目录(这个⽬目录下有⼀一个⾃自带的phototest.tif
可以做测试⽤用) 命令⾏行行:

[Python] 纯文本查看 复制代码

?

 

输出:

[AppleScript] 纯文本查看 复制代码

?

 

这时应该在当前⽬目录⽣生成⼀一个phototest.txt ⽂文本⽂文件,内容就是phototest.tif 显示的⽂文字. 装完了了之后开始跑脚本

运⾏,等待得到结果

使用python及工具包进行简单的验证码识别的更多相关文章

  1. 使用python以及工具包进行简单的验证码识别

    识别数字验证码 首先我们准备素材,4张验证码图片如下:     第一步: 打开图像. im = Image.open('temp1.jpg')   第二步: 把彩色图像转化为灰度图像.彩色图像转化为灰 ...

  2. 基于SVM的python简单实现验证码识别

    验证码识别是一个适合入门机器学习的项目,之前用knn 做过一个很简单的,这次用svm来实现.svm直接用了开源的库libsvm.验证码选的比较简单,代码也写得略乱,大家看看就好. 1. 爬取验证码图片 ...

  3. Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统

    一.写在前面 现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码.需要拖动滑块的滑动验 ...

  4. 使用TensorFlow 来实现一个简单的验证码识别过程

    本文我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别. 1.验 ...

  5. Python+Request库+第三方平台实现验证码识别示例

    1.登录时经常的出现验证码,此次结合Python+Request+第三方验证码识别平台(超级鹰识别平台) 2.首先到超级鹰平台下载对应语言的识别码封装,超级鹰平台:http://www.chaojiy ...

  6. 简单的验证码识别(opecv)

    opencv版本: 3.0.0 处理验证码: 纯数字验证码 (颜色不同,有噪音,和带有较多的划痕) 测试时间 :  一天+一晚 效果: 比较挫,可能是由于测试的图片是在太小了的缘故. 原理:  验证码 ...

  7. Pyhthon爬虫其之验证码识别

    背景 现在的登录系统几乎都是带验证手段的,至于验证的手段也是五花八门,当然用的最多的还是验证码.不过纯粹验证码识已经是很落后的东西了,现在比较多见的是滑动验证,滑动拼图验证(这个还能往里面加广告).点 ...

  8. python 简单图像识别--验证码

    python  简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...

  9. 使用tensorflow搭建自己的验证码识别系统

    目录 准备验证码数据 保存为tfrecords文件 验证码训练 学习tensorflow有一段时间了,想做点东西来练一下手.为了更有意思点,下面将搭建一个简单的验证码识别系统. 准备验证码数据 下面将 ...

随机推荐

  1. 20175316盛茂淞-Java第1周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java入门 1.Java简介(地位,特点) 2.安装JDK,设置系统环境 3.编译J ...

  2. linux_添加一个普通用户

    useradd 用户名 passwd 密码 su 用户名 可以切换用户 exit 返回之前登录的用户 sodu用户 --> 不用告诉普通用户root的密码 可以查看所有的系统文件 包括root下 ...

  3. 关于Rigidbody,Collider和CharacterController三者之间的关系和用法的总结

    Rigidbody:多用在“物体”上,因为“物体”都是“死”的,他们的运动一般都是靠物理系统.所以对于Rigidbody的移动,不要用Translate(),要用各种“力”, 比如:Rigidbody ...

  4. 再读c++primer plus 001

    1. OOP强调的是在运行阶段(而不是编译阶段)进行决策,运行阶段指的是程序正在运行时,编译阶段指的是编译器将程序组合起来时. 2.变量的值都存储在栈中,而new从被称为堆或自由存储区的内存区域分配内 ...

  5. kbmmw 中JSON 操作入门

    现在各种系统中JSON 用的越来越多.delphi 也自身支持JSON 处理. 今天简要说一下kbmmw 内部如何使用和操作JSON. kbmmw 中json的操作是以TkbmMWJSONStream ...

  6. hashable/iterable与orderable

    ################ # hashable协议 # ################ # 一个对象能被称为hashable,它必须实现__hash__与_eq__方法: >>& ...

  7. Win7 VS2013环境编译Squirrel 3.0.7

    Squirrel是一个类似Lua,但是更面向对象的脚本语言. 国内这个介绍很少,环境配置更是没有任何文章提到,花了点时间搞定了,备忘记录下过程. 首先是下载,写本文时Squirrel最新版本为3.0. ...

  8. c++中typedef、define、const、inline之间的区别

    1.typedef和#define的区别 typedef int* pInt; , b = ; const pInt p1 = &a; //p1是常量指针 pInt const p2 = &a ...

  9. 新建maven遇到的错误

    新建一个maven,遇到错误如下: Description Resource Path Location Type Dynamic Web Module 3.0 requires Java 这时候,只 ...

  10. asp.net 多线程

    //开启一条线程并执行一个方法      Thread oThread = new Thread(new ThreadStart(IIMsSqlToSqlitle2));            oTh ...