在12306无票情况下一种另类出行方式

一、背景

每当节假日或者过年期间,在12306想抢到票是一件很困难得事情。
这里介绍一种在12306查询出没票的情况下,还能够出行的方案。

假设你要从A去B,在12306查询从A到B的车票都售罄了,一般情况就觉得没票了。选择候补或者修改出行日期。其实我们还可以查询A到中间站点C(C是A到B车次的中间站点)的余票情况,如果有A到C有票,那可以先买票上车,再从C补票到B,也实现了从A到B的出行方式。

原理
从A到B可能存在很多中间站C到B的票被别人买走了,导致你查询出的A到B车票很少。但是A到C的票还在,你还可以购买。只要你上了火车,那么想补票去哪都可以了,你要做的就是合法的混上你想要的车次。

难点
A到B存在很多车次,车次不同,中间站点也不同,想通过人工的方式去统计出这些中间站点,并且去一一查询余票情况,显然是不太可行。因此借助程序自动化的方式去实现。

二、方案设计

整体方案分三个流程

  1. 查询出A到B所有符合要求的车次信息,统计出有余票和没余票的车次
  2. 对没余票的车次,提取出所有中间站点C信息,并且关联映射到对应车次
  3. 拿到所有中间站点,查询A到任意中间站点C的车次余票信息,找出有余票并且车次和步骤一没余票匹配的车次。

三、实现

3.1 查询车次

这里可以去12306官网查询车票情况,浏览器F12观察车次接口请求信息。实际12306通过otn/leftTicket/queryZ接口实现了车票查询,返回json中有完整车票信息。提取出其中满足要求的车次。并且将车次分成有余票,没余票两部分。

3.2 查询中间站

对没余票的车次,提取出所有中间站点C信息,这里也是有官方接口otn/czxx/queryByTrainNo,浏览器F12自行观察,并且找出所有中间站点和对应车次映射关系

3.3 找有余票的中间站

对上一步得到的中间站点,对每个中间站点C都查询A到C的车次信息,找出有余票并且在步骤一种属于没余票部分的车次。

四、结果总结

实际效果:
查询A(南昌)到B(上海)都没票了

pic1.png

通过上面流程获取的结果:


pic2.png

结果解读,第一条内容表示A(南昌)到B(上海)有中间站C(德安),车次G2790 在A到B无票,A到C有票,A点发车时间10:38,到C历时00:31,到B历时05:45
补票还要站五个多小时,也是蛮痛苦的!

去网站查下南昌到德安的票:


pic3.png

果然是有票的,可以混上车了!

总结
本文介绍了一种另类的12306出行购票方式。
在实在买不到票但又很想出行的情况下,通过这种方式能帮你找出一些车票先上车,然后再补票去你想去的目的地。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容