大麦自动抢票:3步跑通这个脚本
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
开售前 10 秒你还在刷页面,"立即购买"灰得比谁都快。手速再快也赶不过页面刷新。Automatic_ticket_purchase 是个大麦自动抢票脚本:登录一次后,它持续轮询票务状态,目标票价可购的瞬间直接走接口提交订单,全程不碰页面。
先说清定位:它替你省了哪几步
这是一个"登录走浏览器、其余全走接口"的 Python 脚本,不是逐按钮点击页面的机器人。登录完成后所有抢票动作都是直接 HTTP 请求,不等页面渲染。先说一个事实:仓库 README 声明项目已停止维护,且大部分购买入口已迁到手机端,如果大麦接口有变,解析逻辑需要你自己调。以下内容按它当前的形态讲怎么用。
- 登录状态复用:首次登录结果存进
cookies.pkl,之后每次运行跳过浏览器登录这步,直接进入轮询。 - 状态轮询:"即将开抢"时循环不停,按钮变成"立即购买"就推进下单,省掉你盯页面刷新的操作。
- 定向票价:只抢
ticket_price指定的那个价位,省掉"刷页面直到自己想买的档位放出"的运气。 - 自动选座:选座购买的场次会按价位自动过滤并挑座位,不用你手动在选座页点选。
跑通主流程:从克隆代码到登录成功 🚀
第 1 步:拿代码、装依赖
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt依赖只有 4 个,见 requirements.txt。注意pyexecjs要求本机装过 Node.js,因为选座流程要在本地执行 signcode.js 生成签名参数,没装 Node 的话选座场次会失败。
第 2 步:准备 ChromeDriver
只有登录环节用浏览器。tools.py 按操作系统找驱动文件:Windows 找chromedriver_windows,Linux 找chromedriver_linux,其他系统找chromedriver_mac,都默认在项目根目录。去 ChromeDriver 官方渠道下载与你本机 Chrome 版本对应的驱动,重命名成上面三个名字之一,放进项目根目录。
提示:到这里如果弹窗后浏览器闪退、或脚本报WebDriverException,大概率是驱动版本和浏览器版本不匹配,回到这一步换对应版本的驱动。
第 3 步:填账号与抢票参数
打开 Automatic_ticket_purchase.py,在DaMaiTicket类的__init__方法里是全部要填的参数:login_id、login_password(账号密码登录才需要改),以及item_id、viewer、buy_nums、ticket_price,去哪找、怎么填见下一节。
提示:填真实账号前可以先用默认占位值跑一次验证环境——终端打印"登录失败, 请检查登录账号信息",说明依赖和 ChromeDriver 都已就位。
第 4 步:运行
# 默认:账号密码登录 python Automatic_ticket_purchase.py # 或者扫码登录 python Automatic_ticket_purchase.py --mode qr首次运行会弹出 Chrome 窗口,代码会最多等 180 秒让登录完成。到这里你应该看到项目目录多出一个cookies.pkl文件,这是登录成功的标志;如果没有,看后面"排查报错"一节。后续每次运行都会直接读这个文件,不再弹浏览器。开售后脚本轮询到目标价位可购,会打印"抢票成功, 请前往 大麦网->我的大麦->交易中心->订单管理 确认订单"并附上alipayOrderId,你去支付即可;如果打印"手慢了,该票价已经售空",说明这轮没抢到。
配置抢票参数:item_id、viewer、buy_nums、ticket_price 🔧
item_id:最关键的数字
- 在哪找:打开目标演出详情页,看浏览器地址栏,
id=后面那串数字就是。 - 填什么:纯数字,每个城市站是独立商品,
item_id不同。 - 填错的典型报错:接口返回空内容,脚本在获取票务信息一步抛 JSON 解析异常,或报
KeyError: 'perform',直接退出。
viewer:观影人
- 在哪找:大麦网"我的大麦 → 常用购票人管理"页面。
- 填什么:把网站上的姓名原样抄进列表,多人就写多个,如
['张三', '李四']。 - 填错的典型报错:提交订单时打印"请检查输入的观演人信息与大麦网观演人信息是否一致",订单不会发出,多半是多了空格或大小写不一致。
buy_nums:购买数量
- 在哪找:你自己要买几张票。
- 填什么:整数,必须和
viewer列表里的姓名个数一致。 - 填错的典型报错:启动即打印"购买数量与实际观演人数量不符"并退出,一个请求都不会发。
ticket_price:目标票价
- 在哪找:演出详情页显示的各档位价格。
- 填什么:与页面一致的数字,如
180。 - 填错的典型现象:填的值和页面任何档位都对不上时脚本不报错,会按页面第一个档位去匹配,可能抢到你没想买的价位。
调优运行:开抢前预热cookie与同步系统时间 ⚙️
1. 开抢前 1~2 天预热登录态
默认行为:没有cookies.pkl的每次运行都要弹浏览器走登录,多花十几秒。改法:开抢前一天完整跑一次成功登录,把cookies.pkl存好,抢票当天脚本跳过浏览器直接进轮询。如果发现登录态已过期,删除cookies.pkl重新登录——这步要提前做,别拖到开抢当天。
2. 用扫码登录,不留密码在代码里
默认行为:--mode account把login_password明文写在代码文件中。改法:运行python Automatic_ticket_purchase.py --mode qr,在弹出的浏览器里扫码登录,密码不落地。两种方式的登录结果都存进cookies.pkl,之后行为完全一样。
3. 开抢当天同步一次系统时间
默认行为:请求参数里的时间戳取本机时间。本机时间偏差过大时,选座接口的签名校验可能失败。改法:开抢当天早上用系统自带的时间同步(Windows 搜"时间同步",Linux 用ntpdate或systemd-timesyncd)对一次 NTP 时间。
排查报错:ChromeDriver不匹配、cookies登录失败等高频问题 📋
| 现象 | 最可能原因 | 怎么解决 |
|---|---|---|
Chrome 弹窗即关,或WebDriverException | ChromeDriver 版本与本机 Chrome 不匹配 | 下载对应版本驱动,重命名为chromedriver_windows/chromedriver_linux/chromedriver_mac放项目根目录 |
| "登录失败, 请检查登录账号信息" | cookies.pkl过期,或账号密码错误 | 删除cookies.pkl重跑,改用--mode qr登录更稳 |
| "购买数量与实际观演人数量不符" | buy_nums与viewer名单条数不一致 | 把buy_nums改成和列表相同的个数 |
| "请检查输入的观演人信息与大麦网观演人信息是否一致" | 姓名与网站常用购票人有空格、大小写差异 | 从"常用购票人管理"原样复制姓名 |
JSON 解析异常,或KeyError: 'perform' | item_id填错,或大麦前端 JS 更新导致 tools.py 里get_api_param()的正则失配 | 先核对 URL 里id=参数;确认无误后对照 CDN 返回的 JS 内容调整源码里的解析规则 |
提示:最后一行需要特别注意——项目已停止维护,遇到正则失配没有"升级依赖就修好"的路径,只能按当前 JS 自己改,这也是维护这个脚本最费工的地方。
守住使用边界
本工具仅限个人学习研究,使用本人账号,勿用于倒卖;保持常规请求频率,高频轮询可能触发平台风控。仓库为 MIT License,作者不对商业用途承担责任。
想同时盯多场演出,可为每个item_id各起一个脚本实例,或用系统定时任务在开售前自动启动,这是这个脚本顺手的扩展方向。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考