news 2026/9/30 2:17:46

大麦抢票脚本实战指南:三步跑通 Python 自动下单全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大麦抢票脚本实战指南:三步跑通 Python 自动下单全流程

大麦抢票脚本实战指南:三步跑通 Python 自动下单全流程

【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase

手动抢票要刷页面、找按钮、填观演人,慢一步就没了。大麦抢票脚本(Automatic_ticket_purchase)只在登录环节开浏览器,其余取 SKU、建订单、提交订单全部走 HTTP 请求,把整条下单链路自动化。

抢票链路的定位:为什么只有登录需要真浏览器

这个仓库的 V1 版本靠 Selenium 点点点买票,要等页面元素加载完才能走下一步,效率很低。V2 版本把思路换了:Selenium 只负责登录拿 Cookie,之后所有请求换成requests直发接口——浏览器只是登录的"入口关卡",进门之后方向盘就交给接口了。

它做的事与不做的事,先对齐预期:

  • 能买"立即购买"型普通场次,能买选座场次(指定价位、暂不支持连坐)
  • 登录后 Cookie 落盘复用,下次运行免登录
  • 不覆盖移动端流程;README 顶部已注明项目停止维护,大部分购买方式已迁移至手机端,PC 端接口后续需自行抓包跟进

一句话:它是一份"接口式下单"的完整样板,学习价值大于生产价值。

环境准备:三步让脚本第一次跑起来

环境要求很轻,Python + 4 个依赖,外加两样系统级组件:

  1. 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
  1. 安装依赖(requirements.txt 里就 4 行):
pip install -r requirements.txt

依赖是requests、selenium、beautifulsoup4、pyexecjs。注意pyexecjs需要本机装好Node.js 运行时,选座流程要靠它执行 signcode.js 计算 mtop 接口的 sign 签名。

  1. 下载与本地 Chrome 版本匹配的 ChromeDriver,放到项目根目录并按平台重命名:chromedriver_windows/chromedriver_linux/chromedriver_mac。tools.py 里的account_login()就是按这三个文件名找驱动的,命名错一个字母都会启动失败。

DaMaiTicket 的 6 个参数与下单三步曲

所有抢票参数集中在 Automatic_ticket_purchase.py 的DaMaiTicket.__init__里,改完这 6 行就可以跑:

参数含义取值方式与注意
login_id / login_password账号密码登录凭据仅首次登录用;也可改扫码登录
item_id商品 ID取商品页 URL 里的id参数
viewer观演人姓名列表必须与"我的大麦"里已填的购票人完全一致
buy_nums购票数量必须等于len(viewer),run()会先校验
ticket_price指定票价脚本按它匹配skuList里的档位

item_id 的位置——商品页地址栏id=后面那串数字,不同城市场次各不相同:

viewer 则填"我的大麦 → 常用购票人管理"里已经登记好的姓名,一字不差:

登录和配置完成后,执行入口是:

python Automatic_ticket_purchase.py # 默认账号密码登录 python Automatic_ticket_purchase.py --mode qr # 改为扫码登录

主流程run()分三步:step1_get_order_info拉取 SKU 信息(响应是null(...)包裹的 JSONP 文本,脚本里做了剥离);step2_click_buy_now请求 orderConfirm 拿到window.__INIT_DATA__订单数据;step3_submit_order在观演人列表里按viewer标记isUsed并 POST 到createOrder提交。成功后打印支付宝支付链接。

三个真实用法:抢票前夜你会怎么写代码

卡开抢瞬间:常驻轮询模式

普通场次的按钮在开抢前是"即将开抢"。run()里是个while True循环,不断调 step1 轮询按钮状态:即将开抢就continue,缺货登记直接退出,立即购买立刻进入 step2。所以正确姿势是开抢前几分钟把脚本挂着,让它替你盯着状态翻转,而不是开抢时手动执行。

指定价位买座:选座购买(V2.1 新增)

选座场次走另一条支路,链路上多四个 mtop 接口:get_select_seat_params取场次 ID →get_seat_dynamic_info取看台 ID →get_select_seat_api拿座位 JSON 地址 →get_valuable_seat_id过滤不可售座位。每一步的sign参数都由 Node.js 执行 signcode.js 的calcaulate函数算出,h5token取自登录 Cookie 里的_m_h5_tk。

