banner
NEWS LETTER

SpringBoot实现12306自动抢票系统

Scroll down

写在前面

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

如何分析12306接口

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

必要的接口

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

1.获取站点信息

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

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

2.获取cookies

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

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

1
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.车票查询

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

4.登录配置查询

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

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

5.读取验证码

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

6.校验验证码

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

7.登录

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

8.校验是否登录成功

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

9.获取uamtk

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

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

10.获取当前登录的tk

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

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

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

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

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

12.点击预定按钮

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

13.获取两个token

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

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

14.获取乘客信息

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

15.提交前检查订单

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

16. 获取排队情况

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

17.提交订单

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

18.获取订单

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

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

源代码

Fork me on Gitee

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

其他文章
目录导航 置顶
  1. 1. 写在前面
  2. 2. 如何分析12306接口
  3. 3. 必要的接口
    1. 3.0.1. 1.获取站点信息
    2. 3.0.2. 2.获取cookies
    3. 3.0.3. 3.车票查询
    4. 3.0.4. 4.登录配置查询
    5. 3.0.5. 5.读取验证码
    6. 3.0.6. 6.校验验证码
    7. 3.0.7. 7.登录
    8. 3.0.8. 8.校验是否登录成功
    9. 3.0.9. 9.获取uamtk
    10. 3.0.10. 10.获取当前登录的tk
    11. 3.0.11. 11.买票前校验用户是否正常登录
    12. 3.0.12. 12.点击预定按钮
    13. 3.0.13. 13.获取两个token
    14. 3.0.14. 14.获取乘客信息
    15. 3.0.15. 15.提交前检查订单
    16. 3.0.16. 16. 获取排队情况
    17. 3.0.17. 17.提交订单
    18. 3.0.18. 18.获取订单
  • 4. 源代码
  • 请输入关键词进行搜索