v2.1.12:两处修正
【1】查票提示不再自相矛盾 群友日志里出现过这种:主提示说「C2387 可预订但无票」,明细却写着「一等座=9 二等座=有」。根因是那句文案从不检查到底有没有票,只要车次号对上就一律说"无票"。 现在会如实说清:这趟有票,但它的乘车区间是 泗县东→合肥西,和你填的不是同一个站,按默认设置跳过了(要接受同城其它车站就勾面板上那个开关,勾完记得重新点「开始抢票」)。
【2】跳转到支付/订单页后,日志尽量留全 抢到票跳转之后,面板日志有时只剩新页面的(技术日志是完整的)。现在跳转前会把面板日志也抄进技术日志一份,点「复制日志」至少能看到跳转前发生了什么。
顺带确认一件事:无座那个修复是有效的。群友最新的无座日志里,下单已经能走到最后一步(不再报「硬座仅剩0张」),失败原因是「余票不足」——那是票在那 1 秒里被抢走了,不是脚本的问题。
另外两处小修:同一个车次号有多趟时(12306 会把同城车站的车次一并返回),会优先解释"有票的那趟",不再拿没票的第一趟糊弄人;「你有一笔票还没支付」这条提示点掉之后就算处理完了,不会再反复弹。
v2.1.10:抢到票却以为失败的问题,修了
【1】票抢到了,却提示登录失效、你以为白抢了(群友真实踩到的) 抢到票之后脚本要跳去「未完成订单」页,而跳转需要登录态——抢票最后那几秒恰恰是登录态最容易失效的时候(刚打完一波高频请求)。跳过去只看到登录页,可票其实早就在账号里了,未支付订单 30 分钟就没了。 现在三道保险:下单成功先把订单信息存下来;跳转前确认登录态,失效就不跳,直接把订单号和"去哪儿支付"怼到脸上(横幅+声音+通知);就算你刷新或关了页面,下一个页面加载时还会再提醒一次。
【2】一开抢就掉线,只写一行日志没人看得见 现在会弹横幅并响报警声,一直响到你处理。
【3】顺手做的 起售窗口查票超时 3 秒放宽到 5 秒(整点 12306 慢,3 秒会误杀能成功的请求);下单重试加随机抖动;重启冷却存本地(刷新也拦得住连着重启);查票接口连续被拒时循环轮换(不再只换一次就卡死);掉线判定更准;多条提示不再互相覆盖(最多并排 3 条);起售时间核对会重试(不再一次抖动就放弃);候补遇到临时拒绝(系统忙/稍后重试)会隔几轮再试一次,账号级拒绝仍然只报一次。
v2.1.9:上一版的提速没生效,修好了
【1】查票直连(v2.1.8 说做了,其实没做成) 上一版说"查票少走一个来回",群友的日志证明没生效:探测跳转的方式在浏览器里拿不到跳转地址(返回的状态码是 0),所以一直在用老地址、每轮照样多走一次往返。现在改成按浏览器允许的方式取最终地址,这回是真直连了。
【2】两个买错票的 bug(已修,v2.1.8 起生效,群友日志已实证) 抢到的不是你填的车站:12306 查票会把同城其它车站的车次一起返回,以前"没有精确匹配就用同城其它站兜底",于是抢到了广州白云的票,人在广州南上不了车。现在默认只买你填的那个站,并在日志里说明跳过了几趟;愿意自己换站过去坐的,勾「接受同城其它车站」。 勾「无座」下单必失败:「无座」和「硬座」共用席别码 1,但票额是两个字段,传 1 会被当成硬座校验。现改用 WZ,被拒时自动退回 1 重试。
【3】日志里的 [Probe] 行 记每轮的并发数、失败数、间隔、耗时,用来判断整点该不该更猛地重试。只进技术日志。
v2.1.8:修两个会买错票的 bug + 查票提速
【1】抢到的不是你填的车站 12306 查票会把同城其它车站的车次一起返回(实测查「广州南→长沙南」返回 275 趟,其中 136 趟是从广州北/广州白云/广州等站出发的)。以前"没有精确匹配就用同城其它站兜底",于是抢到了广州白云的票,人在广州南上不了车。现在默认只买你填的那个站,并在日志里说明跳过了几趟;愿意自己换站过去坐的,勾「接受同城其它车站」。
【2】勾「无座」下单必失败 「无座」和「硬座」在 12306 里共用席别码 1,但票额是两个字段。传 1 被当成硬座校验,所以无座有票也回你「硬座仅剩0张」。现改用 WZ,被拒时自动退回 1 重试。
【3】查票少走一个来回 12306 把查票接口 302 跳到新地址,每轮都多走一个往返。改成启动时探一次真实地址后直连。探不到也不影响抢票。
【4】日志多了 [Probe] 行 记每轮的并发数、失败数、间隔、耗时,用来判断整点该不该更猛地重试。只进技术日志。
v2.1.6:加了「选座偏好」,下单前把要买的东西写清楚
选座(默认不勾 = 还是系统自动分配) 勾 A/B/C/D/F 就行,勾几个就得有几个人,数量和乘车人数不一致不让开始(这条是 12306 自己的规矩)。 不同席能选的字母不一样:二等座 A/B/C/D/F,一等座 A/C/D/F,商务座 A/C/F。 部分车次不支持选座,遇到这种车次脚本会自动退回随机分配,不会因为一个选座偏好把整单搞砸。 联程下单暂不支持选座——它那边的参数格式是另一套,没按它的格式拼之前不硬塞。
下单前信息摊开写 以前只有一句「车次 + 席别」,现在会写清:车次、乘车日期、实际区间(中文站名)、席别、人数、选的是哪几个座还是自动分配。抢到的是哪一段,一眼能看见。
车次区间核对 命中的车次如果实际乘车区间和你填的不完全一致,会给你一句提示。放心,只提示不拦:12306 查票用的站码有时不等于实际乘车站码(同城多站就是这样),按站码一刀切会把能抢的车次全放过。
不勾选座的话,行为跟 2.1.5 一模一样,老用户不用改任何设置。
v2.1.5:联程下单修好了,正式转正(去掉「实验」标签)
修的是几个真 bug:
失败原因现在分得清:账号被限制(取消次数过多)会明说今天别再试;排队被拒就说被拒;只是没确认完就提示去订单页看一眼,不再一律报失败。
另外日志会落盘,跳转支付页后回来还能看到成功记录。
v2.1.3 主要治「连不上 12306」
实证:保活请求一直成功,只有查票请求连不上,所以不是断网也不是账号限流,是查票路径被单独掐了。失败都在 140~240ms 返回,属连接被拒,整点 12306 对新建连接做保护性拒绝,脚本改不掉,只能不硬撞。
修复:
顺带:停止后 15 秒内不让重启;定时跨日自动顺延;起售时间核对提前到起售前 5 分钟。
v2.1.1
【提醒的时机改对了】 有群友反馈:「标签页切到后台」那句提示,他习惯一开就挂后台, 被反复提醒吵到想干脆关掉提醒——真到开票时反而没人提醒他。
现在: · 设了定时 → 离起售还早时完全不吭声;起售前 5 分钟开始报警, 一直响到你切回页面为止。 · 没设定时(手动抢)→ 照旧立刻提醒,随时可能开火。
【登录掉线照样立刻响】 登录失效是另一回事,那是真出问题了。不管离起售多久, 检测到就报警,一直响到切回来为止。
【抢不到票:有两件是我们的问题】 · 起售前后大量「连不上 12306」(实测三个群友都有,而且保活请求 是成功的,说明是查票被拒)。原来失败后照原速硬撞, 现在连续失败会自动放慢,一恢复立刻回到原速。 · 原来「下单连续失败 10 次」就停任务,实测在起售 22 秒后就停了, 那时票还在回流。现在只有真正的错误才停,「票被抢走」会一直抢。
【顺带】 车次填多了会把日志刷爆(有人填 44 趟,一行 800 多字), 现在原因相同会合并成一句。
v2.1.0
【重点:中转(换乘)】 票被抢光是一回事,压根没有直达车是另一回事——中转解的是后者。
· 手动中转:填个中转站,脚本拆成两段盯着,两段都有票才依次下单。 绝不"见到一段抢一段"——那样人会被卡在中转站,退票还有手续费。 · 自动找中转:不填中转站、勾上开关,脚本从 12306 拉回方案, 自动挑两段都有你勾的席别、换乘时间也够的。 · 新增「联程下单」(实验,默认关):12306 的中转联程是一个订单、 一次支付,不会像分两次买那样第二段被限流。
【紧要的提示现在弹在网页正中】 以前提醒都写在面板右下角小字里,有群友就这么错过了「登录失效」,白等一场。 现在这几种会弹红框、点「知道了」才关:登录失效 / 有未完成订单 / 中转只买到一段 / 学生票用不了这段路。
【「非法的订票请求」= 学生票区间不匹配】 实测对比出来的:同车同区间同天、参数一模一样,勾学生票报错、取消就成功。 现在会直接告诉你去哪改区间。
【顺带修的】 · 中转两段连着下会判「请求过于频繁」,现在中间留 3 秒 · 报错不再甩英文;没勾席别就点开始会当场提醒
v2.0.11
【新增:中转(换乘)】
· 手动中转:填个中转站,脚本把它拆成两段盯着, 两段都有票才依次下单。绝不"见到一段抢一段"—— 先买一段再去买另一段,另一段很可能已经没了, 人就被卡在中转站,退票还有手续费。
· 自动找中转:不想自己查在哪儿中转?勾上「自动找中转站」, 脚本从 12306 拉回所有可行方案,自动挑一个两段都有你勾的 席别、换乘时间也够的,再按上面那套盯两段。
· 只买到一段时会明确告知,并告诉你该去 12306 哪儿处理。
【修复】 · 自动找中转不再占用起售前的预热时间(否则拖慢第一枪) · 起售时间核对不再每轮重复解析 · 一个席别都没勾时当场提醒(以前会"正常"跑,但永远抢不到)
【重要提醒】 中转要两段都有票才动手,所以对"同一趟车的区间限售"没用—— 那种情况该用「备选到达站(买长乘短)」。