2143900632万恶的验证码码

12306图片验证码达581种 一次输对率仅8%
来源:央视网
  近日,多地多方向的春运火车票进入“秒杀”状态,根据最长60天的预售期,12月10日(本周四)将开售除夕火车票,归家的游子将面临售票高峰。然而,要想“秒杀”到一张车票,现在不光要靠网速&&
  一次性输入正确率仅为8%
  为了防止抢票软件破解,铁道部12306网站不断将登录的图形验证码更新,层出不穷的图形码让一些网购车票的旅客大伤脑筋。许多网友称,验证码图片小费眼神儿,画质模糊雾里看花,一旦选错,就得刷新重来,大大降低了登录购票的速度。
  而近日,更是有互联网公司宣称攻破了12306的图形验证码,并首次公布一组12306验证码大数据。数据显示,图形码的数量已经多达581种,按照要输入两个关键词的登录规则,用户将有机会尝试336980道不同验证码题目的机会,而一次性输入正确的仅为8%,两次成功的比例为27%,65%的用户需要三次甚至四次以上才能输对。
  先看几张图,感受下抢票小伙伴们的心塞:
  网友:你会选哪个?
  加湿器形状不清,不易辨认。
  网友:文科生的困惑
  辨认发电机,超出普通生活常识范围。
  网友:请恶补鱿鱼和章鱼的区别
  章鱼、鱿鱼形态接近。
  网友:曾经认识的萝卜还是萝卜?
  一排左起图二、二排左起图三容易造成困惑。
  一旦选错就重新登录 抢票速度被成倍降低
  另外,12306网站购票的图形验证码的清晰度也不高,识别起来比较困难。有些关键词还从一个变成了两个。
  记者登录12306时,就碰到了系统需要识别“排风机和挂钟”的图片,由于系统所给的8张图片有些模糊,记者分辨了半天才进行选择,没想到,系统提示错误,原来记者将电扇误认作了排风机,只好刷新后再来。记者计算了一下,识别顺利5、6秒就能完成,如果图片质量差,再加之需要蒙猜近似图片,起码要20几秒才能完成,大大降低了登录速度。
  六大类不易识别图形码
  网上还总结出了12306几大类不容易识别和混淆的图片码。
  可能会分不清楚型的验证码:橘子VS橙子、公交卡VS信用卡、鱿鱼VS章鱼、盒子VS收纳箱、大蒜 VS蒜苗、人参 VS萝卜。
  90后可能没见过型验证码:煤油灯、缝纫机、油纸伞、砚台、喷雾器、打字机;
  文科生可能不认识型验证码:干冰、发电机、排风机;
  小到看不见型验证码:蜗牛、蚂蚁、蚊子、七星瓢虫、蝌蚪;
  北方人不认识型验证码:圣女果、奇异果、凤梨、抄手、火龙果等
  有网友表示,图片验证码的初衷本是为了防止各种抢票软件,区别人工和机器,更方便普通用户买票,但是因为图片信息不够贴近生活常识,像素不清晰,输入验证码流程的不完善却反倒成了无法成功便捷买票的拦路虎。
