四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果
二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式
三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享
哎,又过春节了,同志们又要抢票回家了,这票卖的可真快啊,瞬间的功夫就没有票了,一票难求啊!
这两天闲着没事,刚好又要抢春节的票了。就把原来写的抢票软件给打开试了一下,发现居然不能查票了。于是就又改了一下。
事实上是改了两下,一是:让原来的程序能够用起来(适应新接口),而是加上了水平DNS并发查询。
以下就依次说下吧。
一、接口变更
事实上这次12306并没有大改。仅仅有一下几个接口改了。
1.1 登陆验证码
这个仅仅是去了个action的后缀(.do)。不改也没有问题。但怕以后出问题。就改了一下。
接口:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew
參数:和之前一样。
1.2 查询车票
接口:https://kyfw.12306.cn/otn/leftTicket/queryT (后面加了一个T)
參数未变。
1.3 查询日志接口
事实上这个接口算是新添加的吧,也就是在查询车票运行前先运行个查询日志接口,我实验了一下,发现不运行这个接口也行,只是查询车票的接口就会变的慢一点,所以我最后还是加上了,很easy。仅仅用发下请求就可以了。
接口:https://kyfw.12306.cn/otn/leftTicket/log
方法:GET
參数:和查询车票就可以參数一样。
返回值:不用管。
1.4 获取联系人接口
这个接口也没有大改,假设你的联系人少的话就不用管了。
由于我的联系人有两页,但依照之前我提供的接口的话仅仅能获取第一页的联系人,导致第二页的联系人不能正常获取。因此改动为例如以下:
接口:https://kyfw.12306.cn/otn/passengers/query
方法:GET 或 POST
參数:pageIndex (第几页)
pageSize (每页多少条记录)
返回值:json格式,略微解析下就能够了,字段名字没有变。
二、水平DNS并发查询
事实上这次改动最大的地方算是加了个水平DNS查询吧。由于12306是全球都能够訪问的站点,须要提供高并发等功能。因此在各地都提供了多个server,通过DNS解析,不同地区的用户訪问距离本地近期的server来进行解析,通过这样12306来分解各地的高并发请求。但这种话就造成了另外一个问题,就是不同地区的用户在同一抢票时间抢同样的火车票。但看到的页面数据会有区别。有的能够看到剩余车票。而有的看不到,这是由于他们訪问的不是同一个12306server。不同的缓存导致的。
水平DNS查询的功能简单来说就是能列出12306各地server同样车票的剩余情况,看下图便知。
上图显示的就是全球各地12306server同一时间同样车票的显示情况(我这仅仅是演示,要看到区别,能够在放票的那段时间。能够看到不同的server会显示不同的结果)。
事实上实现也很easy。首先通过DNS查询工具,查询出12306站点(kyfw.12306.cn)相应的各地的serverip地址。然后每一个地区都分别请求同样的车次,然后再table里面列举出来就可以,简单吧。
这个功能是很有用的,能够间接的反应出各地server的反应快慢。最后假如某个地区的车次信息显示有票,那么仅仅须要把程序当前DNS改动一下,让kyfw.12306.cn域名相应到那个IP地址就可以,然后就能够訪问那个IP地址进行异地server订票。
最后再说下,在我实验水平DNS查询的时候,发现假设选择了异地server进行订票,会发现你须要在异地server上又一次登录下才干够订票(能够说明12306在全国各地的应用server并没有共享session)。
四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享的更多相关文章
- 12306抢票带来的启示:看我如何用Go实现百万QPS的秒杀系统
本文为开源实验性工程:“github.com/GuoZhaoran/spikeSystem”的配套文章,原作者:“绘你一世倾城”,现为:猎豹移动php开发工程师,感谢原作者的技术分享. 1.引言 Go ...
- 12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(上)
郑重声明: 本文仅供学习使用,禁止用于非法用途,否则后果自负,如有侵权,烦请告知删除,谢谢合作! 开篇明义 本文针对自主开发的抢票脚本在抢票过程中常常遇到的请求无效等问题,简单分析了 12306 网站 ...
- python3.7之12306抢票脚本实现
悲催的12306,彻底沦为各路抢票软件的服务提供方.元旦伊始,纯粹12306官网及APP抢票,愈一周的时间,仅到手一张凌晨3:55回家的站票.为远离脑残,无奈选择抢票软件,预购年后返沪车票.BTW,研 ...
- Python 实现的 12306抢票脚本
Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤:- 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等).- 建立模拟浏览器 ...
- 「今日 GitHub 趋势」让全世界程序员体会中国的 12306 抢票狂潮
[2018年1月7日 GitHub 趋势] No.1:yyx990803 / build-your-own-mint 单日 714 星 使用 Plaid,Google 表格和 CircleCI 构建您 ...
- LoadRunner系列之—-04 录制基于https协议的脚本
实际性能测试过程中,有些需录制脚本的页面或接口是基于https协议的,按原来方法录制脚本,录完了脚本是空的.为解决这个问题,第一步了解https协议的具体实现,这块网上资料很多,可参考页面下方参考资料 ...
- 12306抢票算法居然被曝光了!!!居然是redis实现的
导读 相信大家应该都有抢火车票的经验,每年年底,这都是一场盛宴.然而你有没有想过抢火车票这个算法是怎么实现的呢? 应该没有吧,咱们今天就来一一探讨.其实并没有你想的那么难 bitmap与位运算 red ...
- 专业的抢票软件 12306bypass
专业的抢票软件 https://www.12306bypass.com/
- 马后炮之12306抢票工具(四)--抢票Demo,2014年1月9日终结版
时隔一年多,终于朋友的忽悠下吧抢票Demo的最后一步完善了,与2014年1月9日成功生成车票. Demo仅经过自己测试,并未在高峰期进行测试,代码质量很差,因为赶工,套用去年模板并未使用设计模式. 代 ...
随机推荐
- Juniper交换机维护
Juniper交换机维护操作之一: 1.1 交换机启动和关闭 1.1.1 重新启动 1. 使用具有足够权限的用户名和密码登陆CLI命令行界面. 2. 在提示符下输入下面的命令: use ...
- 学习英语的小习惯(IT版) 不断补充中~~~~~~
对于一些英文单词的读音,包含各种类似于Linux,Maven,Python……这些单词,尽量第一时间去找到他们的标准或者地道的发音,不要随便读,以免后面发音很难纠正. 有道词典的屏幕取词和划词很好用, ...
- BZOJ 2659 数学
思路: 一开始以为是真·欧几里德 a,b来回消 (其实用不了那么麻烦) 我们发现 这是一个矩形 求一下整点数 完了.. 要特判 p=q的情况 //By SiriusRen #include <c ...
- B - Nearly Lucky Number
Problem description Petya loves lucky numbers. We all know that lucky numbers are the positive integ ...
- 6.Renderer Window
渲染是实时的,所见即所得.同时还可以输出一些统计信息. Pixel Snoop:获取颜色值,同时把该值复制到剪贴板,主要用户是获取颜色值 Wireframe:开启后可以查看3D节点图形骨架 Stati ...
- 让break跳出外层循环的方法
demo //在里层循环里面,想办法让外层循环的条件不成立,就可以控制外层循环结束. for(var i = 0 ; i < 10; i++){ alert(i) for(var j = 0 ; ...
- jQuery操作DOM知识总结
jquery操作DOM(节点) 1.创建元素 //$(htmlStr) //htmlStr:html格式的字符串 $("<span>这是一个span元素</span> ...
- Shell Notes
查找: find: 实时查找,精确,速度慢,支持正则 find 查找路径 查找标准 查到后处理动作 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕 匹配标准: -name 'fi ...
- ML一些简单的资源
参考文献及推荐阅读 维基百科,http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm: 机器学习中的相似性度量,http://www.cnb ...
- CSS读书笔记(2)---简易相册和日历表的制作
一.HTML和CSS制作的简易相册 相册在默认情况下是缩略图显示,而且是截取相片的某一部分显示的.当鼠标停留在某张缩略图上,相册列表中的缩略图变为大图,展示在相册的左边区域, 同时缩略图部分变成空的 ...