让你做12306的“产品经理”,你会怎样设计?春运将至,大家都非常关注12306的抢票,验证码和手机验证也成了段子手和喷子们争先恐后调侃的对象,不得不佩服各位P图大神的功力。
  仔细想想,图片验证码的作用是用于刷票的,那么为什么不是用于防止黄牛大量囤积或者用于防止黄牛用自己的账号买票呢?因为图片验证码有一个概率,根据现在的验证码规则,在8个图中选择1-3个图,那么随机选一个选中的概率是1.086%,也是说黄牛买100次票会有1次抢到票。这一点对普通用户来说是毫无作用的,一般的用户算用刷票软件100次才能有1次过验证码,抢票成本太高了。但对于大量囤积票的黄牛贩子来说这个概率足矣。使用一个机器100次能过1次,那么使用几十、几百个机器抢,可以想囤积多少囤多少了。而验证码用来杜绝黄牛拿自己的账号人力囤票也是行不通的,黄牛人工操作,你总没办法吧,人力囤票,像以前的黄牛都是到火车站排队去买票一样。
  针对这几点,我们应该怎么样设计才能防止呢?一点一点来说:
  一、实名认证
  这是一个很大的课题,不要想当然的认为很容易。在足够的利益面前,信息是可以伪造的,而我们还不能过分的追求性。
  举个例子,比如有人说“IP、MAC、序列号、操作系统……重复视为是一个人且只能买一张票”。这怎么可能?难道不允许换一个电脑了吗?难道不允许中转换乘了吗?还有人说,手机号验证了可以解决实名认证问题了,这只能说tooyoungtoosim ple,网上有那么多代发代收短信的渠道,用假手机号过手机验证码根本不是梦。
  仔细梳理一下,实名认证主要是几点:身份证验证、账号的手机号验证、账号与真人对应的认证。
  身份证的验证:目前是无法完全杜绝的,无论何种情况下,黄牛总是能弄到真实或者伪造的身份证,身份证识别也是无法准确验证的。12306的预防机制,是发现一个身份证添加在某处之后在180天之内不允许删除,身份证添加有一定的上限。这应该是一个为了打击黄牛的功能。
  手机号的验证:在滴滴、快滴出台新用户补贴时,出了一大批来代收发验证码的平台,这些平台是为了给用户在没有手机号的情况下,可以注册很多账号。这一问题也很难解决,总不可能让电信提供一个所有真实手机号码的数据库吧,甚至电信自己也没有这么一个数据库。反观12306还是可以的,其实,现在的这种主动发短信的方式虽然有点漏洞,但也总比没有好多了。
  后是账号和真人对应:这已经是超出时代的课题了,多是用验证码去勉强区分一下傻的机器和真人。
  二、如何防止黄牛大量囤积票
  这一点还要从概率的方面考虑。任何验证策略总是有一个成功概率的,只要有足够大的基数,那一定能达到预期的成功数量。直接的应对方式出现了,是单客户端、单账号、单个手机号在一定的时间段有一定的访问次数上限(如一个小时或者内查询的次数设置一个限制,这个限制可以考虑根据时间段的长度来决定限额大小)。一般的产品这么做是没必要的,但是对于12306却十分必要,限额是不容易被用户感知到的功能,也是推荐的方案,好的策略是能润物细无声地只对大量刷票的用户做出一定限制,让普通用户有一个好好买票的机会。
  三、如何防止黄牛人力囤票
  在这一方面来说验证码也是毫无用处的。因为人工买票也是一个很好的囤票手段。在农村招一批年轻的小伙子,找一个黑网吧,经过半天培训做抢票的工作肯定毫无问题了。一整天人工刷票来囤积,有客户没票着急买的时候加价20%-80%卖给他———找个人少的时间,黄牛的账户先退票,客户账户再买,这完成了票的转移。针对这一点,基本的防御方法是实名购票,但这还不够,还有:
  一个账户不能购买的来回区间过多,比如限制15个始发站、终点站组合,或者可以要求设置家乡地和工作地,买去这两地或从这里出发的车票会比一般客户容易。
  再有,退的票不是立即可以买,而是所有退票都统一时间处理。比如3天前退的票都在发车3天前的某一个时刻放出,3天内的票当日或次日12:00放出,这样黄牛没法偷偷地把票转移到客户手里。
  四、如何防止自动刷票
  这是麻烦的。换句话说,是如何让不同用户公平地抢票,而不会因为有了某种工具比别人容易抢票,甚至不会因为手慢抢不到票。当然这个很难。
  到了这里黄牛囤积的概率应该已经大大减小了,如果能把这一步也禁止了,那么黄牛应该只能回到原始的方案。到这里图片验证码才开始登场,这也是方案要考虑的地方。图片验证码的作用是防止机器能在开抢0.1s之内买到票。普通用户要2-4s,如果机器不能快速识别图片验证码,那么加上验证码之后所有人的反应速度都在4- 10s左右,这公平了。
  后说一下,其实现在12306做得还是挺良心的,界面清晰、功能基本没有bug。出了个高级一点的验证功能——— 图片验证码却被黑出了新的,其实仔细想一下知道此举旨在保证大多数人的抢票权益。12306目前主要是和黄牛作斗争,这是他的命门,只要能让用户买到票,这是好的用户体验!其他都不重要。也别总说12306拿钱不办事,给阿里肯定能弄好,扯淡的人请先用一下脑子。