(责任编辑:un657)
原标题:12306图片验证码达581种,一次输对率仅8%!
&&&&&&</div
数字之道:
独家策划:
社区热帖推荐
胖到脖子都没了……[]
客服热线:86-10-
客服邮箱:12306的验证码,已经击败了全国99%的购票者……(图)|验证码|吐槽_凤凰资讯
12306的验证码,已经击败了全国99%的购票者……(图)
用微信扫描二维码分享至好友和朋友圈
一个或两个关键词,加上几个像素奇低的缩略图,如果你觉得这就是极限,那么你就彻彻底底的错了……
原标题:12306的验证码,已经击败了全国99%的购票者&& 导读:春运火车票开始预订了,然而,要想在网上买到票,总有些坎不是你抬抬脚就迈得过去的&& 前两天,听说12月3号之前要登录12306完成手机验证时,小编就慌了一次。 还好,在同事小伙伴之前整理的《12月3日前不验证就不能买火车票?铁总这样回应》里找到了答案。小编这才放下心来,看着这张购票日程表,准备订票。
2016年春运火车票预售期时间表 然而万万没想到,这只是噩梦的开始&& 当小编用颤抖的双手输入了用户名和密码,却发现,还有验!证!码!呀! 1 一开始还是比较简单的
图据12306官网 吐槽:排风机是什么?排风机是什么?排风机是什么?
图据12306官网 吐槽:不好意思?是左下对吗?
图据12306官网 吐槽:考验生活常识吗!我承认!我是生活的弱者!
图据12306官网 吐槽:哈哈哈哈哈,左下是在为我祈祷吗?哈哈哈哈&&
图据12306官网 吐槽:第一排第一个和第二排第二个是不是
图据12306官网 吐槽:这是十几年前的图片像素能再渣点吗?眼睛都看花咯,还是要搞错 一个或两个关键词,加上几个像素奇低的缩略图,如果你觉得这就是极限,那么你就彻彻底底的错了&& 2 随着春运的开始 它不知不觉升级了
图据12306官网 吐槽:小编有密集恐惧症!
图据12306官网 吐槽:抱紧我,我好方&&
图据12306官网 吐槽:妈妈救我&& 3 看着越来越多的图 内心逐渐澄澈了起来
图据12306官网 不买票,真不知道自己见识少啊。 想换一个简单的简单的简单的,结果&&怪我眼瞎咯
图据12306官网 有网友统计后发现,这些验证码,又可以细分为十二个品类: 动植昆虫类:如蜥蜴、企鹅、恐龙、荷叶、蜻蜓等 食品果蔬类:如油条、韭菜、三明治、话梅、菠萝等 日用百货类:雨靴、牙刷、扫把、铁锹、热水袋等 办公用品类:投影仪、文件夹、传真机、档案袋等 运动类:帐篷、篮球、球拍、保龄球、哑铃等 3C类:手机、电视机、热水器、电饭煲等 生活用品类:竹席、枕头、床、高压锅、食用油等 珠宝饰品类:翡翠、钻石、玛瑙、钟表等 出行工具类:飞机、自行车、游艇等 传统文化类:紫砂壶、青花瓷、舞狮、脸谱、年画等 公共设施类:喷泉、路灯、图书馆、报刊亭、铁轨等 专有名词类:月亮、金字塔、乌云、太阳能等 面对如此丧心病狂的验证码,每次放票的时候,小编都要连续奋战个几分钟,但每次都是这样的结果&&
图据12306官网 心急如焚的小编,这个时候想死的心都有了,回家的车票已经被人秒光了! 然而,更加丧心病狂的是:当小编费尽九牛二虎之力,终于蒙对了验证码,看到的却是如下凄惨的一幕&&
图据12306官网 当时心里就只有一个声音:
资料配图 刷微博,发现好多人都有同样的困惑&&
本图截自@环球时报的微博评论 从简单的数字,数字加字母,加减法算式,到闪烁变形字母(动态码),中间添加干扰线的变形字母,再到如今的图形验证码。每年春运购票都是一场艰苦的战斗&& 小编继续抢票去了,还好,下面这样的验证码只是玩笑&&&
图据12306官网 每日经济新闻综合北京青年报、新浪微博、微信号成都范儿、珠江时报等消息
[责任编辑:PN053]
用微信扫描二维码分享至好友和朋友圈
凤凰资讯官方微信
播放数:1904070
播放数:639597
播放数:12384
播放数:5808920
48小时点击排行图片验证码掀起一场火车票代购的人肉战 - 环球旅讯(TravelDaily)
图片验证码掀起一场火车票代购的人肉战
来源:环球旅讯
12306更新图片验证方式之后,让通过自动识别验证码的刷票和抢票软件纷纷失效,可以使用的都在用“人肉”验证代购火车票。
【环球旅讯】3月16日,12306发布公告称,从3月16日起,该网站的用户登录界面推出全新的图片验证系统。用户在通过新的图片验证方式登陆12306时,需要在填写正确的登录ID与密码的同时根据验证系统给出的词汇在下方的八张图片中,选出与该词汇相符合的图片才可以成功验证并登录。3月16日,12306新验证码出来后,网络上戏称&12306找你妹&游戏,这一变化让所有通过自动识别验证码的刷票和抢票软件全部失效。除了第三方刷票软件,有众多在线旅游大佬加入的火车票代购行业,也受到重创,甚至可谓集体阵亡。在线旅游竞争越来越激烈,各大OTA都非常看重火车票业务,2014年都纷纷开通了火车票预订业务。据记者了解,火车票代购的基本模式,也是从12306帮客户代买火车票,老的验证码可以通过机器或者第三方打码的形式破解,这也是众多OTA能很快推出火车票代购的原因。但3月16日12306升级了&找你妹&验证码,升级的当天,OTA们还勉强能提供代购服务。到3月17日,只剩下携程能代购火车票了。据环球旅讯了解到,新的验证码出来后,需要手工输入验证码进行人工代购,而且每一单代购都要花较长时间才能成功,火车票代购彻底变成了&费人、费眼、费脑力&的苦力活。不过如此高的投入帮客户免费代购,看来OTA真的是下了血本。截止3月17日18点整,除了携程其他APP的预订都已经不能提供代购服务,只能查询火车时刻表,总体验如下:而在3月17日晚,同程旅游已经破解12306图片验证问题,,采用技术加人力的办法来解决图片验证码的问题;目前同程旅游APP和微信钱包中的火车票预订都已经可以正常预订火车票,订票的流程是先占座,占座成功后付款;整个流程中无图片验证环节,订票流畅体验没有变化。据环球旅讯3月18日午间测试,途牛、去哪儿以及高铁管家已经恢复火车票的预订功能。途牛采用的是与同程类似的占座流程,高铁管家则是将12306的图片验证码搬过来,让用户自己去选。虽然去哪儿已经恢复预订,预订并且支付之后,出票速度却是漫长的。在一个多小时之后,完成了出票。而携程因为自身是采用&人肉&解决图片验证码,所以对订单设定了一个最高上限,当订单排队人数超过上限之后,则会出现以下图片中的提示:&提交失败:抱歉,现在订单排队人数已经超过上限,我们无法及时处理您的订单,您可以选择送票上门,或者明天提早提交订单&。在这场图片验证码的战斗中,众火车票代购商可谓是斗智斗勇。火车票预订如此费时费力,通过12306预订也很难向用户收取服务费,那为什么还有如此多的公司对此趋之若鹜呢?据环球旅讯了解,市场上的主要火车票预订网站都是靠保险销售打包或交叉销售如酒店产品来赚钱,或者通过在App内投放广告盈利。
对于携程这样的公司来说,也是期望高铁产品与其他产品线有更多的交叉购买,从而拉升总体收益。据携程火车票事业部CEO陈刚介绍,火车票的重复购买率平均起来一年大概5-6次,相比出境游之类的算是高频产品。随着高铁的占比提升,交叉比例会大幅提升,这一点在京沪线这种成熟线路上表现明显。所以携程将火车票业务定位为战略基础行业。陈刚称,携程目前新启动的汽车票业务和火车票的关联性还是比较高的,因为在主要线路上,火车和汽车的重合度比较高。汽车票业务虽然刚开始,总体规模还比较小,但是汽车票和火车票交叉购买增长比较明显。
扫描二维码,分享到微信
关键词阅读:
请在此输入您要回复的内容
你可以填上昵称之后,在此输入您的评价;也可注册成为我们的会员,享受更多服务。
支持 iOS 和 Andriod,让阅读随时随地
精选最具价值要闻,每周二发送&&&&
锦江能否成功增持雅高股份,以及是否会与海航上演一场资本大戏
精选每周关注度最高、最值得一看的新闻资讯
环球旅讯印度记者总结了国外旅游品牌在中国数字化营销的几种方法
精选每周关注度最高、最值得一看的新闻资讯29414人阅读
Java(14)
java验证码识别--1
java验证码识别--2
java验证码识别--3
java验证码识别--4
java验证码识别--5
(本文仅用于学习研究图像匹配识别原理,不得用于其他用途。)
完整eclipse工程
最近看了看验证码的识别,先从最简单的做起吧(固定大小,固定位置,固定字体)
验证码识别基本分四步,图片预处理,分割,训练,识别
看一个最简单验证码
这是一个德克萨斯扑克的注册页面的验证码
1。图像的预处理
这种直接根据亮度设个阈&#20540;处理就可以了
public static int isWhite(int colorInt) {
Color color = new Color(colorInt);
if (color.getRed() + color.getGreen() + color.getBlue() & 100) {
public static BufferedImage removeBackgroud(String picFile)
throws Exception {
BufferedImage img = ImageIO.read(new File(picFile));
int width = img.getWidth();
int height = img.getHeight();
for (int x = 0; x & ++x) {
for (int y = 0; y & ++y) {
if (isWhite(img.getRGB(x, y)) == 1) {
img.setRGB(x, y, Color.WHITE.getRGB());
img.setRGB(x, y, Color.BLACK.getRGB());
处理完图片效果为
图像基本分得比较清楚,图片分割也比较容易
这个验证码居然是固定位置的,分割相当简单,直接截取相应位置就可以了
public static List&BufferedImage& splitImage(BufferedImage img)
throws Exception {
List&BufferedImage& subImgs = new ArrayList&BufferedImage&();
subImgs.add(img.getSubimage(10, 6, 8, 10));
subImgs.add(img.getSubimage(19, 6, 8, 10));
subImgs.add(img.getSubimage(28, 6, 8, 10));
subImgs.add(img.getSubimage(37, 6, 8, 10));
return subI
直接拿几张图片,包含0-9,每个数字一个样本就可以了,将文件名对应相应的数字
因为是固定大小,固定位置,识别也很简单。
直接拿分割的图片跟这个十个图片一个像素一个像素的比,相同的点最多的就是结果。比如如果跟5.jpg最相&#20284;,那么识别的结果就是5。
下面是识别结果,很容易达到100%
完整代码(csdn连个附件都不支持):
import java.awt.C
import java.awt.image.BufferedI
import java.io.F
import java.io.FileOutputS
import java.io.InputS
import java.io.OutputS
import java.util.ArrayL
import java.util.HashM
import java.util.L
import java.util.M
import javax.imageio.ImageIO;
import mons.httpclient.HttpC
import mons.httpclient.HttpS
import mons.httpclient.methods.GetM
import mons.io.IOU
public class ImagePreProcess {
public static int isWhite(int colorInt) {
Color color = new Color(colorInt);
if (color.getRed() + color.getGreen() + color.getBlue() & 100) {
public static int isBlack(int colorInt) {
Color color = new Color(colorInt);
if (color.getRed() + color.getGreen() + color.getBlue() &= 100) {
public static BufferedImage removeBackgroud(String picFile)
throws Exception {
BufferedImage img = ImageIO.read(new File(picFile));
int width = img.getWidth();
int height = img.getHeight();
for (int x = 0; x & ++x) {
for (int y = 0; y & ++y) {
if (isWhite(img.getRGB(x, y)) == 1) {
img.setRGB(x, y, Color.WHITE.getRGB());
img.setRGB(x, y, Color.BLACK.getRGB());
public static List&BufferedImage& splitImage(BufferedImage img)
throws Exception {
List&BufferedImage& subImgs = new ArrayList&BufferedImage&();
subImgs.add(img.getSubimage(10, 6, 8, 10));
subImgs.add(img.getSubimage(19, 6, 8, 10));
subImgs.add(img.getSubimage(28, 6, 8, 10));
subImgs.add(img.getSubimage(37, 6, 8, 10));
return subI
public static Map&BufferedImage, String& loadTrainData() throws Exception {
Map&BufferedImage, String& map = new HashMap&BufferedImage, String&();
File dir = new File(&train&);
File[] files = dir.listFiles();
for (File file : files) {
map.put(ImageIO.read(file), file.getName().charAt(0) + &&);
public static String getSingleCharOcr(BufferedImage img,
Map&BufferedImage, String& map) {
String result = &&;
int width = img.getWidth();
int height = img.getHeight();
int min = width *
for (BufferedImage bi : map.keySet()) {
int count = 0;
Label1: for (int x = 0; x & ++x) {
for (int y = 0; y & ++y) {
if (isWhite(img.getRGB(x, y)) != isWhite(bi.getRGB(x, y))) {
if (count &= min)
break Label1;
if (count & min) {
result = map.get(bi);
public static String getAllOcr(String file) throws Exception {
BufferedImage img = removeBackgroud(file);
List&BufferedImage& listImg = splitImage(img);
Map&BufferedImage, String& map = loadTrainData();
String result = &&;
for (BufferedImage bi : listImg) {
result += getSingleCharOcr(bi, map);
ImageIO.write(img, &JPG&, new File(&result//&+result+&.jpg&));
public static void downloadImage() {
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod(
&/authimg.php&);
for (int i = 0; i & 30; i++) {
// 执行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println(&Method failed: &
+ getMethod.getStatusLine());
// 读取内容
String picName = &img//& + i + &.jpg&;
InputStream inputStream = getMethod.getResponseBodyAsStream();
OutputStream outStream = new FileOutputStream(picName);
IOUtils.copy(inputStream, outStream);
outStream.close();
System.out.println(&OK!&);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 释放连接
getMethod.releaseConnection();
* @param args
* @throws Exception
public static void main(String[] args) throws Exception {
for (int i = 0; i & 30; ++i) {
String text = getAllOcr(&img//& + i + &.jpg&);
System.out.println(i + &.jpg = & + text);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:412483次
积分:4919
积分:4919
排名:第3630名
原创:104篇
转载:49篇
评论:248条
(5)(1)(2)(2)(3)(3)(3)(3)(4)(4)(2)(2)(1)(1)(1)(1)(2)(1)(3)(1)(4)(2)(8)(1)(9)(2)(2)(6)(5)(10)(4)(1)(2)(3)(4)(3)(3)(5)(4)(1)(3)(4)(1)(1)(1)(1)(3)(2)(3)(2)(1)(1)(3)(1)(3)

我要回帖

更多关于 验证码错误明明是对的 的文章

 

随机推荐