四、基于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   查询日志接口

           其实这个接口算是新增加的吧,也就是在查询车票执行前先执行个查询日志接口,我实验了一下,发现不执行这个接口也行,不过查询车票的接口就会变的慢一点,所以我最后还是加上了,很简单,只用发下请求就行了。
                  接口:
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是全球都可以访问的网站,需要提供高并发等功能,因此在各地都提供了多个服务器,通过DNS解析,不同地区的用户访问距离本地最近的服务器来进行解析,通过这样12306来分解各地的高并发请求。但这样的话就造成了另外一个问题,就是不同地区的用户在同一抢票时间抢相同的火车票,但看到的页面数据会有差别,有的可以看到剩余车票,而有的看不到,这是因为他们访问的不是同一个12306服务器,不同的缓存导致的。


    水平DNS查询的功能简单来说就是能列出12306各地服务器相同车票的剩余情况,看下图便知。

    上图显示的就是全球各地12306服务器同一时间相同车票的显示情况(我这只是演示,要看到差别,可以在放票的那段时间,可以看到不同的服务器会显示不同的结果)。
   
    其实实现也非常简单,首先通过DNS查询工具,查询出12306网站(kyfw.12306.cn)对应的各地的服务器ip地址,然后每个地区都分别请求相同的车次,然后再table里面列举出来即可,简单吧。


    这个功能是非常实用的,可以间接的反应出各地服务器的反应快慢。最后假如某个地区的车次信息显示有票,那么只需要把程序当前DNS修改一下,让kyfw.12306.cn域名对应到那个IP地址即可,然后就可以访问那个IP地址进行异地服务器订票。


    最后再说下,在我实验水平DNS查询的时候,发现如果选择了异地服务器进行订票,会发现你需要在异地服务器上重新登录下才可以订票(可以说明12306在全国各地的应用服务器并没有共享session)。

 


 

 

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Python网络抓包工具有很多,比较流行的有Scapy、Pyshark、dpkt等。其中Scapy是一个强大的Python网络抓包库,可以灵活地构建和解析各种协议数据包。Pyshark是一个基于TShark的Python封装库,可以方便地使用Wireshark的过滤器和协议分析功能。dpkt则是一个纯Python实现协议解析库,支持TCP/IP、HTTP、SSL、DNS协议。 基于PyQT的网络抓包软件设计实现,可以借助上述Python网络抓包库来实现。首先需要设计一个GUI界面,使用PyQT实现,包括菜单栏、工具栏、抓包窗口、过滤器窗口等。然后在后台使用Python网络抓包库来实现数据包的捕获、解析、分析和显示。 具体实现步骤如下: 1. 使用PyQT实现GUI界面,包括菜单栏、工具栏、抓包窗口、过滤器窗口等。 2. 使用Python网络抓包库进行数据包捕获,可以使用Scapy或Pyshark等库来实现。 3. 对捕获到的数据包进行解析和分析,可以使用dpkt等库来实现。 4. 将解析后的数据包显示到GUI界面上,可以使用PyQT的QTableWidget等组件来实现。 5. 实现过滤器功能,可以使用Wireshark的过滤器语法,或者使用Pyshark的过滤器功能。 6. 实现保存和读取数据包的功能,可以使用Python的pickle模块来实现。 7. 实现其他功能,比如统计协议分布、流量统计等。 以上是基于PyQT的网络抓包软件的设计实现的基本步骤,具体实现还需要根据具体需求进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值