立项原因:铁路热门车次在起售时刻瞬间售罄,节假日与春运期间人工刷新抢票成功率极低,且需要全程守在电脑前卡点操作,错过起售瞬间即无票可买;本项目旨在解决"起售时刻难卡点、人工抢票效率低、必须人肉挂机守候"的产品问题,把查询、提交、确认整条下单链自动化并精确对齐起售时刻。行业场景与业务背景:面向个人铁路出行购票的日常场景,以单账号、个人自用为前提,用户在图形界面完成扫码登录、乘客与车次配置后,工具在起售前预热、起售瞬间自动下单、出票后弹出系统通知提醒支付,将抢票从"人盯屏幕"变为"后台挂机+到点通知",显著降低购票的时间成本与操作门槛。
软件包含五大功能模块。一是扫码登录模块:内嵌浏览器弹出 12306 登录页,铁路 App 扫码后自动收割会话 Cookie 并落盘,配合每 10 分钟一轮的会话保活(隐藏浏览器活化、通道探测、Cookie 轮换回写)延长登录态寿命,失效时托盘告警。二是乘客管理模块:拉取乘车人列表供勾选,学生票按乘客按次勾选并自动切换学生票池、无学生配额时回退成人票。三是任务配置模块:填写乘车日期、出发到达站中文名、查询车次列表并按顺序设定优先级(可上下调整)、席别、选座偏好、起售时刻、抢购窗口时长与查询间隔,配置自动保存。四是定时抢票引擎:起售前 30 秒预热,起售瞬间自动执行查询→提交→确认下单链,窗口内失败自动重试、遇"系统繁忙"风控指数退避,窗口结束自动停止;另设彩排模式,完整走下单链但在确认前截断、零订单,用于接口改版后自检。五是结果通知模块:出票成功弹出 Windows 系统通知提醒 30 分钟内支付,全程日志面板与托盘最小化常驻。主要功能概括为:扫码登录一次配置,到点自动抢票、出票即时通知。
我负责需求定义、12306 下单接口的抓包实证、引擎与界面全部编码、离线与实弹测试及打包交付。技术栈为 Python + PySide6 桌面界面 + curl_cffi 网络层 + PyInstaller 单目录打包;界面用 QThread 将抢票与保活放入后台线程,QWebEngineView 内嵌浏览器完成扫码登录与 Cookie 收割。实现亮点与难点:其一,普通 requests 的 TLS 指纹会被 12306 风控拦截,改用 curl_cffi 模拟 Chrome 指纹打通 HTTP 层;其二,将查询、提交、initDc、checkOrder、confirm 多步下单链封装为状态机,并做链变量静态审计防止盲发;其三,设计三层会话维持体系(保活线程活化、维持页、抢票线程每轮从磁盘换血接续)应对登录态过期;其四,针对起售峰值 WAF 丢弃与壳页回绝,实现瞬态识别、指数退避与不误导重扫码的告警策略;其五,编写引擎 7 项、UI 离屏 6 项、链路接线 2 项离线自测与两次真实出票的端到端验证保障质量。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论