二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式
一、基于HTTPS协议的12306抢票软件设计与实现--实现效果
二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式
三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享
实现效果:http://blog.csdn.net/chaofanwei/article/details/18709415
直接步入正题吧,在这主要想说下现在的12306各个功能的接口以及数据格式。主要分为登录,获取联系人,查票,预定,查询未完成订单五个模块,至于其他的一些接口不重要,可以直接忽略,比如检测验证码是否正确,请求车票剩余个数等等,本文并为写出来,有需求的可以自行研究。
一、登录
登录主要是获取session,保持与服务器端通信。登录主要有两个步骤
第一 获取登录验证码
方法:GET
接口:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=login&rand=sjrand&
参数:照抄,一样的
返回:二进制图片流
第二 登录
方法:POST
接口:https://kyfw.12306.cn/otn/login/loginAysnSuggest
参数:1、loginUserDTO.user_name 用户名
2、randCode 验证码
3、userDTO.password 密码
返回:json字符串,可判断是否登录成功
二、获取联系人
方法:GET
接口:https://kyfw.12306.cn/otn/passengers/init
参数:无
返回:html文件,里面能够找到一个变量,是json格式的,能够解析成user对象
三、查票
方法:GET
接口:https://kyfw.12306.cn/otn/leftTicket/query?
参数:leftTicketDTO.train_date:查票日期
leftTicketDTO.from_station:起始站(字母代号)
leftTicketDTO.to_station:目的站(字母代号)
purpose_codes:ADULT
返回:返回json格式,直接解析
四、预定
预定分6个步骤,一一进行,相互关联
第一:预提交
方法:POST
接口:https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest
参数:secretStr:从查票中获得(每个车次对应一个,并且每次都不一样,需要实时解析)
train_date:订票日期
back_train_date:返程日期
tour_flag: dc
purpose_codes:ADULT
query_from_station_name:出发站
query_to_station_name:目的站
undefined:空字符串
返回:返回json格式,判断是否提交成功
第二:获取相应参数
方法:POST
接口:https://kyfw.12306.cn/otn/confirmPassenger/initDc
参数:
_json_att:空字符串
返回:html文件,在前几行解析globalRepeatSubmitToken 下面有用,以及从下面获取ticketInfoForPassengerForm变量的值,是个json格式,从中获取purpose_codes,key_check_isChange,leftTicketStr,train_location为下面提交做准备
第三:获取提交验证码
方法:GET
接口:https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew.do?module=passenger&rand=randp&
参数:
无
返回:和登录验证码一样,返回图片二进制流
第四:检测是否可以确认提交
方法:POST
接口:https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo
参数:
cancel_flag:2
bed_level_order_num:000000000000000000000000000000
passengerTicketStr:座位类型,0,车票类型,姓名,身份正号,电话,N(多个的话,以逗号分隔)
oldPassengerStr:姓名,证件类别,证件号码,用户类型
randCode:预定验证码
tour_flag:dc
_json_att:空字符串
REPEAT_SUBMIT_TOKEN:从上一步获取
返回:json格式,判断是否可以提交
第五:确认提交
方法:POST
接口:https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue
参数:
passengerTicketStr:座位类型,0,车票类型,姓名,身份正号,电话,N(多个的话,以逗号分隔)
oldPassengerStr:姓名,证件类别,证件号码,用户类型
randCode:预定验证码
purpose_codes:第3步获取
key_check_isChange:同上
leftTicketStr;同上
train_location;同上
REPEAT_SUBMIT_TOKEN:同上
_json_att:空字符串
返回:json格式,判断是否提交成功,并返回等待时间,每隔一定时间段调用第六步返回处理结果
第六:轮询获取提交结果
方法:GET
接口:https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime?
参数:
random:随机数字
tourFlag:dc
REPEAT_SUBMIT_TOKEN:有第三部获取
_json_att:空字符串
返回:json格式,返回等待时间,如果waitTime小于0,则获取订单信息orderId,如果大于0,则继续轮询
五、查询未完成订单
方法:POST
接口:https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete
参数:
_json_att:空字符串
返回:json格式,包含订单信息,直接解析
说到这,5个功能基本就介绍了,但现在贴出来只是为了学习使用,不会恶意攻击,况且,12306网站接口更改很频繁,现在贴出来的接口说不定明天就 被改了,所以重要的其实还是学会怎么抓取相关接口和数据,以及从数据中进行分析获取相应的参数,相应的结果。在这里我主要用了firebug,chrom浏览器自带 的网络分析工具,以及fiddler和wireshark工具,相关工具使用说明,就自己在网上找吧。
最后在吐槽一下吧,12306网站用到了cdn静态缓存技术,会导致在不同的区域,带宽,负载下根据负载均衡选择相应的服务器,也就是说全国各地有很多的12306服务器 每个用户访问的可能服务器是不样的,但只是静态页面和js、css和图片等,但各个服务器直接会保持session共享的,也就是在其中一台服务器登陆的话,在别的服务器 上面也相当于已经登陆了。所以最好能够动态选择服务器,使缓存时间最新,压力最小,数据更实时很重要。在我的实现中就是没查询一次,就会换一次服务器ip。至于相关 技术我以后会揭晓。但本文的内容对于学习来说已经够了。查询具体ip在http://tool.chinaz.com/dns 里面能够看到。
以上接口和格式写的有点模糊,有不到之处还请见谅。
二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式相关推荐
- 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享
一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现- ...
- 一、基于HTTPS协议的12306抢票软件设计与实现--实现效果
一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...
- python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...
python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...
- python GUI+爬虫——12306抢票软件(1)
使用python 的GUI 和爬虫等功能自己构造一个12306的抢票软件. 该课程来自网易云课堂的撩课学院,付费课程.地址:网易云课堂搜索以下内容就可找到 我跟着学,不一定最后能成功.先试试,想要成功 ...
- 12306 java程序_基于java httpclient的12306 买票软件
12306-hunter Java Swing C/S版本12306订票助手 本程序完全开放源代码,仅作为技术学习研究交流之用,不得用于任何商业用途:作者不承担任何由此带来的直接或间接责任 特别说明: ...
- java 12306 模拟登陆_GitHub - zuihou/12306-test: 基于java httpclient的12306 买票软件, 仅供学习使用...
12306-hunter Java Swing C/S版本12306订票助手 本程序完全开放源代码,仅作为技术学习研究交流之用,不得用于任何商业用途:作者不承担任何由此带来的直接或间接责任 特别说明: ...
- PyQt5+网络爬虫----打造自己的12306抢票软件
郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击12306网站.对12306服务器造成的任何损失,后果自负. 导语:由于12306服务器访问量巨大,并且官方为防止黄牛恶意刷票.以及一些非法攻击.1 ...
- iOS开发笔记--基于面向协议MVP模式下的软件设计
传统模式下的开发 MVC MVVM 基于面向协议MVP的介绍 MVP实战开发 说在前面: 相信就算你是个iOS新手也应该听说过MVC的,MVC是构建iOS App的标准模板.随着时间的推移,在iOS ...
- 12306 抢票软件使用记录
1.代码地址 https://github.com/pjialin/py12306 2.注意事项 a.需使用python3.6 b.下载包时使用python原始源 pip install --user ...
最新文章
- 基于java nio的memcached客户端——xmemcached
- python中outside loop_Python: 'break' outside loop
- 【IOS 开发】Object - C 数组使用详解
- 算法入门书籍--算法图解
- 单个正态总体均值的区间估计_假设检验09---单个正态总体参数的假设检验
- Vue安装live-server
- kindeditor简单使用
- AWS CEO Andy Jassy 专访:我们一直思考的是未来 2-5 年的事 | 人物志
- 没想到,我都来阿里5年了!
- 树莓派3B wiringPi 控制LED小灯
- 苹果 macOS Monterey 12 正式发布
- Flink 在米哈游的落地实践
- 最全事业单位考试计算机基础知识试题,最全的事业单位考试计算机基础知识试题...
- 公众号获取access_token失败
- 游戏显示无法连接服务器怎么回事,Game Center无法连接服务器怎么办 五种方法任你选择...
- 一个机器人教小八_哈工程学生研发的水下机器人“敖小八”亮相浙江卫视
- 完美国际真数苹果_苹果手机:Checkm8漏洞永久性破解A5-A11设备 全线旧设备实现完美越狱...
- 郁闷的sendto失败
- Kusto Query Language (KQL) 学习笔记
- css动画走马灯5秒,css3 transition 和 animation实现走马灯
热门文章
- java 表达式引擎,Aviator 轻量级表达式引擎
- 阿里巴巴设计师:语雀工作台改版完整复盘
- change和modify的区别
- java contextmenu_安卓开发_浅谈ContextMenu(上下文菜单)
- 五个课时,百余智慧安防AI应用作品落地!AidLux实战训练营圆满收官
- 量子计算 9 量子力学与现实世界
- C++ 处理HBITMAP类型的.bmp位图文件, 代码工具
- php网页文字,PHP语言之网页文字简繁转换函数
- 神经网络原理一个简单的神经网络模型搭建
- 第十七届全国大学生智能汽车竞赛:智慧交通组创意赛线上资格赛-冠军方案