大麦自动抢票脚本实战:3 个参数配齐,1 条链路自动下单
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
**19:59:58,演出详情页的倒计时跳到 0。**这个大麦自动抢票脚本(仓库名Automatic_ticket_purchase)不靠人手点按钮,它直接请求购票接口,轮询目标价位的按钮状态,一旦变成"立即购买"就立刻发下单请求。
它管什么,不管什么
它能做的:登录后持续检查指定商品的按钮状态,可购瞬间自动完成"订单确认 → 提交订单",并输出支付宝支付链接;V2.1 起还支持选座链路。它不做的事:不替你付款(最后一步支付宝仍由人完成),也不保证抢到——它只让你的请求比人手快。另外 README 明确写着"已停止维护,大部分购买方式已迁移至手机端",对新开售的场次,接口是否还走得通需要你自己先验证。
抢票工具部署:三步跑起来
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt两个坑先说在前面。其一,requirements.txt里的pyexecjs只是 JS 执行的桥梁,本机要自己装 Node.js,否则选座签名跑不起来。其二,Selenium 只在登录时用,需要把与 Chrome 版本匹配的 ChromeDriver 放进项目根目录,并按系统重命名为chromedriver_windows/chromedriver_linux/chromedriver_mac(tools.py 就是按这三个名字找驱动的)。卡住的基本都是驱动版本没对上;而且依赖里selenium钉死在 3.141.0,只能配较老的 Chrome(8x 左右),太新的 Chrome 大概率不兼容。
抢票脚本配置:3 个核心参数一次讲透
克隆下来后,在本地副本的Automatic_ticket_purchase.py里,只需要改__init__里这一块:
self.item_id: int = 610820299671 # 商品id, 来自详情页URL self.viewer: list = ['李四'] # 站内已录入的常用购票人 self.buy_nums: int = 1 # 必须等于 viewer 人数 self.ticket_price: int = 180 # 目标价位**item_id 获取:哪个城市站就是哪个 id。**同一巡演每个城市站的 id 都不同,别拿错场次。取法:打开目标演出的详情页,地址栏里id=后面那串数字就是item_id。
填错的后果:第一轮轮询就取不到对应演出的按钮状态,直接抛异常退出。
**viewer:和站内常用购票人逐字对齐。**名字要和大麦"我的大麦"里的"常用购票人"一模一样,包括空格和标点;buy_nums必须等于viewer的条数,否则脚本启动时打印"购买数量与实际观演人数量不符"后直接返回,连登录都不会走。
**登录态:靠 cookies.pkl 自动续。**首次运行会开浏览器登录——默认账号密码自动填,加--mode qr则在弹出的浏览器里手动登录(扫码等),页面最多等 180 秒。成功后 cookies 存成cookies.pkl,下次运行优先加载它、跳过浏览器。过期的表现是登录校验失败,删掉这个文件重新登录即可。
一次完整运行:命令敲下去之后发生了什么
python Automatic_ticket_purchase.py # 账号密码自动填写 python Automatic_ticket_purchase.py --mode qr # 手动登录命令跑起来先做自检:viewer 数量对 buy_nums,然后读 cookies 或开浏览器登录,再用"我的大麦-个人信息"页面标题核对登录是否有效。接着拉取 alicdn 上的前端 JS,用正则抠出两套请求参数,进入轮询循环。
每一轮它查目标价位按钮的当前文案:"即将开抢"就安静等下一轮;"缺货登记"说明手慢了,退出;翻成"立即购买"的那一瞬,它立即请求订单确认页,从页面内嵌数据里抠出订单信息,核对 viewer 名单在观演人列表里,全部通过才 POST 到 createOrder 接口。选座场次走另一条路:先用signcode.js的签名请求 mtop 座位接口拉座位数据,挑满buy_nums个座位再下单,README 里注明只支持单一价位、不支持连坐。
成功后终端打印"抢票成功"、alipayOrderId和支付宝支付链接。注意此时订单只是创建了、没付款,票能不能到手取决于你付款的速度。
翻车了,先对照这张表
| 症状 | 最可能原因 | 处置 |
|---|---|---|
| 登录时浏览器起不来、或长时间卡住 | 驱动版本与 Chrome 不匹配,或根目录文件名不对 | 下对应版本 ChromeDriver,按系统命名重命名后放项目根目录 |
| 启动即提示登录失败 | cookies.pkl 已过期 | 删除 cookies.pkl 重新登录 |
| 提示观演人信息不一致 | viewer 与站内常用购票人没逐字对上 | 去个人中心核对后改本地配置 |
| "购买数量与实际观演人数量不符" | buy_nums ≠ len(viewer) | 两者保持一致 |
| 首轮轮询就崩、正则匹配不到参数 | 大麦前端 JS 升版,0.0.70 这份取不到了 | 对照最新 JS 重新适配 tools.py 的 get_api_param |
| 选座流程跑不通 | 没装 Node.js,或该场次并非选座票 | 装 Node.js;或把 ticket_price 换成非选座价位 |
再往深里走一点
建议从两个有明确产出的方向入手。一是价位兜底:在本地副本的轮询循环里把写死的ticket_price换成一个价位列表,目标档位售罄就顺延到下一档——产出是首选档位卖光后脚本不再直接回家。二是状态日志:把每轮轮询的按钮文案和时间戳追加写进本地日志文件——产出是一场演出开售秒级的状态时间线,下次接口变动时能一眼看出请求卡在哪一步。
本仓库仅供个人学习参考,请遵守平台规则与相关法律法规,勿用于黄牛倒票等商业行为。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考