大麦网自动抢票脚本:部署、参数配置与运行原理
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
Automatic_ticket_purchase 是一个面向大麦网的 Python 抢票工具:登录一次之后,它不再操作页面,而是直接请求大麦的购票接口,循环查询目标演出的票态,并在目标价位转为可购买的那一刻自动完成下单、在终端输出支付链接。它适合两类人:想拆解抓包与接口逻辑的开发者,以及需要盯住某一场演出的普通用户。README 已注明项目停止维护,部分购买流程迁移到了手机端,把它当作学习材料使用更稳妥。
部署大麦网抢票脚本的 3 个步骤
第一步,克隆源码:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase第二步,安装依赖。requirements.txt 里只有 4 个包(requests、selenium、beautifulsoup4、pyexecjs):
pip install -r requirements.txt第三步,准备浏览器驱动。Selenium(一个可以操控真实浏览器的自动化库)只在登录环节出场,需要下载与本机 Chrome 版本匹配的 ChromeDriver,按操作系统重命名为chromedriver_windows、chromedriver_linux或chromedriver_mac,放到项目根目录即可,tools.py 会根据platform.system()自动定位驱动路径。
6 个必填参数怎么填
6 个参数都集中在 Automatic_ticket_purchase.py 的__init__方法里,前两个只在账号登录方式下使用:
| 参数 | 用途 | 填写要点 |
|---|---|---|
| login_id | 大麦登录账号 | 填登录名 |
| login_password | 大麦登录密码 | 填对应密码 |
| item_id | 演出商品编号 | 取详情页网址中id=后面的一串数字 |
| viewer | 观演人姓名列表 | 与「常用购票人管理」中登记的姓名逐字符一致 |
| buy_nums | 购买张数 | 必须等于 viewer 列表长度 |
| ticket_price | 目标票价 | 要抢的那一档价格,如 180 |
两处容易踩坑:item_id 区分城市站,同一场演出在不同城市的编号不同,填之前先核对要抢的场次属于哪个站;viewer 必须是平台上已登记的观演人姓名,不是临时写的名字,多一个空格都会被校验拦下,脚本会提示"请检查输入的观演人信息与大麦网观演人信息是否一致"并终止。
一条命令启动,两种登录方式
# 账号密码登录(默认) python Automatic_ticket_purchase.py # 扫码登录 python Automatic_ticket_purchase.py --mode qr首次登录成功后,cookie(证明已登录的凭证)会写入 cookies.pkl,之后每次运行直接复用,无需再打开浏览器。脚本每次运行都会请求个人信息页校验登录状态,若输出"登录失败, 请检查登录账号信息",删除 cookies.pkl 重新登录即可。
大麦网抢票脚本的完整下单链路
全流程用一行表示:
Selenium 打开登录页 → cookie 写入 cookies.pkl → 循环查询票态 → 命中「立即购买」→ 请求 orderConfirm 组装订单 → 请求 createOrder 提交 → 终端输出支付宝支付链接
链路里有两处值得拆开看:
- 接口参数不是写死的。tools.py 的
get_api_param会拉取大麦演出页的前端 JS 文件,用正则提取查票与下单所需的两组参数,后续所有请求都由这些参数拼装而成;副作用是大麦一旦更新前端 JS,这个函数就会失效。 - 选座流程需要签名。座位图、可售座位、区域信息三个 mtop 接口都要求 sign 字段,签名算法存放在 signcode.js,由脚本通过 execjs 执行后拼进请求。
票态查询会循环调用 detail.damai.cn 的接口,读取目标价位按钮的文字:「即将开抢」就继续轮询;「缺货登记」说明该价位售罄,脚本直接退出;「立即购买」则请求 orderConfirm 组装订单、再提交 createOrder;「选座购买」会先拉取座位图、筛出目标价位的可售座位,挑出与 buy_nums 相同数量的座位再走下单。提交成功后终端输出 alipayOrderId 与支付宝支付链接,完成付款后到"我的大麦 → 交易中心 → 订单管理"里能看到订单。
普通票与选座两类抢票场景
普通票(非选座):目标是开售瞬间拿下指定价位的 2 张票。item_id 指向目标场次,ticket_price 填价位,viewer 写 2 个已登记的观演人,buy_nums 填 2,终端出现支付链接后尽快付款。
选座购买:ticket_price 填目标价位,其余参数同上。脚本自动拉座位图、过滤可售座位并挑出与 buy_nums 一致的座位提交。当前版本只支持同一价位选座,不支持连坐,挑座按遍历顺序取,不保证相邻。
报错排查:5 类常见提示
- 登录失败→ 账号密码错误,或 cookies.pkl 已过期:删除 cookies.pkl,改用
--mode qr重新扫码。 - 浏览器起不来、selenium 报错→ ChromeDriver 缺失、版本不匹配或命名不对:重新下载与本机 Chrome 匹配的驱动,按系统重命名后放入项目根目录。
- 购买数量与实际观演人数量不符→ buy_nums 与 viewer 列表长度不相等:把两者改成一致再运行。
- 请检查输入的观演人信息…→ 姓名与平台登记不一致:对照「常用购票人管理」逐项核对,去掉多余空格。
- 获取购买必备参数异常→ 大麦前端 JS 更新导致
get_api_param解析失效:需对照最新页面 JS 手动重新提取参数,项目已停止维护,这一步只能自行处理。
项目采用 MIT 协议,仅供个人学习参考;使用前请确认遵守大麦网服务条款,账号密码与 cookies.pkl 只保留在自己可信的设备上。若想继续深入,可以把现有轮询逻辑抽出来,接入桌面通知做成开售前持续值守的监控工具。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考