未分类, 运营维护

『T.S. 89』两个晚来的提高大麦网购票成功率的方法

Taylor Swift

QQ在线人数统计及其分布图

大家可以看到,那个小亮点数目最多的,最亮的省,是广东省,尤其是珠三角地区!
所以在此提出一个猜测:
在大麦网购票失败的人当中,在广东省购票的人占的比例最大。

也许你会说广东省人多,那购票的人当中,广东省的人所占的比例自然就多,购票失败的广东人占购票失败的人的比例也会多,但你有没有想过为什么呢?

对于大麦网这种网站,要同时应付N多人访问,且保证速度,服务器仅有一台,或仅在一个地区,是不可能的,服务器是分布式的,才能为如此多的访客提供服务(证据:http://www.17ce.com/site/http/201507_a97522b8b50b05c4f2e18c9e579cf1ee.html)。使用分布式服务器,或者CDN,为了能让不同地区的访客均能以最快的速度访问到他们的网站,就要使用NS服务器智能地根据访客的IP给访客返回不同的IP地址(一般是离访客最近的,且ISP相同的)。
由于广东省人多,那同时使用分配给了广东省的服务器的人就多,人多了,服务器就不堪重负,出现拒绝服务的情况,访问人数相对较少的服务器,服务器相对比较空闲,可能仍然有余力处理大量订单。
当然这只是他们的一部分服务器,他们处理订票数据的服务器具体如何部署我不太清楚,但不排除也是分布式的。

所以,下次想提高购票的成功率,访问一个访问人数相对较少的服务器是关键。
想知道哪里人数少,可以使用QQ的在线图作为参考:http://im.qq.com/,点击右上角的“当前在线人数……”。
接下来使用分布式测速服务,例如上面的17ce,还有webkaka,360的。
以上面17ce的测试结果为例,从解析IP所在地字段可以找到许多个省份的服务器,选一个QQ在线图中较暗的省(西藏你不用考虑,因为我目前没见过有公开销售那边的服务器的IDC,所以大麦网使用那边服务器的可能性极低),且要在测试结果的解析IP所在地字段中有该省。

这里我选了黑龙江(选哪个省根据具体情况而定,你不一定要选黑龙江),可以看到有这个服务器:
联通:218.7.220.59

这个省在17ce仅找到了ISP为联通的,可能有些省有多个ISP,不一定要选和你同ISP的,选择同ISP只是可以确保延迟较低,但一般是几个路由,数十毫秒的差距,一般认为南方使用电信的人较多,北方使用联通的人较多,实际使用比例是否如此我就没统计过啦。
接下来编辑hosts文件。
我知道很多人不知道hosts文件是什么,可以点击开始->运行,Windows下输入:

这样就会使用记事本打开hosts文件。
Linux或Unix(Mac OS)的hosts文件在/etc/hosts,自行选择喜欢的编辑器,我喜欢vim,当然你得有root权限。
在末尾新建一行,写入记录(Windows, Linux, Unix均如此):

如图:

hosts

然后保存。由于DNS查询,默认是hosts文件优先(除非你自己改了优先级),因此我们系统获取到shopping.damai.cn的IP将会是218.7.220.59。
验证方法,使用Windows的,在运行的编辑框中输入:

按确定
使用Linux, Unix的,在终端中输入:

按Enter
如果你会nslookup,也可以使用nslookup。
你就可以看到相应的IP,如图:

ping

之后,你访问shopping.damai.cn,就会使用位于黑龙江的服务器。

也许有人留意到了,大麦网有海外的服务器,会不会海外的服务器更少人访问?
这个我是无法确定的,不排除大麦网让所有海外服务器共同使用一个处理订票数据的服务器,甚至该服务器还与国内一个或多个省共用。

毕竟实践是检验真理的唯一标准,因为我没经过测试,只是根据我的理论给出的方案,所以我不敢肯定此方法一定有效。

不过嘛,试试也无妨。

接下来给出另一个方案。
先看看这个图(大家不要生气,我没成功购票,可能是因为我在广东省的原因吧):

Taylor Swift

相信一部分当时盯着大麦网Taylor Swift 1989演唱会的购票页面的人会好奇,为什么倒计时还在进行,我却可以选票,立即预定按钮还出来了?

其实那个日期选择,价格选择,是通过CSS样式禁用了,“您选择了……”,和立即预定按钮,是通过CSS样式隐藏了。
我们可以通过Chrome浏览器的审查元素功能(很多浏览器都有这个功能),修改HTML元素的类,实现更改样式的目的。

找了一会儿,找到一个还没开始售票的项目:http://item.damai.cn/85215.html
我这里就以此项目为例,首先使用Chrome访问该网页。
大家可以发现此页面的时间,票的价格是无法选择的,且“您选择了……”,和立即预定按钮也无法查看到。
把鼠标移动到”2015.07.25 周六 18:00″上,按鼠标右键,点击审查元素,接下来浏览器会弹出一个审查元素的框,并且自动定位到此处的HTML代码,往上数行,可以找到一行的内容为:

如图画红框的位置:

日期选择

编辑此行(可以先用鼠标左键单击此行,此行会变蓝色,再按F2,就会进入编辑状态,或者按右键,选“Edit as HTML”),把:

修改成:

接下来利用相同的方法,定位到价格选择处的代码,不管你是不是要买最便宜的那张票,都给我定位到最便宜的那张票的代码(其实我是想方便你找代码而已),往上数行,找到代码:

如图画红框的位置:

价格选择-1

把:

修改为:

接下来,你可以定位到你要选购的票的面值的HTML代码,如780,往上数行,找到代码:

如图画红框的位置:

价格选择-2

把:

修改为:

不管你是否要选购最贵的一张票,你都给我定位到最贵的一张票的代码处,往下数行,找到代码:

如图画红框的位置:

立即预定

把:

修改为:

到这里,大功告成,可以看到页面已发生了变化:

结果

选择好日期,价格,最后你要做的就是等倒计时结束,就像这图:

Taylor Swift

​别想着你已经选择好了日期以及价格,就可以点击立即预定按钮提交,然后付款购票。
这样只是为了能让你节省一两秒选择日期和价格的时间,还有那该死的Javascript去显示“您选择了……”。

那天我购票仅使用了第二个方法,但提交过去,返回的只是500错误,也许是我没使用第一个方法的缘故吧……

已经确定Taylor Swift要在上海加一场演唱会,如果通过审核,希望这两个方法可以协助各位成功购票。

难得高三毕业了,想去看Taylor Swift的演唱会,却买不到最便宜的票。虽然后面有掉出价格高的,但是学生没那么多钱,广东到上海,路费也不少……