12306售票系统有成千上万台服务器组成,每个人在买票时,买票的请求信息会经过下面这几个阶段(程序员比较懒,不想画图,实际情况比这复杂的多):浏览器提交->网络传输->路由分发->12306服务队列排队->12306服务出票->返回订单信息给客户。我们知道,在任何阶段慢,我们基本就抢不到票了,春运的票基本是在0-0.5秒就被抢完了。
首先:如何解决浏览器提交慢?
12306的网页提供了5秒会自动向12306服务器提交一次请求,这种方式很难抢到票,即使抢到了,也是瞎猫碰见死耗子。0.5秒内票都售完了,官方提供的5秒刷新的方式基本没戏,我是从来没用过这个功能。黄牛为了解决这个问题,他们使用软件(具体软件名称可以找度娘,很好找,有免费和收费模式)来模拟浏览器的行为,这样就解决了浏览器提交慢的问题。
其次:如何解决网络传输、路由分发等传输环节慢的问题?
我们家用宽带通常下行(下载)速度较快,但是上行速度较慢,而且小区的一根光纤是一栋楼在使用,如果别人在下载文件(如下载电影,尤其是BT下载,下载时又在上传,严重影响网络速度)就会影响你提交购票订单的请求速度,所以家用的网络不太稳定。而黄牛使用的基本都是专门的光纤、甚至使用的是专线网络,带宽是有足够的保障,而且他们能够检测出到12306服务的最近网络路由信息,这样使提交的订单信息能够从最短路径提交,快速进入12306服务队列,当然能够更大几率抢到票了。
最后:12306防刷票软件策略是什么?
通常是根据购票请求的ip地址请求次数,但是黄牛的固定IP地址是非常多的,他们会采用代理的方式,依次使用不同的ip地址来提交请求,从而很容易绕开12306的防刷票策略。有时候我们在公司突然打不开12306网站,很有可能是公司有其他同事使用了刷票软件,同一个公司的出口IP通常只有2-3个,频繁的刷票导致出口ip被12306禁用掉了,通常会被禁用一段时间就解封。这个策略很多网站都在用,用工具频繁给百度发请求,百度也会禁用你的ip。
从大体上说了黄牛是如何抢到票的,归根到底还是黄牛的硬件资源好、网络好、刷票软件提交请求速度快。所以2019年上线的“候补购票”功能,基本可以控制黄牛利用刷票软件来抢别人退的票了,因为这些票在12306内部消费,不给刷票软件机会了。
希望大家都能抢到回家的票^__^
主要两点
1、独立千M光纤
2、用全自动软件,自动识别验证码
随着 2018 年即将过去,这不仅意味着 2019 年即将到来,同时也意味着一年一度的春运抢票大战即将上演。
十几年前,想要买一张过年回家的票是多么的困难,在那个年代,既没有高铁,购票方式还非常单一,许多人为了买一张火车票只能选择凌晨披星戴月的在火车站售票窗口排队,为的就是等待火车票发售瞬间以最快速度锁定一个回家的名额。
比较冷门的路线竞争压力没有那么大,一般也能顺利买到票,但是在热门路线上,那就不是一个公平的拼效率的赛场,因为你会发现,在队伍最前面的往往都是那些成群结队的黄牛,他们很快就会将票一扫而空,因为没有实名认证,转手就能开始坐地起价的进行叫卖。
▲图自视觉中国
▲12306
这种改变甚至对黄牛这原来立足地下的产业发起了冲击,形成了一个有层级的金字塔结构。
控制产业上游的是那些巨型黄牛,这类黄牛有着名正言顺的身份—各类大型的抢票软件,一般由各类大型互联网公司开发,通过技术手段去优化人工抢票的流程:由于旅客在12306 买票时,每一次操作都是在请求一个接口。查询、下单、支付构成一次完整的购票操作。而目前市面上的第三方抢票平台就是用服务器定时对这些接口发送申请,以达到刷票抢票的目的。
这一类黄牛其实在大众心目中已经不能算是黄牛了,因为基本上大家都会去用,不说是否真的能提升抢票几率,但就不需要你去挨个点击 12306 那反人类的验证码这一点就已经足够了。
而另外一些则是我们口中的黄牛,基于 12306 抢票成功率的高低取决于投入多大的服务器资源这个前提,这些票贩子拥有着高度定制版本的抢票软件和最优秀的网络条件以及各种各样的身份证,不仅可以同时登陆多个账号,而且访问速度也是最快的,所以在抢票方面拥有得天独厚的优势。
这些黄牛抢票的操作逻辑是这样的,一方面有预订的顾客他们会提前安排好,直接用他们最先进的这套抢票系统去抢票,另外那些多余的票,则用技术手段让它们处于一个锁定的状态,一直牢牢攥在手里面。
这里利用的就是火车票购票—付款—退票机制的漏洞,先把火车票进行占座锁定,然后车票会有45分钟的支付时间。黄牛等到车票超时未支付后让其重新回到余票中,然后再利用自身的优先资源抢过来就好了。换句话讲车票其实一直是处于一种流动的状态。直到有人前来购票,黄牛再加入乘客的真实信息,这样车票就抢到手里了。
虽然技术手段优秀,但是终究还是违法的,所以这一类黄牛其实数量不是特别多,但是的确对这个大的生态平衡产生了巨大的冲击。
这个「候补购票」是指当旅客遇到车票售完的情况,在 12306 平台登记购票信息支付预购票资金后,如有退票、余票,12306 系统将自动为其购票,其购票速度和成功率都要强于于抢票软件。从技术角度而言,这种方法正是应对黄牛锁票的解决手段,这些退票和余票的优先级发生改变之后,再优秀的网络资源也没有办法去做到优先拿票了。
当然,道高一尺魔高一丈,黄牛作为一个打不死的小强,势必也会发挥其「聪明才智」去研究其中的技术漏洞,反正这场战争未来可能会进一步进化,后面可能就是 AI 、人脸识别这些新技术发挥重要作用的时候了。
很多景区网上买票,不用取票,进门直接刷身份证,只限本人使用,不存在真票假票,这个方法是不是可以杜绝一些乱抢票现象呢。
直接使用身份证,不用车票,每张身份证只能买一张票,本人凭身份证上车,这样还能倒票吗?不允许更名倒卖,只受理退票业务,你即使买了车票卖给我,我也不可能拿着你的身份证登车。
买火车票怎样方更清请回
人家用的独立光钎,高速的那种,其次是他们会拿亲戚朋友身分证弄很多短程票,然后谁找他买票他把票退了,换上别人的号码买回来,这样就实现赚黄牛钱了,收100块良心价,200块都正常。
对于抢票、秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案:方案一:使用队列来实现
可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧
比 如有100张票可供用户抢,那么就可以把这100张票放到缓存中,读写时不要加锁。 当并发量大的时候,可能有500人左右抢票成功,这样对于500后面的请求可以直接转到活动结束的静态页面。进去的500个人中有400个人是不可能获得 商品的。所以可以根据进入队列的先后顺序只能前100个人购买成功。后面400个人就直接转到活动结束页面。当然进去500个人只是举个例子,至于多少可 以自己调整。而活动结束页面一定要用静态页面,不要用数据库。这样就减轻了数据库的压力。
方案二:当有多台服务器时,可以采用分流的形式实现
假设有m张票, 有n台产品服务器接收请求,有x个请求路由服务器随机转发
直接给每台产品服务器分配 m/n张票
每台产品服务器内存做计数器,比如允许m/n*(1+0.1)个人进来。
当内存计数器已满:
后面进的人, 直接跳到到转到活动结束的静态页面,
通知路由服务器,不在路由到这台服务器(这个值得商讨)。
所有产品服务器进来的m/n*(1+0.1)个人再全部转发到一台付款服务器上,进入付款环节,看谁手快了,这时候人少,加锁什么的就简单的。
方案三、如果是单服务器,可以使用Memcache锁来实现
product_key 为票的key
product_lock_key 为票锁key
当product_key存在于memcached中时,所有用户都可以进入下单流程。
当进入支付流程时,首先往memcached存放add(product_lock_key, “1″),
如果返回成功,进入支付流程。
如果不成,则说明已经有人进入支付流程,则线程等待N秒,递归执行add操作。
我通过你的问题,想象了一下你的环境。
可能是 有100个票。 10万人抢。
你可以在服务器上做一个消息列队。不论多少人抢票,都先放入消息列队中。这样,我们就把高并发,变成了统一的单线程。
这时候一切都好办了。优点是缓解了MYSQL的瞬时压力
但缺点是,如果1秒内1万人点击抢票。有可能会造成瞬时用户访问困难。(因为大家都在列队)
如果你觉得慢了几百毫秒不能忍,那你就需要换一个做法:
做一个竞争锁,防止多个用户同时获取一张票。(票在MYSQL中)
在内存中存入一个标签,来确定是否还有票。
当内存标签说:没有票了。 剩下的用户一律歇菜。
这样的优点是不论MYSQL,还是用户,都很轻松。
缺点是,稍微有点小麻烦。 看你具体需求了。
如何快速抢到火车票,在当前中国这个形式下非常重要,其实抢票也是有方法的,我这里给大家介绍使用360二代抢票,这工具优势那就是全自动的并且它自己可以去识别验证码,缺点是识别率不是特别高。下面我来介绍怎么使用。
进入抢票页面打开360浏览器,在右上角位置点击票那个字,如下图所示。还有就是必须注意浏览器的版本,似乎6.0之后的版本是可以的,反正你安装最新的应该是没有问题的。下面发我的版本。
点击360抢票二代进入抢票主页
登陆输入你的账号和密码,然后点击登陆,一般360会帮你输入验证码,不过有时候识别识别,需要自己输入。
设置你抢票信息如下图所示,你要选择左侧的信息,入乘客车次席别等,尤其重要的是要勾选圈中的全自动抢票才会自动去抢票,不用人工处理,有票会提醒你。
点击开始刷票正常刷票会有如下图的提醒。
抢票成功如果可以刷到票会有如下提醒,你输入验证或者360自动识别。
进入支付抢票成功后提醒你支付,你可以选择现在支付和稍后支付。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)