作者 |Alfred数据室
每年春运,都是人类史上规模最大的迁徙潮。新一轮的春运抢票大战早已打响,在这场人多票少全凭运气的战争中,买到票的人万事大吉,没抢到票的大部分寄希望于黄牛和各种各样的抢票神器。
快速、高速、极速、光速抢票, 10个加速包、20个加速包、50个加速包,为什么还是抢不到那一张票?
抢票软件工作流程
抢票软件是如何工作的?从技术上看,抢票软件所做的工作就是数据抓取,它还有一个更加通俗的名字——数据爬虫。
假设Alfred想要手动买一张从广州回贵阳的票,用手机打开了12306APP,查询有没有票,此时Alfred的手机会向12306的服务器发出一个请求,服务器接收到之后产生响应,把所查询的数据返回给手机,手机把多个方面数据显示给Alfred,如果还有票,便填写个人隐私信息购买,手机会把这些信息提交给12306服务器进行订票;假如没有票,Alfred便需要一直手动刷新,直到有票,每刷新一次,就完成一次请求和响应的流程。
手动购票流程
抢票软件的工作流程,跟手动购买底层的流程大同小异。
通过手机提交抢票需求后,手机会先把这个需求发给抢票软件服务器,由服务器程序向12306服务器发出余票数据请求,12306响应并把数据发回,没有余票时,程序可以自动不断向12306网站请求数据,把我们的时间解放出来,直到余票出现后自动提交个人隐私信息进行预订。
加速包导致“囚徒困境”
从流程上看,这其实是一件好事——我们大家可以不用手动刷新。直到加速包的出现。某抢票神器有低速、快速、高速、极速、光速5个等级的加速,分别对应不同的购买金额和成功率。假如有200人使用该神器购买广州到贵阳的车票,而抢票神器能抢到全部退票20张。人们对于回家的愿望越强烈,购买的加速包等级就越高,可以在这个等票长龙中排到越前面。
如果100人购买了最高等级加速包,那这20张票自然就优先分配给这100人中的20人。这样的一个过程中,抢票软件获得了1000元加速费,20个购买了光速加速包的人获得了高于定价50元的车票,80个人把自己原来10%的购票成功率提升到了理论上的20%,最后还是没有买到车票,剩余100个人的购票成功率从没有抢票软件的10%降到了0%。可见购买高级加速包的人越多,抢票成功率越低,并趋近于不使用抢票软件的10%,陷入所谓的“囚徒困境”,抢票神器从中获利。
抢票神器鉴别难上加难
既然这样,12306为啥不把这些抢票神器全封了呢?
技术上还就真的封不了。要封禁抢票神器,就必须甄别出哪些数据请求是人为操作的,哪些是抢票软件服务器程序发出的。不管是APP、浏览器还是抢票软件服务器,向12306服务器请求数据时都需要提供自己的设备信息、IP地址等,如果12306服务器发现来自同一设备、同一IP的请求特别频繁,比如说一秒钟10次,超过了正常人的频率,服务器就可以对这个IP进行封禁。
可是设备信息和IP都是能够最终靠程序伪装的,专业的抢票软件有多台服务器、数以万计的代理IP,只要每次请求时换一个设备信息和IP地址,便能顺利瞒天过海。另一方面,网站还需要小心不要把一直用手机刷新余票、有同样频繁访问模式的真人封掉,甄别抢票神器便难上加难。这过程实际上的意思就是数据爬虫和反爬虫的博弈。
全国人民喜迎候补购票服务
好消息是,12306网站和APP推出了候补购票服务试点。
如果暂时没票的话可以进入候补行列,等到有人退票的时候优先进行预订,保证了候补购票的人始终比抢票神器优先买到票,而且不用交加速费。
在官方开售时间点前就提交了个人隐私信息进行抢票,如果没有抢到,抢票软件会自动提交个人隐私信息进行候补购票,这时候理论上速度是比手动候补购票快的。但是如果候补购票只能候补到10张票,然而有100个人提前使用了抢票软件进行自动候补,那么就还是陷入了囚徒困境的循环。
在官方开售之后,已经没有余票了,但是12306的“候补购票”功能还能用(也就是在12306还是能提交候补购票的),这时候使用12306或者抢票软件进行候补购票,理论上速度是没有差别的(可能在抢票软件端还需要再输入提交自己的12306账号,会更慢一些),差别在于:使用12306不用加速费(12306的候补购票功能,主要价值在此)。
但也有人表示了担忧:在票售空后,12306的候补购票需要手动提交个人隐私信息。抢票软件也可在票售空后,迅速提交个人隐私信息至候补购票处。这样一来,手动候补购票不是排在抢票软件之后了嘛?那抢的到票吗?
这种情况下,就取决于提交个人隐私信息进行候补购票的时机。具体分三种情况:
在官方开售时间点前就提交了个人隐私信息进行抢票,如果没有抢到,抢票软件会自动提交个人隐私信息进行候补购票,这时候理论上速度是比手动候补购票快的。但是如果候补购票只能候补到10张票,然而有100个人提前使用了抢票软件进行自动候补,那么就还是陷入了囚徒困境的循环。
在官方开售之后,已经没有余票了,但是12306的“候补购票”功能还能用(也就是在12306还是能提交候补购票的),这时候使用12306或者抢票软件进行候补购票,理论上速度是没有差别的(可能在抢票软件端还需要再输入提交自己的12306账号,会更慢一些),差别在于:使用12306不用加速费(12306的候补购票功能,主要价值在此)。
在官方开售之后,已经没有余票了,并且12306的“候补购票”功能也不能用了(也就是12306显示候补购票的人太多/已满,不能候补了)。这时候再分两种情况:
第一种就是,12306之后还会大量放票(或者大量的人退票),并且放票/退票的数量大于已经提交候补购票的数量,这时候使用抢票软件理论上可以在可以候补的时候第一时间进行候补,但是问题就是,如果最后只能有10个候补名额(这还并不一定能买到票,只是进入候补队列),然而有100个人提前使用了抢票软件进行自动候补,那么就还是陷入了囚徒困境的循环;
第二种情况是,12306也没票了,即使有人退票,也是先满足已经提交候补购票的那群人,这时候使用抢票软件进行候补,那就是白白给抢票软件送钱(或者让朋友帮忙加速的曝光度)。
原文链接:https://mp.weixin.qq.com/s/AnlHqTOopJHr8NFN3H_qMg