使用python验证码识别来爆破网站后台

news/2024/5/10 7:37:13/文章来源:https://blog.csdn.net/chaootis1/article/details/79103737

使用python验证码识别来爆破网站后台

在我的上一篇博客中,讲解了我用python来识别验证码的原理,对于有些人来说,他可能并不想知道验证码识别的原理,只是想寻找方法去识别验证码从而使用脚本登录网站或者爆破网站的密码。

这几天我把我之前的代码重写了一下(之前写的真的很乱,一般人都看不下去),现在只需要改一下配置文件,你就可以定制自己的目标网站的验证码识别。
1. 运行环境为python3
2. 适用于验证码是通过get请求图片的和噪声为点,线的网站
这里写图片描述
这里写图片描述
3. 网站验证码是+-*运算的暂不支持,但是逻辑是一样的,可以通过改我的源代码来实现这个功能

代码下载

下载了代码后,代码目录为

代码目录

  • pycache是python运行产生的运行文件,删了也可以在运行的时候自己生成
  • yzm文件夹是存放识别样本的目录,如果文件里没有自行建立,目录结构为
    yzm目录结构
    里面的文件夹以要识别的元素命名,比如我实验的网站验证码是由 0-9数字组成,因此我的文件夹以0-9命名,如果目标网站有a-z,大家也要建立对应的文件夹。文件夹下面放用以识别的样本。如 0文件夹下面
    0号文件夹目录
    (如何得到样本我将在后面写出,使用这个代码不需要图片识别方面的知识)

  • config.py是程序的配置文件,定制图像识别只需要更改这个文件即可,不需要改源码。代码如下。

class Config:#验证码的urlvaliCodeUrl = ''#验证码提交地址urlpostUrl = ''#登录页面的urlhostUrl = ''#搜索噪声的范围,如以3*3的大小来搜索整张图noiseRange = 3#消除噪声的标准,如在3*3大小内,若非白色的点小于2个就清除noiseClear = 2      #去噪后的图像保存地址,观察图片调整上面参数unNoiseIm = './unNoiseIm.png'#获取到的验证码图片,便于比对正确性valiCodeIm = './image.jpg'#验证码包含的字符iconset = ['0','1','2','3','4','5','6','7','8','9']#需要识别的验证码的每个内容的横坐标,使用画图工具判断letters = [(4,13),(14,22),(23,33),(34,44)] #[(7,15),(16,24),(25,33),(35,43)]#是否训练样本isTrain = False #相似度需要达到多少才算合格qualified = 0.94#训练集是否初始化initCode = False
  • image.jpg是每一次程序运行时获取的验证码图片,方便增加样本时比对是否正确识别,由代码自动生成

  • unNoiseIm.png 是去除噪声并且变成黑白后的验证码(噪声是验证码上面的与验证码内容无关的点,线之类的用以干扰验证码识别的东西)

  • valiCode.py 是程序的主文件,识别样本准备好了之后大家可以把自己的代码放在这个目录下,然后from valiCode import ValiCode,再实例化对象a = ValiCode()
    yzm=a.compare()

    a.compare()返回的是验证码的识别结果
    这样验证码就得到了。

在使用过程中可能会遇到报错,提示缺少某库,这时候大家把相应的库pip一下就好了,可能python3会遇到PIL库pip不了的情况,如果是python3.6的话大家可以使用我代码文件夹里的Pillow-5.0.0-cp36….whl,其他版本可以自己到网上下载。


介绍完目录,现在来介绍使用方法

  1. 下载好代码之后,解压到一个地方
    这里写图片描述
    然后打开文件夹
    这里写图片描述
    进入valiCode-ocr下的valiCode文件夹
    这里写图片描述

在此目录下新建一个文件夹,名字叫 yzm,再yzm文件夹里新建 以你要识别的验证码元素名 命名的文件夹,如我要识别的验证码只有0-9,如果有a-z,可以自行建立,配置文件里的iconset = [‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’]也要随之改变
这里写图片描述
2. 建立好目录之后打开 config.py文件

