快速查询火车票,除了直达车票,还有补票、跨站、中转等类型的车票,让你回家不愁。
仅供学习交流,切勿恶意请求 12306,影响其服务正常使用!
基于 Nodejs 与 Redis
- 直达:最理想的购票,花费的车票金额最低。如,起始站为 D,目的站为 H,列出的票也为 D 至 H。
- 补票:列出始站到中间站的票。如,起始站为 D,目的站为 H,列出的票可能为 D 至 E,也可能为 D 至 F。提示:需在列车上与列车员进行补票操作,即进行剩余车程的车票购买,补票的部分为无座类型的座位,如没补票否则将面临罚款与信用审查等风险。
- 跨站:列出起始站之前或者目的站之后的票程。如,起始站为 D,目的站为 H,列出的票可能为 C 至 I,也可能为 D 至 J。提示:此类车票的价格会高于直达车票的价格,目前最多会跨越 2 个站。
- 中转:列出起始站到中间站,加上中间站到目的站的两段票程。如,起始站为 D,目的站为 H,列出的第一段票可能为 D 至 F,第二段票为 F 至 H。提示:考虑到第一段列车延时出发的因素,第一段列车的到站时间与第二段列车的发车时间,之间相隔时间为 45 到 75 分钟之间,在购票时需考虑好中转时间。
- 补票 + 跨站:补票加跨站双重规则。如,起始站为 D,目的站为 H,列出的票可能为 C 至 E,也可能为 B 至 G。提示:购买此类票种实属无奈之举,建议车程较短的才考虑,不然代价太大。
- 请确保 Redis 已经安装
- 安装依赖包:
npm i
- 执行
node index.js
运行,默认端口号为 3000
- 如果返回的数据为空数组,很大原因是因为你的 IP 被 12306 给 ban 了(可访问 12306 官网查询行程,出现“网络出现问题”等字样则说明当前 IP 被限制了,需过一段时间才可继续访问),可以尝试使用 http 代理解决。
- 默认会自动更换 JSESSIONID Cookie 随机值,尝试访问 12306 接口。
- 在高峰期时,12306 会对查询接口地址做动态调整,本程序已经相应处理了。