位置: 编程技术 - 正文

Python解析最简单的验证码(python解析函数)

编辑:rootadmin

推荐整理分享Python解析最简单的验证码(python解析函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python parser解析,python解析函数,python求解析解,python 解析算法,python 解析算法,python求解析解,python 解析,python解析简单的二进制文件,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在学python,正好遇到学校需要选宿舍,就用python写了一个抢宿舍的软件。其中有一个模块是用来登陆的,登陆的时候需要输入验证码,不过后来发现了直接可以绕过验证码直接登陆的bug。不过这是另外的话题,开始的时候我并没有发现这个隐藏起来的秘密,所以我就写了这个python代码段用来实现解析验证码的功能。

  我们学校的验证码是最简单的验证码,形式大概如下:

  其中这个图片的大小是X像素的,大概每个数字的大小是X像素。

  观察这个验证码之后可以发现,验证码中只有数字而且数字的字体很规范,只不过每个数字的颜色不同而已。

  当时有2个思路

  1.将整张照片平均切片成四分,每个数字一个图片,然后扫描每张照片的每个像素,为每个数字初始化一个特征码buff,大小为X的byte,即总共Byte。

  先取背景色,可以知道(0,0)位置是背景色。然后扫描数字的每个像素和背景色对比如果相同则为1不同则为0。然后分析出0-9这个字符的特征值。等需要解析验证码的时候直接将验证码图片分片取特征值跟标准特征值对比就可以了。

  2.我们可以想象0-9这个字符每个字符的字形都不一样,则有可能比如9这个数字在像素(2,)(1,)这个位置是独有的,也就是说分片图片中假如(2,)位置的像素点和背景色一致,则该分片图片一定不是9否则一定是9。

  上面两种方法有一个bug就是这个图片的第一个数字有一定的偏移,比如其他位置的数字是从第3列开始的,它可能从第4列,这个我就没具体分析了。不过这个也有办法解决,我用的办法就是从第一列非背景色的地方算起。不管什么图片怎么偏移,它x轴向对于自己最左边的点的x方向的差值是不变的。

  最后我的实现方法就是按第二种,因为这种方法是最快的,只需要取特征像素处的点就可以。

我的方法是这样的,首先选用材料图片三张,包含0-9这个字符,然后校验他们每个像素与背景色是否一致,如果一致则把这个数字放到对应这个像素的hash表里面。

  最后分析这个hash表找出哪个像素是1个数字独有的,哪个像素是2个数字独有的,哪个像素3个数字独有的,最后解析这个表。

  找到可以唯一确定一个数字的方法,比如(0,),(0,)这两个数字可以唯一确定数字1。

Python解析最简单的验证码(python解析函数)

  然后得出一个hash字典:

  使用的时候,只需依次比对这些像素点就可以判断这张图片的验证码值了。

下面介绍具体代码

1.首先是分析的时候的代码,用来获得数字的特征像素:

材料图片:

解析结果如下

对应的文件夹中就放着n个图片共享的像素,接下来的分析我是手动分析的,其实也可以用程序写,不过要预先告诉程序哪个片段是什么数字,可以通过把图片名起为对应验证码来解析。因为这是后想到的,就没有实现了。

2.接下来就是使用得到的特征值来解析验证码

下面的方法用来取得背景色,方法同上面解析一样,沿图片最上面一层取颜色,因为最上面不绘制

同上面解析一样,取得首绘偏移值

解析验证码,利用特征吗判断

从网络抓取验证码,使用的是httplib,其中我们学校名我已替代为myschool

以上内容给大家介绍了Python解析最简单的验证码的相关知识,希望大家喜欢。

python高手之路python处理excel文件(方法汇总) 用python来自动生成excel数据文件。python处理excel文件主要是第三方模块库xlrd、xlwt、xluntils和pyExcelerator,除此之外,python处理excel还可以用wincom和openpyxl

星球大战与Python之间的那些事 Python与星球大战背后的工业光魔提起Python语言,很多人会想起系统运维、Web开发等工作。很少有人会知道Python也能够用于电影视觉特效的制作,其中就

黑科技 Python脚本帮你找出微信上删除你好友的人 相信大家在微信上一定被上面的这段话刷过屏,群发消息应该算是微信上流传最广的找到删除好友的方法了。但群发消息不仅仅会把通讯录里面所有的

标签: python解析函数

本文链接地址:https://www.jiuchutong.com/biancheng/379984.html 转载请保留说明!

上一篇:Python中http请求方法库汇总

下一篇:python高手之路python处理excel文件(方法汇总)(Python高手之路第3版PDF下载)

  • 收到个税手续费退费会计分录
  • 以现金支付
  • 无形资产专利技术计入什么科目
  • 红冲以前年度收入成本的账务处理
  • 个人报销电话费怎么做分录
  • 小规模企业可以收增值税专用发票吗
  • 个体户免税金额现在是多少
  • 小规模印花税是季报还是月报
  • 打印社保缴费凭证需要什么证件
  • 信用减值损失贷方
  • 未过户的车辆对车辆影响
  • 税前扣除的职工福利费标准
  • 写字楼出租可以给租户注册吗
  • 图书出版费开票怎么开
  • 纳税人如何办理纳税申报
  • 南方建筑主编
  • 差额征税可以享受1%
  • 6月份税务新政热点问题有哪些?
  • 小规模差额征税季度不超过30万的税收优惠
  • 租金返还方式销售
  • 资产处置收益的含义
  • 以前年度应扣未扣支出
  • 遗属补助是死亡当月发放还是次月发放
  • 银行汇票与银行本票的区别
  • 确认收入是收到款了吗
  • 外账的结转成本是什么
  • 王者荣耀中白起的台词
  • 固定资产增值税税率
  • php 语法
  • PHP:stream_encoding()的用法_Stream函数
  • php中的include
  • 企业生产车间发生的固定资产折旧费属于制造费用
  • 记账凭证摘要是什么意思
  • 参展费会计分录
  • net命令详解步骤
  • 固定资产毁损应该填制什么凭证
  • Huggingface之transformers零基础使用指南
  • 怎么查询开具的红字发票
  • 非金融企业之间借款
  • 劳务报酬可以专项附加扣除吗
  • 帝国cms导入模板后怎样调用
  • 织梦建站详细教程
  • 开票钱收不回怎么办
  • 开具增值税专用发票的承诺书
  • 纳税申报表上的销售额是不含税的吗
  • 累计净值是怎么计算的
  • 用友T3财务报表没有数据
  • sql2008收缩日志文件
  • PostgreSQL中的XML操作函数代码
  • 专用发票与普通发票的区别有
  • 申报抵扣
  • 纸质承兑汇票怎么兑现步骤
  • 学校收到政府补助的会计分录
  • 债券溢价摊销有什么影响
  • 销售出库和产品入库有什么关系
  • 没计提的税费怎么处理
  • 典当行收房产证吗直接可以拿钱吗
  • 会计记账凭证样本
  • 海量数据存储和查询
  • linux快速清空大日志文件
  • linux锁住用户
  • 局域网共享提示无法访问 你没有权限
  • win7旗舰版怎么把桌面移动到其他盘
  • windows8怎么设置
  • 开启电脑上帝模式
  • win10安装字体的操作步骤
  • 简单阐述javascript的主要作用
  • cocos2dx运行原理
  • 画廊作品
  • linux u+s
  • js遍历json对象键值
  • 支付水电费的增值税税率文件
  • 河南准生证查询平台
  • 国税系统如何查询发票
  • 税局实地调查准备什么
  • 重庆税务局发票作废
  • 合肥报税网站
  • 武汉市第二税务稽查局地址
  • 国网成都市局和绵阳市局的区别?
  • 京牌车船税网上可以交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设