12306 验证码识别源码
最近12306订票助手之类的软件很火,搞得XX部“专家”很抓狂。搞技术的人都知道,实现一个自动订票其实并非难事,不过是几个HTTP(S)操作,提交几个表单罢了。
但是最为关键的是表单中有一项是需要人工输入的,也就是验证码,验证码使用的初衷就是为了防止机器攻击。可惜XX部设计的验证码质量太差,攻破它实在不费多大劲。
【第一版本】
最开始XX部只设计了一种验证码,用于登录页面和订票页面,下面是笔者早期提取的样本:
分析一下其弱点:
1 背景太简单,可以轻易的二值化得到良好的二值图像
2 字体单一,没有做任何变形,只是位置有些变化
我们来看一下二值化的效果,固定阈值就够了:
要破解它只需要先找到字体,然后到验证码图像上匹配,得到最佳匹配位置和对应字母即可,具体情况代码中有。
【第二版本】
后来XX部在背景上做了点文章,看上去复杂了一点:
背景上多了两条固定颜色的线,看上去情况麻烦了,其实不然,用photoshop观察一下发现其实线与字的亮度是有明显差异的,可以大致过滤掉。
当然这时候不像原来处理得那么干净了。
【第三版本】
再后来,XX部增加了一种新的字体,两种验证码交替使用,以期防御攻击。唉,拿这么多钱就知道偷懒,光换字体不升级算法是不行的。当我发现自己的自动登录失效后,只用了两小时更新字体,代码稍作修改就搞定了。
下面贴张识别效果,总体识别率 > 90%
源码下载地址:
1 CSDN :
http://download.csdn.net/detail/renyou_hust/5014935
2 Google code:
svn checkout http://hack-12306.googlecode.com/svn/trunk/
12306 验证码识别源码相关推荐
- php短信接口加密_PHP短信接口、PHP短信验证码接口源码
PHP短信接口.PHP短信验证码接口源码 时间:2016-06-13 11:53 来源:原创 作者:admin PHP短信接口文档源码,PHP发短信接口,PHP在线发短信,PHP微信发短信接口 /* ...
- 从零开始打造一个12306验证码识别系统
12306验证码从简单的数字图片验证码进化到图形识别验证码,成功拦住了需要购票的民众,但并没有拦住机器,今天我们用一篇文章讲解如何从零开始设计并实现一套12306验证码识别系统,所有思路已成功实现并达 ...
- 验证码识别打码的常见问题及使用方法
现在网络上很多人都在咨询,验证码识别打码是什么?验证码识别到底有什么用?自动打码是不是真的? 其实只要我们真正了解了验证码识别打码技术,也就不会被这样的问题烦恼了. 1.验证码识别打码是不是真是存在的 ...
- Android园区部队人脸识别源码门禁项目讲解
Android园区部队人脸识别源码门禁项目讲解 这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别项目:部队人脸识别门禁系统. 大家都知道部队对人员管理安全要求是相当高的,很多保密的技 ...
- mnist 数据集的识别源码解析
在基本跑完识别代码后,再来谈一谈自己对代码的理解: 1 前向传播过程文件(mnist_forward.py) 第一个函数get_weight(shape, regularizer); 定义了 ...
- python识别麻将牌_图像识别之麻将识别源码( 三 )
图像识别之麻将识别源码( 三 ) 未经过允许不得转载,转载请联系我,如何联系,点我头像. 连载已经完结, 百度网盘测试APP下载地址: 提取码:pkbl 先见效果图,另外我已经上传到了抖音视频,想看N ...
- 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】
卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...
- Android安卓麻将识别源码Demo( 三)
Android安卓麻将识别源码Demo( 三) 未经过允许不得转载,转载请联系我,如何联系,点我头像. 连载已经完结, 百度网盘测试APP下载地址: 链接:https://pan.baidu.com ...
- 基于轻量级CNN的12306验证码识别分析系统
在我很早的一篇文章中有写过图标型验证码识别的实践项目,这里主要是基于以往的实践经历做出的技术升级,包括:模型轻量化.界面开发.Grad-CAM热力图集成等. 话不多说,首先看效果: 基于CNN的轻量级 ...
- 12306验证码识别初尝试(3)——tesseract的长处与短处,使用百度文字识别与百度图片自动识别验证码并自动抢票,识别成功率10%
12306验证码识别是我人生中"抢购"这一重大环节的第一步,所以我一定会把此环节写好,现在12306已经小小成功,接下来,我打算使用keras来深度学习解决12306抢票的问题,当 ...
最新文章
- shardingjdbc每月分表_shardingjdbc分库分表测试
- 【Android】SDDL刷机
- HDU4389(数位DP)
- redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
- oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例
- pitr 原理_PostgeSQL 数据库备份与恢复实验 (PITR)
- python3爬虫-通过requests爬取图虫网
- Kafka常见面试问题
- shell初学之nginx(域名)
- linux 数据库无法启动,【已回应】数据库无法启动,是怎么回事啊
- 鸿蒙系统原创,华为鸿蒙系统.docx
- 章节十六:编码和文件读写
- 日撸代码300行:第二天
- 力扣122题:买卖股票的最佳时机 II
- JQuery给指定的表格的输入框或其他组件赋值
- ios 获取是否静音模式_iOS音量和静音按键状态获取
- 阿里云服务器mysql开放远程连接步骤
- 小米手机解bl锁正规方法!
- 【备战十四届蓝桥杯 | 开篇】如何高效备战蓝桥杯
- JDK的安装与环境变量配置详细教程