核心用法
12306 Train Assistant 是一款面向铁路 12306 平台的命令行自动化工具,通过 client.py 脚本封装了官网核心 API,实现从查询到支付的完整购票链路。主要功能模块包括:
- 余票查询 (
left-ticket):支持指定日期、起止站点的实时余票检索,可选queryG/queryZ双接口 - 中转换乘 (
transfer-ticket):智能推荐中转方案,支持指定换乘站或自动最优匹配 - 经停站查询 (
route):通过车次号自动解析内部编码,查询列车全程停靠信息 - 订票/中转下单 (
book/transfer-book):支持预检模式 (--dry-run)、选座、多乘客批量提交 - 候补管理 (
candidate-queue/candidate-orders/candidate-submit/candidate-cancel):全链路候补状态监控与操作 - 登录体系:密码登录、短信验证码登录、二维码登录三种方式,支持自动补登录机制
- 订单与乘车人:订单查询(未出行/历史)、乘车人信息拉取
显著优点
1. 全功能覆盖:相比同类工具仅支持查询,本技能实现查询-下单-支付-候补-订单管理的闭环
2. 自动化友好:支持 --json 结构化输出、环境变量注入凭证、后台二维码轮询 (nohup),适合脚本集成
3. 智能降级:cookie 失效时可通过 --username/--password 等参数自动触发补登录,减少人工干预
4. 多模态输入:站点支持中文/拼音/三字码,日期支持相对表达(今天/明天自动解析为 YYYY-MM-DD)
5. 风控意识:内置 --max-wait-seconds、--poll-interval 等排队策略参数,降低触发 12306 风控概率
潜在缺点与局限性
1. 官方接口依赖:所有功能基于 12306 网页/APP 私有 API,接口变更可能导致功能失效
2. 支付链路受限:技能生成的 pay_url 实测可能无法完成网页支付,需引导用户至官方 App 继续操作
3. 中转覆盖不全:中转方案依赖 12306 官方推荐算法,不保证穷尽所有可行换乘组合
4. 风控不可控:高频操作仍可能触发 error.html 风控页面,需人工等待后重试
5. 凭证管理风险:自动补登录机制需传递明文密码或依赖环境变量,存在敏感信息泄露隐患
适合人群
- 高频差旅用户:需要批量查询、监控余票的商务出行者
- 自动化开发者:希望将购票流程集成到个人工作流或 CI/CD 的技术用户
- 中转复杂场景:如深圳-拉萨等无直达线路,需智能换乘规划的长途旅客
- 候补策略玩家:需要精细化监控候补排队状态、批量管理候补订单的用户
常规风险
- 账号安全风险:二维码登录需后台轮询,若环境不安全可能导致登录状态被劫持
- 资金风险:支付链接跳转异常时,需严格核对 12306 App 内订单状态,避免重复支付
- 隐私合规:乘车人信息、订单数据通过本地脚本处理,需确保运行环境可信
- 服务稳定性:非官方工具,12306 接口升级或反爬策略调整可能导致功能中断