大麦网抢票脚本到底怎么买到票
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
晚上八点开票,页面上"立即购买"按钮停留的时间只有几秒钟。这个大麦网抢票脚本(项目名 Automatic_ticket_purchase)不点那个按钮:它通过大麦的接口不停读取按钮状态,状态一变成"立即购买",就连续发出三个请求完成下单。整个流程登录一次之后全部走 API,主逻辑只有 300 多行代码。但先说清楚一件事:仓库 README 第一行写着"已停止维护,大部分购买方式已迁移至手机端,需配合抓包处理",它现在是否可用,取决于你的目标演出还能不能在 PC 网页端下单。
它是什么:一条 PC 网页端的下单链路
一句话说清:登录大麦 PC 网页端之后,替你自动对指定演出的指定价位下单。它适合两类人——想完整看懂"登录 → 轮询 → 下单 → 支付链接"这条链路怎么实现的人,以及目标演出确实还支持 PC 端购买、想省掉点击和等页面加载的人。
边界也要划清:
- 它不是多账号工具,整个脚本只有一个登录状态,没有任何并发机制。
- 它不是手机端链路工具,README 明确说明大部分购买方式已迁移至手机端,且暂无更新计划。
- 它不解决"没票"的问题。脚本省掉的是人工点击和页面加载的几秒,如果 PC 端渠道本身没放票,它会看到"缺货登记"然后退出。
怎么跑起来:一个轮询循环 + 三个下单请求
整个流程都在Automatic_ticket_purchase.py的run()方法里,分四段。
登录。用 selenium 驱动 Chrome 打开登录页,支持账号密码或扫码两种方式。登录成功后把 cookie 存成cookies.pkl,下次运行直接复用,不再打开浏览器。
轮询。一个while True循环调用演出详情接口,读目标价位对应的按钮文字:"即将开抢"就继续轮询;"缺货登记"说明售空,退出;"立即购买"进入下单流程;"选座购买"进入选座分支。注意这个循环里没有任何 sleep,是紧密轮询,接口会被持续高频请求。
下单。连续三个请求:① 拿item_id和价位去详情接口,取该价位的 skuId;② 用 sku 信息请求订单确认页,从返回页面里解析出内嵌的订单数据;③ 在订单数据里把自己名下的观演人标记为"使用中",POST 给 createOrder 接口。成功后终端打印订单号和支付宝支付链接,付不付款由你决定。
选座分支。演出如果是"选座购买",脚本会额外请求座位接口拿到座位图,过滤出目标价位下可售的座位,按顺序取前buy_nums个。这一分支要通过 Node.js 执行一段 JS 来计算请求签名,所以机器上得装 Node.js。座位就是按顺序取的,没有连坐逻辑。
起步:改 4 个参数 + 2 条命令
先装依赖:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt环境上要准备两样东西:脚本会用 selenium 打开真实浏览器窗口,所以要有图形界面的机器,并下载与本机 Chrome 版本匹配的 ChromeDriver,按系统重命名为chromedriver_windows/chromedriver_linux/chromedriver_mac后放在项目根目录;走选座分支的话另需安装 Node.js。
然后打开Automatic_ticket_purchase.py,改DaMaiTicket类里的 4 个参数,这是真正需要动的全部配置:
self.item_id: int = 610820299671 # 商品id self.viewer: list = ['李四', '张三'] # 大麦已登记的观演人 self.buy_nums: int = 2 # 购买数量,需与观演人数量一致 self.ticket_price: int = 380 # 目标票价- item_id:打开演出详情页,地址栏
id=后面那串数字就是。不同演出、不同城市的场次 item_id 都不同,一定要用你实际要抢的那个页面里的。 - viewer:必须与大麦"我的大麦 → 常用购票人管理"里已保存的姓名完全一致。脚本下单前会和接口返回的观演人列表做严格比对,差一个字就提交不了。
- buy_nums:必须等于 viewer 列表里的人数,不一致脚本会在启动时直接退出。
- ticket_price:必须是某个价位的准确价格,代码是精确比较,不接受区间。
最后启动:
python Automatic_ticket_purchase.py # 账号密码登录(凭据填在代码里) python Automatic_ticket_purchase.py --mode qr # 扫码登录首次登录成功后会自动生成cookies.pkl,之后每次运行都跳过登录。
用起来的样子:两个可以在终端验证的变化
用例一:参数不匹配,一个请求都发不出去。把 viewer 填成两个人,却忘了把 buy_nums 改成 2——运行后终端打印"购买数量与实际观演人数量不符"直接退出,连浏览器都不会打开。这个校验在run()的第一行,开票前就能帮你抓出笔误。
用例二:第二天复用登录态。第一次登录成功后,隔天什么都不改直接再跑:不会再弹浏览器窗口,直接进入轮询循环,没到开票时间时终端保持安静地轮询。如果 cookie 已过期,登录校验会失败并提示"登录失败……若使用保存的cookies,则删除cookies文件重新尝试",这时删掉cookies.pkl重新登录即可。
边界与风险:能做什么,不能做什么
能做的:单账号、单演出、单价位,在 PC 网页端链路自动下单(含简单选座),拿到支付链接即止。
不能做的:多账号并发(代码里不存在这个机制);手机端链路(README 说明已迁移,无更新计划);连坐选座(按顺序取前 N 个座位);支付(脚本到支付链接为止)。
几条红线要知道:
- 轮询循环没有间隔,是紧密轮询。长时间高频请求有触发平台风控、账号异常的可能;这个仓库定位为个人学习参考,不要用于倒卖。
- 下单所需的部分参数是从大麦前端 JS 里用正则提取的,JS 版本号写死在代码中。大麦一旦升版本或改接口,这一步就会直接失败,需要你自行修复——这也是它难以维护的主要原因。
- 如果目标演出已经只能在手机端购买,PC 链路就没有库存可言,跑脚本和不跑没有区别。
常见误区:跑之前先对照一遍
- 误区:多开几个脚本实例并行跑,成功率更高。纠正:脚本只维护一个登录状态,同一账号多实例会争抢
cookies.pkl和浏览器状态;多开提高的是风控暴露面,不是成功率。 - 误区:viewer 里想填谁的名字就填谁。纠正:必须先把观演人大麦"常用购票人"里登记好,且字符串完全一致。提交订单时脚本会拿接口返回的观演人列表核对,不全匹配就中止。
- 误区:ticket_price 可以写个价位区间,脚本自己挑最接近的。纠正:代码按
float(price) == ticket_price精确匹配,匹配不到就定位不到价位,整条链路走不下去。 - 误区:装完依赖就能直接跑。纠正:ChromeDriver 要自己下载、按系统改名、放进项目根目录;选座分支还依赖 Node.js。这两样缺一个都会启动失败。
- 误区:提前跑起来,票就稳了。纠正:脚本只是把"点击和等页面"压缩成了接口请求,库存、开票时间、PC 链路是否还有效,都是它改变不了的外部条件。
第一步:先拿一个没开票的演出完整跑一遍
不用等一场你真正想抢的开票来验证链路。先任意一种方式登录成功一次,确认项目目录里生成了cookies.pkl;再找一个已上架但尚未开票的演出,把 4 个参数填好跑起来,在终端确认轮询能读到"即将开抢",开票后按钮状态能走到"立即购买"。请求链路完整、参数校验都通过后,再决定要不要把它用在真正想抢的那场开票上。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考