logo

ScriptCat

  • 首页
  • 社区
  • 脚本列表
  • 浏览器扩展
  1. /
  2. 脚本市场
  3. /
  4. 12306 抢票助手 Pro
  • 首页
  • 代码
  • 反馈
  • 评分
  • 版本列表
油猴中文网
脚本猫
GitHub
管理日志
服务协议
隐私政策
免责声明

© 2022-至今 ScriptCat. All rights reserved.

版本历史

查看所有已发布的版本,包括正式版本和预发布版本。您可以安装任何版本或查看其源代码。
共 28 个版本正式 28预发布 0
显示第 1-10 项,共 28 项
2.1.17最新版本
7 天前

加载中…
安装此版本
2.1.16
7 天前

加载中…
安装此版本
2.1.15
7 天前

加载中…
安装此版本
2.1.14
7 天前

加载中…
安装此版本
2.1.13
7 天前

加载中…
安装此版本
2.1.12
1 个月前

加载中…
安装此版本
2.1.10
1 个月前

加载中…
安装此版本
2.1.9
1 个月前

加载中…
安装此版本
2.1.8
1 个月前

加载中…
安装此版本
2.1.6
1 个月前

加载中…
安装此版本
  • 第 1-10 项,共 28 个版本
  • 1
  • 2
  • 3
  • 10 / page
    Go toPage

v2.1.17:优选静音车厢 + 一个真 bug

【1】优选静音车厢 下单请求里有个独立的 is_jy 开关位,我们以前写死 N。现在面板新增「优选静音车厢」勾选项(在「联程下单」下面):车次带静音车厢(查票结果第 46 段第三段 Q 打头,实测京沪高铁 54 趟里 46 趟有)且买的是二等座,才传 Y。它是"优先"不是"强制",分不到静音车厢也照常出票,所以默认关着没损失。条件不满足时日志会说清原因(车次没静音车厢 / 你买的不是二等座)。

【2】上一版的卧铺其实没生效 v2.1.16 修的卧铺票种(D 字头动卧该用 I/J 而不是 4/3),因为传给下单逻辑的对象漏了一个字段,实跑时读不到这趟车有哪些席别码,一直走的老逻辑。普通车碰巧没差别,D 字头动卧还是必被拒。这次补齐了。

v2.1.16:D 字头动卧的卧铺席别修好了

【1】卧铺票种一直提交错了码 D 字头动卧(D17、D7、D35 这类)的卧铺票种是一等卧(码 I)/二等卧(码 J),不是软卧(4)/硬卧(3)。我们以前不分车型,一律提交 4 或 3——这几趟车根本没这两种票,必被拒。依据是 12306 自己的脚本:内部映射表写着一等卧=I、二等卧=J、无座挂硬座车厢。现在勾「软卧」会先看这趟车实际卖哪种卧铺,该 4 就 4、该 I 就 I;硬卧同理。顺带补上「优选一等座」(码 D),面板新增勾选项。

【2】候补少占名额 「软卧/一等卧」是同一段余票数据的两个名字。以前候补会两个名字各提交一个组合,把这趟车不存在的票种也报上去,白占名额。现在同一段数据只出一条。

【3】查票接口 改成直接读 12306 页面里声明的 CLeftTicketUrl(它自己写的接口名),比发请求看跳转更快也更准,省掉每轮一个往返。

v2.1.15:无座下单实测跑通

【1】换码规则验证通过 上一版按 12306 自己脚本改的规则(第一步 WZ、第二步换成 1 或 O),已拿到真实订单验证:日志第一次出现「🎉 ORDER SUBMITTED SUCCESSFULLY!」,票进了账号。根因确认——以前第二步拿 WZ 问票额,服务端查到 0 张,必回「余票不足」。

【2】换码链改成官方完整版 原来只看硬座/二等座两档,现按 12306 的 m() 链走:硬座→二等座→硬卧→一等座→软座→软卧→特等座→高级软卧→商务座。先挑有票的,全没票再退一步挑「席别存在」的。

