四、基于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)。

时间: 2024-10-07 08:01:06

四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享的相关文章

PythonGUI+爬虫-从零打造12306抢票软件

课程介绍:此项目为GUI+爬虫+反反爬虫+网络多线程+自动打码+缓存机制+数据清洗等多项技术综合一体的项目;开发中更能体验抓包思路, MVC, 分层, 封装重构等思想 课程目录:001.12306抢票软件项目-项目展示002.12306抢票项目开篇-2019新年快乐!003.抢票软件项目-项目需求和原型图004.网络基础-网络-IP-域名概念005.网络基础-客户端和服务器概念006.网络基础-客户端和服务器角色007.网络基础-HTTP协议-上008.网络基础-HTTP协议-中009.网络基础

从零实现一款12306抢票软件(一)

https://zhuanlan.zhihu.com/p/37101955 从零实现一款12306抢票软件(一) 张小方 公众号:easyserverdev.资深开发工程师,擅长客户端与高性能服务器的设计与架构. ?关注他 28 人赞了该文章 写在前面的话 每年逢年过节,一票难求读者肯定不陌生.这篇文章,我们带领读者从零实现一款12306刷票软件,其核心原理还是通过发送http请求模拟登录12306网站的购票的过程,最后买到票. 关于http请求的格式和如何组装http数据包给服务器发送请求,我

从零实现一款12306抢票软件

写在前面的话 每年逢年过节,一票难求读者肯定不陌生.这篇文章,我们带领读者从零实现一款12306刷票软件,其核心原理还是通过发送http请求模拟登录12306网站的购票的过程,最后买到票. 关于http请求的格式和如何组装http数据包给服务器发送请求,我们在上一篇文章<从零实现一个http服务器>中已经详细介绍过了,如果还不明白的朋友可以去那篇文章看下. 郑重申明一下:这里介绍的技术仅供用于学习,不可用于恶意攻击12306服务器,请勿滥用本文介绍的技术.对12306服务器造成的任何损失,后果

如何用python写一个简单的12306抢票软件

所谓抢票实际上是在开始放票的一瞬间第一个发出请求并点击预订.作为程序员的我们,完全可以让程序来做这件事.我花了几个小时写了一个demo.用到的工具集有:Python3.6, Selenium, chromdriver. 程序本身就是流程性的东西,没有什么可介绍的.代码如下 #coding=utf-8 from selenium import webdriver from time import sleep import traceback TICKET_URI = 'https://kyfw.1

12306抢票软件连接地址

12306智能刷票,订票 https://github.com/testerSunshine/12306 12306 购票助手,支持集群,多账号,多任务购票以及 Web 页面管理 https://github.com/pjialin/py12306 12306分流抢票 https://www.bypass.cn/ 原文地址:https://www.cnblogs.com/Nanaya/p/12105505.html

12306改版之后简单抢票软件的实现(转载)

又到一年抢票时,各种抢票软件的肆虐让12306不堪重负,最近这几天12306频繁的更换手段来阻止抢票软件. 先来吐槽一下红红的验证码,过年的时候都喜欢用红色来喜庆一下,12306也深刻的表达了他的喜悦之情,又红又大的验证码啊,不过到底跨越了几个维度呢?看起来晕晕的,感觉像在时空里穿梭. 科学告诉我们,牛是色盲,分不出来颜色,但是伟大的黄牛们不是,不知道黄牛们看到鲜红的验证码之后会不会疯了一样的撞向显示器?那场面一定非常壮观 很快红色的验证码消失了,但是,在抢票的每一步都加了一个验证,过滤掉抢票软

12306改版之后简单抢票软件的实现

本文作者 russellwang,转载请标明出处 又到一年抢票时,各种抢票软件的肆虐让12306不堪重负,最近这几天12306频繁的更换手段来阻止抢票软件. 先来吐槽一下红红的验证码,过年的时候都喜欢用红色来喜庆一下,12306也深刻的表达了他的喜悦之情,又红又大的验证码啊,不过到底跨越了几个维度呢?看起来晕晕的,感觉像在时空里穿梭. 科学告诉我们,牛是色盲,分不出来颜色,但是伟大的黄牛们不是,不知道黄牛们看到鲜红的验证码之后会不会疯了一样的撞向显示器?那场面一定非常壮观 很快红色的验证码消失了

微博热搜、天猫秒杀、12306抢票,都是高并发,难点相同吗?

又是一年春运抢票时,12306 又挂了.同为高并发,微博热搜.天猫秒杀.12306 抢票有什么不同呢? 本文完全基于个人的有限的经验和了解,如果文中有什么问题还请大家一起讨论和指正. 微博热搜 「微博热搜」是一个典型的读多写少场景.读今日的热点新闻,写自己的微博评论. 作为一个后端开发,看到"读多写少",第一反应就应该想到要加缓存. 可是,为什么微博总是宕机,抵挡不住 xxx 明星出轨新闻流量? 对微博来说,难点在于热点无法预测,在面对突发流量时,如何快速扩容. 电商秒杀 电商秒杀的大

12306改版之后简单抢票软件的实现(二)完结

上一篇文章讲完了12306网站模拟登陆的部分,看这里 12306改版之后简单抢票软件的实现 现在把后面的步骤全部分析一下. 本文作者 http://www.cnblogs.com/russellwang,转载请标明出处 登录完成要选择买票人的信息,那么怎么获得账户中常用联系人的信息呢?访问这个地址:https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs 访问这个页面需要两个参数, 说一下第二个参数,REPEAT_SUBMIT_TOK