logo

ScriptCat

  • Trang chủ
  • Cộng đồng
  • Danh sách script
  • Tiện ích mở rộng
  1. /
  2. Chợ script
  3. /
  4. 12306 抢票助手 Pro
  • Trang chính
  • Mã nguồn
  • Phản hồi
  • Đánh giá
  • Danh sách phiên bản
ScriptCat
GitHub
Nhật ký kiểm tra
Thỏa thuận dịch vụ
Chính sách bảo mật
Tuyên bố miễn trừ

© 2022-nay ScriptCat. Bảo lưu mọi quyền.

Lịch sử phiên bản

Xem tất cả các phiên bản đã phát hành, bao gồm bản chính thức và bản thử nghiệm. Bạn có thể cài đặt bất kỳ phiên bản nào hoặc xem mã nguồn của nó.
Tổng 28 phiên bảnChính thức 28Thử nghiệm 0
Hiển thị mục 1-10, tổng 28 mục
2.1.17Phiên bản mới nhất
10 ngày trước

Đang tải…
Cài đặt phiên bản này
2.1.16
10 ngày trước

Đang tải…
Cài đặt phiên bản này
2.1.15
10 ngày trước

Đang tải…
Cài đặt phiên bản này
2.1.14
11 ngày trước

Đang tải…
Cài đặt phiên bản này
2.1.13
11 ngày trước

Đang tải…
Cài đặt phiên bản này
2.1.12
một tháng trước

Đang tải…
Cài đặt phiên bản này
2.1.10
một tháng trước

Đang tải…
Cài đặt phiên bản này
2.1.9
một tháng trước

Đang tải…
Cài đặt phiên bản này
2.1.8
một tháng trước

Đang tải…
Cài đặt phiên bản này
2.1.6
một tháng trước

Đang tải…
Cài đặt phiên bản này
  • 1-10, tổng 28 phiên bản
  • 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 一模一样,老用户不用改任何设置。