一、基于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并发查询分享相关推荐

  1. 二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  2. 一、基于HTTPS协议的12306抢票软件设计与实现--实现效果

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  3. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  4. python GUI+爬虫——12306抢票软件(1)

    使用python 的GUI 和爬虫等功能自己构造一个12306的抢票软件. 该课程来自网易云课堂的撩课学院,付费课程.地址:网易云课堂搜索以下内容就可找到 我跟着学,不一定最后能成功.先试试,想要成功 ...

  5. 12306 java程序_基于java httpclient的12306 买票软件

    12306-hunter Java Swing C/S版本12306订票助手 本程序完全开放源代码,仅作为技术学习研究交流之用,不得用于任何商业用途:作者不承担任何由此带来的直接或间接责任 特别说明: ...

  6. java 12306 模拟登陆_GitHub - zuihou/12306-test: 基于java httpclient的12306 买票软件, 仅供学习使用...

    12306-hunter Java Swing C/S版本12306订票助手 本程序完全开放源代码,仅作为技术学习研究交流之用,不得用于任何商业用途:作者不承担任何由此带来的直接或间接责任 特别说明: ...

  7. PyQt5+网络爬虫----打造自己的12306抢票软件

    郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击12306网站.对12306服务器造成的任何损失,后果自负. 导语:由于12306服务器访问量巨大,并且官方为防止黄牛恶意刷票.以及一些非法攻击.1 ...

  8. iOS开发笔记--基于面向协议MVP模式下的软件设计

    传统模式下的开发 MVC MVVM 基于面向协议MVP的介绍 MVP实战开发 说在前面:  相信就算你是个iOS新手也应该听说过MVC的,MVC是构建iOS App的标准模板.随着时间的推移,在iOS ...

  9. 12306 抢票软件使用记录

    1.代码地址 https://github.com/pjialin/py12306 2.注意事项 a.需使用python3.6 b.下载包时使用python原始源 pip install --user ...

最新文章

  1. pdf一键转曲_新技能:如何利用PDF制作可变数据!
  2. IOS开发笔记17-Object-C中的继承
  3. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第4章-带有事件驱动控制的分数阶多智能体系统的一致性
  4. HDFS(一) HDFS设计目标
  5. 微信小程序websocket连接服务器(接收信息)
  6. 微软开源新字体Cascadia Code,源于Windows Terminal
  7. 算法设计与分析——递归与分治——归并排序
  8. 【英语学习】【WOTD】minion 释义/词源/示例
  9. Win8 开发者训练营第一天的过程,感受和收获 :D
  10. 省钱有简单的祛痘方法 - 健康程序员,至尚生活!
  11. 软件测试中不需要测试的八件事
  12. `ECS弹性计算服务
  13. Shell常用命令大全
  14. html5 json.stringify,JSON.stringify()妙用
  15. 海南凤凰机场智能通信解决方案
  16. pygame 鼠标事件
  17. win7+nfs文件服务器,win7 nfs服务器设置
  18. Masked Arrays(numpy arrays掩码)针对数据中存在无效或者确实数据
  19. win10蓝屏修复之死路一条
  20. 8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能

热门文章

  1. 蓝桥杯单片机01——74HC138与74HC573
  2. hdmi网线延长器稳定吗_Chromecast HDMI延长器的重点是什么? 我需要吗?
  3. Java日志框架:Logback
  4. matlab如何离散椭圆方程,给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程...
  5. 常见电脑硬件故障有哪些?如何解决?~~~CPU故障
  6. 我的世界服务器修改个人游戏模式吗,我的世界1period;12指令更改模式 | 手游网游页游攻略大全...
  7. 接口测试平台代码实现2:本平台项目目录解析
  8. android xml加密解密,华为配置加解密工具
  9. 售前工作感悟:思想决定售前深度!
  10. Unity-Creating Project folder failed!