class Config:#验证码的urlvaliCodeUrl = ''#验证码提交地址urlpostUrl = ''#登录页面的urlhostUrl = ''#搜索噪声的范围,如以3*3的大小来搜索整张图noiseRange = 3#消除噪声的标准,如在3*3大小内,若非白色的点小于2个就清除noiseClear = 2      #去噪后的图像保存地址,观察图片调整上面参数unNoiseIm = './unNoiseIm.png'#获取到的验证码图片,便于比对正确性valiCodeIm = './image.jpg'#验证码包含的字符iconset = ['0','1','2','3','4','5','6','7','8','9']#需要识别的验证码的每个内容的横坐标,使用画图工具判断letters = [(4,13),(14,22),(23,33),(34,44)] #[(7,15),(16,24),(25,33),(35,43)]#是否训练样本isTrain = False #相似度需要达到多少才算合格qualified = 0.94#训练集是否初始化initCode = False

填入你想识别验证码网站的url(用开发者工具抓取)

  • valiCodeUrl,打开开发者工具,切换到网络选项,刷新一下验证码,会出现一个验证证码的url,把它填在这里即可
    这里写图片描述
  • postUrl ,随便填入用户名,密码和验证码然后点击登录,出现在开发者工具里的 标有post的就是url
    这里写图片描述
  • hostUrl ,就是浏览器上的url
    这里写图片描述

  • 下载一张验证码图片,用画图工具打开
    这里写图片描述
    这里写图片描述
    确定验证码里每个元素的横坐标区间,
    如上图第一个元素的横坐标区间为3,13,以此测出所有元素的横坐标区间然后填入letters
    格式 letters = [(3,13),(14,22),(23,33),(34,44)]

  • 其他的先不变,让isTrain = True,initCode = True

  • 运行valiCode.py,
    这里写图片描述
    这时候程序主目录下就会出现,一些以时间戳命名的gif文件
    这里写图片描述
    人工识别它 并把它放在yzm目录下对应的文件夹里,如果识别不清楚,看看程序主目录下的验证码源图片image.jpg和去噪后的图片unNoiseIm.png是否清楚,不清楚的话,就去改config.py里的noiseRange = 3,noiseClear = 2的值(noiseRange/noiseClear的值越小,清楚效果越强,太小了,图片可能都看不见了),再运行程序直到生成的unNoiseIm满意。
    反复执行上面的操作直到yzm文件下的每个文件夹都至少有一张图片,
    然后把initCode = False,再执行程序

这里写图片描述
左边的数字代表相似度,右边代表识别出来的数字,相似度>qualified 的就会跳过,可以手动修改qualified
产生的图片会出现在yzm目录下
这里写图片描述
人工判断识别是否正确,然后把对应的图片放入对应的文件夹中
反复执行这个操作,知道所有识别都大于qualified ,或者你觉得识别出来的结果差不多都是对的(如果验证码的噪声比较复杂可能需要的时间比较长),样本准备就完成了

  • 最后把isTrain=False,就可以在自己的程序中调用这个程序了。

我的实验结果(为了证明代码的通用性 这个网站,并不是我最初写代码时的目标网站)
原来的验证码
这里写图片描述

去噪后的
这里写图片描述

识别结果
这里写图片描述


大家如果有什么好的建议和想法,可以和我交流一下,让我能改进代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820725.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优化网站设计系列文章总结和导读

摘自:http://www.cnblogs.com/chenxizhang/archive/2013/05/20/3088196.html 概述 其实想写这方面的文章由来已久,这个系列文章的想法是参照雅虎团队提供的35条性能优化的最佳实践(其实最早的时候是14条),再结合我自己…

SharePoint 2013 配置我的网站 图文引导

博客地址:http://blog.csdn.net/FoxDave 本篇我们来讲述一下关于SharePoint中我的网站(My Sites)相关的东西。 我的网站是SharePoint 2013中面向终端用户(End User)的平台,在2013版本中它是SharePoint功能中…

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

一、反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请…

网络的四层架构与网站的数据库的用户信息表的设计

转载于:https://www.cnblogs.com/sengling/p/5222532.html

网站性能扩展案例:每天30-50亿请求,300K QPS是如何炼成的

