核心用法
12306-train-assistant 是一个基于 Python CLI 的铁路 12306 辅助工具,封装了余票查询、中转换乘、经停站查询、候补管理与下单支付等核心能力。用户通过自然语言触发(如"查明天北京到上海余票"),系统自动解析参数并调用 client.py 执行对应命令。
关键功能路径:
- 余票查询:
left-ticket支持中文/拼音/三字码站名,可限输出条数 - 中转换乘:
transfer-ticket自动推荐换乘方案,支持指定中转站;transfer-book完成中转订单提交(含预检模式--dry-run) - 经停站查询:
route优先用车次号--train-code自动解析内部编号 - 登录管理:支持密码登录(含短信验证)与二维码登录
qr-login-create,status检查登录态 - 候补全流程:
candidate-queue查看排队状态、candidate-submit提交候补、candidate-cancel取消、candidate-pay获取支付参数 - 订票支付:
book支持选座、order-pay获取支付宝/微信/银联支付链接
显著优点
1. 功能覆盖完整:从查询到支付形成闭环,候补、中转等复杂场景均有支持
2. 参数智能解析:自动处理相对日期(今天/明天)、多格式站名、车次号转内部编号
3. 安全预检机制:--dry-run 模式可在正式提交前验证订单可行性
4. 支付链路兜底:明确提示 App 端支付作为网页支付失败的备选方案
潜在缺点与局限性
1. 登录依赖重:多数操作需先完成登录,且 12306 风控机制可能触发 error.html 拦截
2. 非官方封装:基于爬虫/接口逆向实现,存在接口变更导致失效的风险
3. 无图形界面:纯 CLI 工具,对非技术用户门槛较高
4. 支付环节受限:支付参数获取依赖 12306 网页端,可能出现扫码失败需转 App 的情况
5. 候补兑现不确定:候补提交成功不代表最终出票,仍需持续关注 candidate-orders
适合人群
- 高频铁路出行者,需批量查询或自动化操作
- 技术背景用户,熟悉命令行操作
- 需要中转方案规划或候补管理的复杂出行场景
常规风险
- 账号安全风险:密码登录存在凭证泄露可能,建议优先使用二维码登录
- 风控封禁风险:高频请求可能触发 12306 风控,导致 IP 或账号受限
- 支付安全风险:需核对支付链接域名,防范钓鱼
- 订单时效风险:支付链接有时效,超时需重新获取