大麦抢票脚本教程:改 3 个参数,从登录到下单全程自动
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
这份大麦抢票脚本用 Python 自动抢票:Selenium 只管登录,requests 直接调接口下单,票务状态一变就自动完成购买。适合能读代码但手速不行的新手,跑通之后开票不用守着页面刷新。
🐢 为什么手动抢总输
手动抢票输在三个环节:刷新慢、渲染慢、点击慢。
- 你每按一次刷新,都要等网络往返加页面渲染,通常以秒计;而票源是在毫秒级被分完的。
- 开票瞬间全站并发最高,页面卡得最厉害,你刚把按钮加载出来,它往往已经变成灰色的"已售罄"。
- 就算页面出来了,选价位、选观影人、点购买,每一步都在和库存赛跑。
脚本的做法是把这些等待全部删掉:登录一次之后,它直接轮询票务接口,状态一变就自动跑完整个购买流程。
🔁 Selenium 抢票原理:浏览器只登录,下单走 requests
分工一句话:Selenium 只负责把登录过掉,查票和下单全程用 requests 打接口,不渲染任何页面。
具体流程是这样的:
- 首次运行时 Selenium 打开登录页,你用账号密码登录,或加
--mode qr用扫码登录; - 登录成功后 cookies 存进 cookies.pkl,下次运行直接加载,连浏览器都不用开;
- 之后循环调接口查目标票价按钮的文字:"即将开抢"就继续轮,"缺货登记"就结束,变成"立即购买"立刻跳出循环,依次调"获取购买参数 → 构建订单 → 提交订单"三个接口;
- 选座类演出会多一步:拉座位图、按价位挑座位,接口签名由 signcode.js 里的算法算出来。
核心就是这个轮询循环:
while True: ticket_info, sku_id_sequence, sku_id = self.step1_get_order_info(self.item_id, param, self.ticket_price) status = ticket_info['skuPagePcBuyBtn']['skuBtnList'][sku_id_sequence]['btnText'] if status == '即将开抢': continue # 还没开卖,继续轮询 # status 为"立即购买"时跳出循环,进入下单三步⚙️ 三步跑起来:装依赖、放驱动、改参数
按这个顺序做三步,半小时能跑起来。
第一步:装依赖
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase pip install -r requirements.txt依赖清单 里就 4 个包:selenium、requests、beautifulsoup4、pyexecjs。做错了会怎样:漏装任何一包,运行脚本立刻报 ModuleNotFoundError,后面白忙。
第二步:放浏览器驱动
下载与你系统匹配的 ChromeDriver,重命名后放进项目根目录:Windows 下叫chromedriver_windows,Linux 下叫chromedriver_linux,macOS 下叫chromedriver_mac。tools.py 里的登录函数会按平台自动挑对应文件。做错了会怎样:登录阶段直接报找不到驱动,浏览器根本不会打开。
第三步:改参数并运行
打开 Automatic_ticket_purchase.py,改 DaMaiTicket 初始化里的 4 个参数(填法看下一节),然后执行python Automatic_ticket_purchase.py,账号登录;要扫码就加--mode qr。做错了会怎样:item_id 填错会抢一场根本不存在的演出,viewer 填错则提交订单时被拒。
📝 抢票脚本参数配置:item_id、viewer、buy_nums、ticket_price
参数都在 Automatic_ticket_purchase.py 的 DaMaiTicket 初始化里,改完就能用。
| 参数 | 含义 | 怎么填 |
|---|---|---|
| item_id | 演出商品 ID,每个城市站点一个 | 从对应城市演出页地址栏的id=后面截取,方法见下文 |
| viewer | 观影人姓名列表 | 先去"常用购票人管理"添加,姓名要和页面逐字一致,如['张三'] |
| buy_nums | 购买张数 | 必须等于 viewer 列表长度,对不上脚本直接报错退出 |
| ticket_price | 目标票价 | 填演出页在售价位的数字,如 180,脚本只抢这一档 |
| login_id / login_password | 账号登录用 | 用--mode qr扫码登录时可以不管 |
大麦 item_id 怎么从演出页地址里找出来
- 在浏览器打开你要抢的那个城市站点的演出详情页——同一演出不同城市的 item_id 不同,别拿错;
- 看地址栏,形如
detail.damai.cn/item.htm?...&id=610820299671...; - 把
id=后面那串数字填进 item_id,比如改成 610820299671。
viewer 的填写对应大麦的"常用购票人"页面,名字必须逐字一致(含没有多余空格)。提交订单时脚本会把你的名单和服务端名单比对,对不上就停在那一步,不会浪费票源。
🚀 成功率进阶:把提前量拉满
抢热门场次拼的不是脚本本身,而是提前量,下面几条都能加提前量。
- 如果开票时间已公布,可以提前半小时把脚本挂上:登录验证通过后它会一直停在"即将开抢"的轮询里,开卖瞬间无缝进入下单。
- 如果是热门演出,可以多备一台机器各挂一个账号:各自有独立的 cookies.pkl,登录状态互不干扰,相当于多一次机会。
- 如果接口开始限流或频繁报错,可以在轮询循环里加一行短暂 sleep 降频,代价只是晚几百毫秒反应。
- 如果抢的是选座票,把 ticket_price 精确填到座位档位价,脚本会按这个价位过滤可售座位再挑座。
🩺 跑不通时先查这 4 点
出问题时按这个顺序查,别跳步。
- 登录失败(提示"登录失败"或浏览器卡在登录页):先删掉项目根目录的 cookies.pkl——它存在时脚本会跳过登录直接用,过期的旧 cookie 会让验证永远过不去。删掉重跑,不行就
--mode qr扫码。 - 查不到票 / 参数解析异常:确认 item_id 是目标城市站点的、场次确实已开票;如果打印"获取购买必备参数异常",多半是大麦前端 JS 更新了,需要改 tools.py 里的 get_api_param。
- 下单被拒:viewer 和"常用购票人"逐字一致吗?buy_nums 等于 viewer 人数吗?ticket_price 是页面真实在售档位吗?三者有一个不对就会被拒。
- 驱动报错(浏览器打不开):驱动文件在不在根目录、名字是不是
chromedriver_windows这类平台名、版本是否和本机 Chrome 匹配。
合规使用与项目现状
请只把它用于个人购票和技术学习,遵守大麦网的使用条款,别用来批量刷票或代抢牟利;高频请求也可能触发平台风控,后果自负。
另外提醒一句:README 已标注项目停止维护,大麦的部分购票流程也迁到了手机端,接口随时可能变动,跑不通时优先怀疑接口而非自己。
把 item_id 填对、驱动放好,剩下的交给那个 while True——开票那一刻,拼的不是手速,是代码先跑起来。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考