核心用法
12306-train-assistant 是一个基于 Python CLI 的 12306 功能封装层,通过调用 client.py 脚本实现铁路票务自动化操作。核心能力覆盖四大场景:余票与中转查询(left-ticket、transfer-ticket)、经停站解析(route)、登录态管理(status、qr-login-create、密码登录)以及订单生命周期管理(订票 book、中转订票 transfer-book、候补 candidate-*)。
显著优点
1. 全链路覆盖:唯一同时支持直达订票、智能中转规划、候补队列管理的开源 CLI 方案,填补了官方 API 缺乏自动化接口的空白。
2. 灵活的中转策略:transfer-ticket 支持自动推荐换乘站或指定中转城市,transfer-book 可将中转方案一键转化为待支付订单,大幅降低跨线抢票认知成本。
3. 双模式登录:支持传统密码登录(含短信验证风控场景)与二维码登录,后者创建后自动后台轮询状态,兼顾安全与自动化。
4. 预检机制:--dry-run 参数允许在最终提交前验证乘客信息、余票状态与席别可用性,降低误操作风险。
潜在缺点与局限性
- 部署门槛:需自行准备 Python 环境、安装依赖并维护
client.py仓库,非技术用户难以直接使用。 - 风控敏感:高频调用易触发 12306 反爬机制(返回
error.html),需人工处理验证码或降低请求频率。 - 支付链路缺陷:脚本返回的
pay_url可能无法完成网页支付,用户仍需跳转至官方 App 的“待支付订单”完成最终支付,自动化闭环不完整。 - 站名解析依赖:依赖内置站名字典,生僻别名或新站可能存在匹配失败。
适合人群
铁路出行高频用户、具备基础运维能力的技术人员、需在服务器/定时任务中执行抢票策略的开发者。
常规风险
- 账号安全风险:明文存储密码或会话 Cookie 可能导致泄露,建议配合环境变量
KYFW_PASSWORD与权限隔离。 - 合规性边界:自动化订票可能违反 12306 用户协议,存在账号限制或封禁可能。
- 稳定性风险:官方接口无版本承诺,字段变更可能导致脚本失效。