【3】下单参数补齐 leftTicketStr、key_check_isChange、train_location 改从 checkOrderInfo 响应取(以前从下单页 HTML 抠);getQueueCount 也补上这三项(以前写死空串)。学生票下单票种改 0X00。

【4】日志 下单计数那行带上实际用的席别码,被拒时也打印。

【实测提醒】勾无座可能给你二等座——12306 的规则(无座没独立车厢,系统挑第一个有票的车厢),不是脚本买错。

v2.1.14:无座那个问题,这次真挖到根了

【1】无座要分两步、用两个不同的码(上两版都说错了) 翻了 12306 自己的下单脚本才看明白:无座没有独立的下单席别码,它是借硬座或二等座的车厢下单的。第一步校验订单用 WZ;第二步排队、提交之前,官方会把 WZ 就地换成「硬座 1」或「二等座 O」(有硬座席别就用硬座,否则用二等座)。

  • v2.1.7~12 全程用 WZ:第二步拿 WZ 去问,查到的是 0 张,必回「余票不足!」
  • v2.1.13 改用 W:第一步就被拒「非法的席别」 两版的说法都不对,给两位贴日志的群友道个歉。现在按官方规则走,日志里会写明换成了哪个码。

【2】连续撞「余票不足」会自动慢下来 连续 3 次后重试间隔跳 4 秒,之后每失败一次再翻一档(8 秒、10 秒封顶);抢到票或换别的错误立即恢复原速。

【3】「未完成订单」会响铃并停下 以前只写日志就接着跑,现在弹横幅、一直响、并停任务。

【4】日志更好定位 下单那行带上席别码和 ticket 字段,被拒时打印实际用的码。

【1】无座席别码写错了 v2.1.7 起无座用 WZ,12306 只认单字符 W(WZ 是页面按钮 id 前缀,不是席别码)。服务端认不出席别,每次都回「Confirm failed: 余票不足!」——票挂着,一单也交不上去。现在改回 W,并留了自动退回(WZ、1 各试一次)。上一版说"余票不足是票被抢走了",判断错了,抱歉。

【2】日志能定位同类问题 下单计数那行带上 ticket 字段,被拒时打印实际用的席别码。

【3】连续撞「余票不足」会自动慢下来 连续 3 次后重试间隔跳 4 秒,之后每失败一次再翻一档(8 秒、10 秒封顶);抢到票或换别的错误就恢复原速。

【4】「未完成订单」会响铃并停下 以前只写日志就接着跑,现在弹横幅、一直响、并停下

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:加了「选座偏好」,下单前把要买的东西写清楚

  1. 选座(默认不勾 = 还是系统自动分配) 勾 A/B/C/D/F 就行,勾几个就得有几个人,数量和乘车人数不一致不让开始(这条是 12306 自己的规矩)。 不同席能选的字母不一样:二等座 A/B/C/D/F,一等座 A/C/D/F,商务座 A/C/F。 部分车次不支持选座,遇到这种车次脚本会自动退回随机分配,不会因为一个选座偏好把整单搞砸。 联程下单暂不支持选座——它那边的参数格式是另一套,没按它的格式拼之前不硬塞。

  2. 下单前信息摊开写 以前只有一句「车次 + 席别」,现在会写清:车次、乘车日期、实际区间(中文站名)、席别、人数、选的是哪几个座还是自动分配。抢到的是哪一段,一眼能看见。

  3. 车次区间核对 命中的车次如果实际乘车区间和你填的不完全一致,会给你一句提示。放心,只提示不拦:12306 查票用的站码有时不等于实际乘车站码(同城多站就是这样),按站码一刀切会把能抢的车次全放过。

不勾选座的话,行为跟 2.1.5 一模一样,老用户不用改任何设置。