核心功能
12306 Train Assistant 是一个基于 Python CLI 的官方铁路12306自动化辅助工具,覆盖火车票全流程:余票实时查询、智能中转规划、经停站详情、乘车人管理、在线订票与候补排队。技能通过封装 client.py 实现与12306官方接口的交互,支持密码登录、短信验证登录及二维码扫码登录三种认证方式。
显著优点
1. 功能覆盖完整:从查询到支付闭环,支持 left-ticket 余票查询、transfer-ticket 中转规划、book/transfer-book 下单、candidate-* 候补管理、orders 订单查询等全链路操作。
2. 中转智能推荐:自动计算最优换乘方案,支持指定中转站,解决无直达线路的长途出行痛点。
3. 安全登录机制:提供密码登录、短信验证码登录及二维码扫码登录三种方式,其中二维码登录建议后台轮询(nohup),避免前台阻塞。
4. 人性化交互设计:支持相对日期解析(今天/明天/后天)、站名模糊匹配(中文/拼音/三字码)、选座偏好(如 --choose-seats 1D),降低用户记忆成本。
5. 预检机制:--dry-run 参数可在正式提交前验证订单可行性,减少因乘车人信息错误导致的失败。
潜在局限与风险
1. 风控敏感:高频查询或下单可能触发12306反爬机制(返回 error.html),需控制请求频率,建议间隔不低于1.5秒。
2. 支付链路不稳定:技能返回的 payment.pay_url 可能因网页端限制无法完成支付,需引导用户至官方App「待支付订单」完成最终付款。
3. 中转方案非 exhaustive:中转结果依赖12306推荐算法,极端冷门线路可能未覆盖全部可行组合。
4. 站点别名覆盖不全:极少数非标准站名(如历史别名)可能无法直接解析,需使用标准站名。
5. 环境依赖:需本地 Python 3 环境及 client.py 依赖库,非纯云端服务。
适合人群
- 高频铁路通勤/出差人士,需批量查询或多日期监控
- 技术用户希望自动化抢票、候补监控
- 长途出行需中转规划,对换乘时间敏感的用户
- 企业差旅管理员需批量管理员工乘车人信息
常规风险提示
- 请妥善保管
--password及KYFW_PASSWORD环境变量,避免明文暴露 - 二维码登录建议严格按文档使用
nohup &后台执行,避免终端阻塞 - 候补提交前建议先确认目标席别余票状态为「无」,提高成功率
- 订票成功后30分钟内需完成支付,否则订单自动取消