SpringBoot实现12306自动抢票系统

写在前面

前段时间在浏览开源社区的时候,不小心看到一个 12306抢票 系统,一下就被吸引住了,然后就动力歪念头?,过年终于不用找黄牛了,哇哈哈哈,写了差不多一个星期,终于可以全自动抢票了,中间遇到的坑也是挺多的,在这里分享一下,供大家参考学习。

如何分析12306接口

使用 Chrome 或者 Firefox 浏览器,我这里用的是 Firefox,打开12306官网,然后打开开发者选项,点击网络选项卡,就可以观察到所有的请求接口情况了。
然后按照正常的流程,开始下单,没点击一部,然后看下面的控制台的请求情况,和分析接口的意义,这是一个很苦逼的过程?。

必要的接口

我这了整理了一些必要的一些接口,也是按照购票顺序写的。

1.获取站点信息

购票一部分站点参数使用的是编码,并不是汉字,需要使用这个接口获取对应的值

/https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9098

2.获取cookies

这个是为了获取必要的两个 cookie 的值的:RAIL_EXPIRATIONRAIL_EXPIRATION

这个接口就比较吊了,有特么好神奇,至今没搞懂后面的参数哪里来的,目前的是这俩 cookie 都是手动写死的,等研究出来,补充一下。

https://kyfw.12306.cn/otn/HttpZF/logdevice?algID=&hashCode=Ja4gW6Upz9XdOiA2-UBi5DjyNsB3Fmf3L0wxipiFro4&FMQw=0&q4f3=zh-CN&VySQ=FGEYxQuwmyAY0Gevguxv6Ch8vDiXELlH&VPIf=1&custID=133&VEek=unspecified&dzuS=32.0%20r0&yD16=0&EOQP=c227b88b01f5c513710d4b9f16a5ce52&lEnu=2886729839&jp76=b34839808806e7ff02df813671ec99b3&hAqN=MacIntel&platform=WEB&ks0Q=a103db222cd8296a50268c8f0355b741&TeRS=877x1440&tOHY=24xx900x1440&Fvje=i1l1s1&q5aJ=-8&wNLf=99115dfb07133750ba677d055874de87&0aew=Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010.14;%20rv:67.0)%20Gecko/20100101%20Firefox/67.0&E3gR=6c9c3674a3e453e368c3a0cc46f30eb8&timestamp=1560399328000

3.车票查询

https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT

4.登录配置查询

这个接口就是为了查看登录是否需要验证码的

https://kyfw.12306.cn/otn/login/conf

5.读取验证码

https://kyfw.12306.cn/passport/captcha/captcha-image64?login_site=E&module=login&rand=sjrand&_=%s

6.校验验证码

https://kyfw.12306.cn/passport/captcha/captcha-check?answer=%s&rand=sjrand&login_site=E&_=%s

7.登录

https://kyfw.12306.cn/passport/web/login

8.校验是否登录成功

https://kyfw.12306.cn/passport/web/auth/uamtk-static?appid=otn

9.获取uamtk

获取这个东西是为了后面获取用户 tk 做准备的。

https://kyfw.12306.cn/passport/web/auth/uamtk

10.获取当前登录的tk

这东西后面买票是必须使用的。

https://kyfw.12306.cn/otn/uamauthclient

11.买票前校验用户是否正常登录

这个接口只是为了校验,没有实际意义。

https://kyfw.12306.cn/otn/login/checkUser

12.点击预定按钮

https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest

13.获取两个token

这个接口会获取两个 token
globalRepeatSubmitToken:获取乘客信息、检查订单、获取排队情况、提交订单使用。
key_check_isChange:提交订单使用。

https://kyfw.12306.cn/otn/confirmPassenger/initDc

14.获取乘客信息

https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs

15.提交前检查订单

https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo

16. 获取排队情况

https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount

17.提交订单

https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue

18.获取订单

这个获取订单接口必须成功,才能确定下单成功的。

https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime

源代码

因为代码有部分敏感信息,所以我这就重新打包上传到QQ群了。
加QQ群下载:852214454

如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 随着移动互联网技术的发展和用户需求的变化,【小程序名称】应运而生,以其轻量化、便捷化的设计理念为用户提供了一种全新的服务模式。作为一款无需下载安装即可使用的应用,【小程序名称】依托于微信庞大的生态系统,让用户在微信内就能轻松实现各种功能操作。 【小程序名称】的核心功能主要集中在【具体服务领域】,例如在线购物、本地生活服务、教育学习或健康管理等。它简化了传统APP繁琐的注册登录流程,支持微信一键授权登录,极大地提升了用户体验。用户通过搜索或扫描二维码,瞬间即可开启使用,享受快速加载、流畅运行的服务。 该小程序界面设计简洁明了,布局合理,易于上手。同时,其特色功能如实时更新的信息推送、个性化推荐以及社交分享功能,让用户能够及时获取所需信息,并方便地将优质内容分享至朋友圈或好友,实现信息的高效传播与互动。 【小程序名称】注重数据安全与隐私保护,严格遵守国家法律法规和微信平台的规定,确保用户数据的安全无虞。此外,其背后的开发团队持续迭代更新,根据用户反馈不断优化产品性能,提升服务质量,致力于打造一个贴近用户需求、充满活力的小程序生态。 总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。只需轻点屏幕,无限精彩尽在掌握之中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值