剖析抢票插件原理

 春节最火的事情除了春晚就是抢票插件了,不少用户也借此顺利买到了车票。但问题随之而来:抢票插件到底是不是恶意攻击软件?我们使用抢票插件算不算是“加塞儿”的行为呢?我来简单解释一下抢票插件的工作原理,上面的疑问自然也就解开了。

通俗地讲,12306网站就像一家无良超市,抢票插件不是“加塞”,也不是恶意攻击软件。解决抢票插件最根本的方法,是提高12306的网站技术水平。

先抛开插件、攻击、浏览器这些互联网专业词汇,举一个日常生活中的小例子:

话说有一家超市很火爆顾客人满为患,却只有一个收银台,而且还有这么一个规定:在你想要交费的时候,如果收银台有人正在交费,那么就请你放下商品立刻离开商场(一秒钟也不能等)出去溜达溜达,时间长短无所谓。但是等你溜达回来后,如果收银台还是有人,那你还要继续出去,直到某次你回来时正好收银台是空的。

        大家可以看到,这个规定要命之处是,很可能在我出去溜达的这段时间里收银台是没人的,只是当我回来的那一瞬间有个人排在前面交费了,于是我又得出去溜达。如果一个人很倒霉,每次都是他来的时候有人,走了就没人,那么他想交费成功就需要来来回回走很多次浪费很长时间。

        为了解决这个问题,你可以缩短溜达的时间,一会儿就去收银台看看,免得错失机会。显然,这么做不仅很累,而且是在浪费生命。

        这时有个聪明人站了出来,发明了一个机器人,在你出去溜达的时候,他每隔几秒中就替你看看有没有人交费,一旦发现没人就立刻打电话叫你:“快来,可以交费了!”这样我们就可以放心的去看电影、吃饭、打游戏了,一旦收到机器人的电话就飞奔回去。

        12306网站就是那家无良超市,一旦用户提交请求失败,用户就必须再主动发起一次购票请求。对于互联网操作来说,重新发起请求就相当于“出去溜达溜达再回来”。抢票插件就是那个机器人,在你出去溜达的时候替你向12306提起购买请求。根据说明,抢票插件会每隔6秒就像12306发起一次请求,一旦抢票插件发现“收银台”没人了,他就会向你发出通知:“有票啦,赶紧来买吧”。有了抢票插件替你“值班”,你就可以去刷刷微博,看看电影,或者写写年终总结了。

        可见,抢票插件是一款很不错的产品,它帮助人们克服12306本身的技术缺陷,更快捷、更简单地买到车票;使用抢票插件也不是“加塞”的行为,他不是把后来的人提到前面,而是让本来就排在前面的人不要错失机会。

        但是抢票插件也有不好的一面。大家可以想见,12306之所以访问速度慢,就是因为访问的人过多,服务器经受不住这么巨大的访问压力。而抢票插件每隔6秒就向服务器提交一次请求,远远高于一个自然人正常的访问频率,进一步加剧了服务器访问压力,形成了“越慢越抢越抢越慢”的恶性循环。

        在网络安全领域,有一种黑客攻击手段被称为DDOS攻击,这是一种最原始、最暴力、最没有技术含量但是很多时候也最有效的攻击手段,其原理是通过控制多台电脑(通常是几万到几十万台)对某个网站服务器密集的发起访问(访问压力可以达到数百万到数千万次每秒),造成服务器响应缓慢甚至宕机。

        如果把抢票插件的某些数据极端化,也会达到和DDOS攻击相同的效果。例如访问间隔不是6秒,而是0.1秒,也就是每秒钟向服务器提交10次请求;再假设全国有100万人在同时使用抢票插件。那么简单计算一下可知,抢票插件将会对12306的服务器造成将每秒1000万次的访问压力。对于大部分服务器而言,每秒千万次的访问压力是极端恐怖的。

        但是抢票插件与DDOS还是有区别的:

        1、抢票插件虽然客观上加大了12306的访问压力,但是主观上还是为了帮助用户快速买到车票。这与DDOS攻击就是了让网站服务器宕机的目的是有本质不同的。

        2、抢票插件用户主动安装到自己电脑上的,并且启用抢票插件对12306的访问行为也是用户主动发起的,同时只要他愿意,可以随时终止抢票插件的访问行为。而DDOS攻击的发起者通常都是事先通过隐秘的手段侵入他人电脑(称之为肉鸡),再通过控制肉鸡发动攻击。整个攻击过程中,肉鸡的主人既不能决定何时开始攻击,也不能决定何时终止攻击,甚至都不知道自己的电脑已经成为了肉鸡。

        3、抢票插件的用户之间是相互独立的,访问行为是自发的,之所以出现大量用户同时使用抢票插件完全是因为春节临近以及铁道部的售票政策(提前20天可预订);而DDOS攻击是有计划的,攻击发起人有意控制大量肉鸡同时发起攻击。

        所以,抢票插件不是恶意攻击软件。

        解决抢票插件最根本的方法,是提高12306的网站技术水平。第一,在重大节假日前后应当临时提升服务器抗压能力。第二,提高网站制作水平,降低不必要的访问压力和带宽占用。第三,为用户提交的购票请求建立队列。

        通俗地讲就是:第一,增加买票的窗口。第二,增加售票员。第三,让后来的顾客排队。

你可能感兴趣的:(插件)