网站性能扩展案例:每天30-50亿请求,300K QPS是如何炼成的 Reduce Data广告服务网站(http://reducedata.com)如何扩展到每天300K QPS请求?分享经验如下: 1. 为大规模而设计,广告服务平台从一开始增长就很惊人&#xff0…

文件设置索引_咻咻SEO:上线3个月迟迟未收录,找大神才知道网站地图是错的,如何设置robots、sitemap...

一、网站地图/sitemap制作流程:XML:主要针对搜索引擎制作,提高网站各页面收录率;HTML:主要针对用户制作,索引用户浏览网站内容。Sitemap:谷歌制定规则,100个网页链接地址。提高蜘蛛工…

程序员经常去的网站

收集了一些程序员平时经常去的网站,还希望大家集思广益,多做补充 csdn http://www.csdn.net/java 中文站 http://www.java-cn.com/博客园 http://www.cnblogs.com/开源中国社区 http://www.oschina.net/安卓巴士 http://www.apkbus.com/看…

浅谈SEO翻倍提升网站流量

本文是在简单了解并且熟悉SEO技术的基础上加上自己的总结归纳,对于SEO还是一个长期的工程不是一天就能一下优化排名第一。下面就是我对SEO的一些见解: 一、关键字选择 内容相关搜索次数多,竞争小主关键词不可太宽泛主关键词也不可太特殊商业价…

网站开发div在Jquery中的鼠标事件失去焦点

网站div在Jquery中的鼠标事件失去焦点,今天在做网站开发的时候遇到了个问题,就是我在用Jquery做导航的时候,用到了Jquery的鼠标事件mouseout,但问题出来了,我有两个div,A的div包含了B的div,本来…

使用C#实现网站用户登录

我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的。 HTTP协议是一个无连接的协议,也就…

小网站架构优化:从100并发抗到4000并发

前言: 很久前,在512M内存Access的VPS里,写过了一个经典的秋色园技术原理解析系列。后来的某一天,换上了1G内存MSSQL2000,秋色园又跑过了一个多年头。之后,秋色园和 CYQ.Data,也在一直默默的优化…

【系统架构】大型网站架构系列:缓存在分布式系统中的应用(二)

原文地址 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 本文是缓存在分布式应用第二篇文章,介绍分布式缓存,Memcache,Redis&#xff0c…

python 抓取小说网站,制作电子书。

分析目的(或者说要达到的效果) 实现一个小说下载器,输入小说的名字然后抓取小说的全部章节,制作成文档。 需要的知识:使用BeautifulSoup或正则解析网页,使用requests下载网页。 搜索小说 直接用小说的站内搜…

【转】最实用的IT类网站及工具大集合

转自:http://www.cnblogs.com/annie00/p/5753507.html 1.聚合数据 大家在开发过程中,可能会用到各种各样的数据,想找一些接口来提供一些数据。比如天气预报查询,火车时刻表查询,彩票查询,身份证查询等等。有…

大型网站架构演变和知识体系

from http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什…

关于动画培养灵感的网站

直接点解图片就能进入对应的国外的网站: 下面这个网站是视频播放的哦,挺好看的。 当然这个英文网站在国内也有翻译的blog:http://www.jianshu.com/p/1858a8733ba3

大型网站技术架构 大纲

本文内容大部分来自《大型网站技术架构》,这本书很值得一看,强烈推荐。网站系统架构层次如下图所示:1.前端架构前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。浏览器优化技术并不是优化…

knewone最新分享购物网站模板

演示效果:http://www.erdangjiade.com/templates/390 效果图片:

DTCMS 网站管理系统

dtcms适合开发一些简单小型网站 开发的过程中遇见了各种问题,下面总结下我遇见的问题 1.遇见提示未开启生成静态功能 在系统设置里面将“伪URL重写”为“生成静态”可以解决 2.在生成静态页面的时候提示生成页面完成,但是右下角却显示失败 这个可能是在新…

oracle em 此网站,Oracle 11g em启动报此网站的安全证书有问题的解决方案

今天配置完Oracle 11gR2 em后,在IE中输入https://kermart:1158/em直接报错,打不开提示:“证书错误,此网站安全证书有问题”,在网上找了好久没有找到解决的方案,其中有人说要卸载win7的windows补丁3KKB26612…