拿到全部座位后,format_valuable_seatid按ticket_price对应的 priceId 过滤、剔除非售座位,pick_seat按遍历顺序取前buy_nums个座位提交。注意这是"顺序取第一个"的朴素策略,不保证连坐,README 已明确此限制。

免二次登录:cookies.pkl 复用

第一次登录成功后,tools.save_cookies()会把 Cookie 以 pickle 存成cookies.pkl;之后每次run()先尝试load_cookies(),命中就跳过整个浏览器登录环节,省掉最慢的一步。登录态失效(页面弹回登录页)时,删掉cookies.pkl重新登录即可恢复。

排障清单:没抢到票时按图索骥

  • 打印"登录失败, 请检查登录账号信息":check_login_status是靠"我的大麦-个人信息"页面标题判定登录态的。若你用的是旧cookies.pkl,删文件重新登录;若是账号密码,核对登录框是否真的进了alibaba-login-box这个 iframe。
  • 登录页弹滑块、"登录异常,请检查页面登录提示信息":风控识别出了 Selenium。代码里已用excludeSwitches: ['enable-automation']和--disable-blink-features=AutomationControlled做伪装,但若 Chrome 版本过新或风控升级仍可能触发,换一版匹配的 Chrome + ChromeDriver 再试。
  • "购买数量与实际观演人数量不符":buy_nums与len(viewer)不一致,改参数即可,这是run()的第一道校验。
  • "请检查输入的观演人信息与大麦网观演人信息是否一致":step3_submit_order会做set(viewer) & set(页面观演人)的交集比对,全等才放行。姓名里多了空格、繁简体不一致都会挂,直接复制页面上的原文。
  • get_api_param()正则匹配不到、接口返回解析异常:这组正则依赖 g.alicdn.com 上vendor.js/perform.js的既有结构,站点一改版就会失配,需要自己重新抓包对照修改。README 已声明停止维护且 PC 端流程多迁至手机端,接口层面的问题目前只能自己动手。

该用它,还是该弃用它

判断标准一条:你的目标商品还走 PC 端"立即购买/选座购买"流程,且你的目的是学习"登录拿 Cookie → 接口串流程 → 轮询下单"这套自动化下单写法,用它,代码短、链路完整、tools.py 每一步都有注释;目标商品只有 App 流程、或 PC 端接口已改版,就别耗在打补丁上——官方 App + 抓包重写才是正路。

最后照 README 的免责声明说一句:本仓库 MIT 协议、仅供个人学习参考,勿用于商业倒卖。延伸阅读建议从 README.md 的流程图看起,再对照 signcode.js 理解 mtop 签名怎么算。

【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 2:16:40

容器内SSL自签证书不受信?一招帮你解决

原文:ssl自签证书不受信?一招帮你解决 线上 ASR 服务突然回调失败,日志里全是 "certificate signed by unknown authority"。容器内环境有限,没有 sudo,没有 yum 源,你该怎么救?一、问…

作者头像 李华
网站建设 2026/9/30 2:15:18

TI全栈嵌入式边缘AI:从MCU选型到端到端部署实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/30 2:11:24

第三篇 驱动理解与应变

相信大家使用到传感器都会用到相应的驱动,该驱动主要都是该设备的厂家提供的,这里的驱动主要是指软件驱动。为啥这里提前将驱动,主要是如果你作为一个算法工程师,如果对所使用的传感器的特性不了解,包括硬件、软件参数…

作者头像 李华
网站建设 2026/9/30 2:07:47

DFS 模板总结:关键是“这一层到底在选择什么?”

DFS 模板总结:关键是“这一层到底在选择什么?” DFS 最核心的思想不是死记代码,而是先想清楚:“这一层我到底在决定什么?”只要这个问题想明白,DFS 通常就知道该怎么写了。一、DFS 通用模板 void dfs(当前状…

作者头像 李华
网站建设 2026/9/30 2:06:22

八皇后问题的多种解法 #DFS #位运算 #状态压缩

https://www.luogu.com.cn/problem/P1219这个有趣的问题我将分三个版本为您解释,主要差时间优化异体现在check函数上,实现原理分别从循环到坐标规律实现的O(1)操作,最后是位运算的极致优化 check函数:检测该位置放置王后是否合法&…

作者头像 李华