大麦自动抢票脚本完整教程:从配置到下单 6 步跑通
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
开票瞬间页面一直转圈,等你点进去,按钮已经变灰。抢票真拼的是手速吗?开源项目 Automatic_ticket_purchase(大麦抢票脚本 V2.1)给出了另一条路:只在登录环节用 Selenium 打开一次浏览器拿到登录态,之后查票、下单、支付全程走纯 HTTP 请求,把手动十几秒的操作压成两次网络往返。
30 秒判断值不值得用
先说它能做什么:
- 自动登录:账号密码、扫码(
--mode qr)两种方式,登录态存成本地cookies.pkl,下次启动直接复用,不再弹窗登录; - 状态轮询:自动识别票档按钮的四种状态——"即将开抢 / 立即购买 / 缺货登记 / 选座购买",开抢瞬间自动转入下单;
- 自动下单:从查票、生成订单到
createOrder提交全自动,成功后打印alipayOrderId和支付宝支付链接,你只管付款; - 选座购买:V2.1 新增,但只支持指定单一价位的座位,不支持连坐。
边界直说:它只走PC 网页端链路。README 已声明项目停止维护,大部分购买方式已迁移到手机端、需配合抓包。如果你的目标场次在 PC 端已没有"立即购买"按钮,这套脚本帮不上忙,别硬上。
它是怎么跑通的:登录用浏览器,下单走纯请求
登录环节有滑块、验证码这类浏览器级反爬,绕不开真实页面;而下单环节接口是固定参数加 cookies,纯请求比渲染页面快一个量级。这就是项目"双引擎"分工的由来。完整链路:
- 拿登录态(最慢的一步):tools.py 里的
account_login用 Selenium 打开大麦登录页,先关掉enable-automation和AutomationControlled两个开关,避免被navigator.webdriver检测到后弹滑块。页面加载超时设为 60 秒,登录最长等 180 秒。 - 验登录态:请求个人中心页面,标题是"我的大麦-个人信息"才算通过;成功后把 cookies 存成
cookies.pkl,下次跳过登录。 - 取接口参数:
get_api_param()在线下载大麦前端 vendor.js,用正则抽出查票和下单接口需要的参数。这一步依赖页面 JS 结构,是网站更新后最容易坏的一环。 - 轮询等开抢(最快的一步):循环请求
detail.damai.cn/subpage读目标价位的按钮文案——"即将开抢"就继续循环,"缺货登记"直接结束,"立即购买"立刻进入下单。 - 下单:请求
buy.damai.cn/orderConfirm生成订单数据,按姓名匹配勾选viewer,POSTcreateOrder提交,打印alipayOrderId和支付链接。 - 选座分支(按钮为"选座购买"时):用 signcode.js 配合 pyexecjs 计算 mtop 接口的 sign 签名,拉取座位数据后过滤出目标价位可售座位,按顺序取前
buy_nums个。
一句话概括:浏览器只干登录这一件最难自动化的事,剩下全是毫秒级的纯请求。参数与流程细节见 Automatic_ticket_purchase.py。
从克隆到跑通:三步跑起来环境
第 1 步,拉代码
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase第 2 步,装依赖
pip install -r requirements.txt4 个依赖各司其职,版本都锁在 requirements.txt 里:
| 包名 | 版本 | 用途 |
|---|---|---|
| selenium | 3.141.0 | 驱动浏览器完成登录 |
| requests | 2.24.0 | 承担查票、下单的全部 HTTP 请求 |
| beautifulsoup4 | 4.9.3 | 解析登录状态页 HTML |
| pyexecjs | 1.5.1 | 执行 JS 计算选座接口的 sign 签名 |
同时下载与你本机 Chrome 版本匹配的 chromedriver,按系统重命名后放到项目根目录:Windows 改名chromedriver_windows、macOS 改名chromedriver_mac、Linux 改名chromedriver_linux——代码就是按系统名在当前目录找它的。
第 3 步,首次运行
python Automatic_ticket_purchase.py # 账号密码登录 python Automatic_ticket_purchase.py --mode qr # 扫码登录首次没有cookies.pkl时默认走账号密码登录,成功后自动生成该文件。最容易踩的坑就一个:chromedriver 与 Chrome 版本不匹配,或者没改名、没放根目录——轻则启动找不到驱动,重则登录页反复弹滑块。
关键参数速查表
所有参数集中在 Automatic_ticket_purchase.py 的DaMaiTicket.__init__里:
| 参数 | 必填/选填 | 怎么获取 | 常见坑 |
|---|---|---|---|
item_id | 必填 | 商品详情页地址栏里id=后面的数字 | 同一巡演每个城市站是不同场次,ID 各不相同 |
viewer | 必填 | "我的大麦 → 常用购票人管理"里登记的姓名 | 必须一字不差 |
buy_nums | 必填 | 你要买的张数 | 必须等于len(viewer) |
ticket_price | 必填 | 页面价签上的数字 | 代码按数值相等匹配,180 就填 180 |
login_id/login_password | 账号登录时必填 | 你的大麦账号与密码 | 用--mode qr扫码则不用填 |
item_id:脚本锁定的目标。打开目标演出的商品页,地址栏里id=610820299671这段就是。注意别拿海口站的 ID 去抢太原站。
viewer与buy_nums:两个最容易翻车的参数。viewer填的名字和常用购票人里登记的必须逐字一致(空格、繁简、全半角都会导致匹配失败),下单时脚本按姓名自动勾选,不用手填证件号。
而buy_nums一旦不等于len(viewer),run()一进来就打印"购买数量与实际观演人数量不符"然后退出,连登录都不会发生。
一次跑通实录:开票前的时间线
以 20:00 开票为例,一次典型的成功运行长这样:
| 时间 | 动作 | 结果 |
|---|---|---|
| 提前 1 天 | 完整跑一遍流程,扫码登录 | 根目录生成cookies.pkl,登录验证通过 |
| 开票前 30 分钟 | 干跑一次 | 稳定输出"即将开抢",说明参数没填错 |
| 开票前几分钟 | 启动正式运行 | 直接读cookies.pkl,跳过登录进入轮询 |
| 20:00 起 | 按钮变为"立即购买" | 连续发出orderConfirm、createOrder两个请求 |
| 开票后 | 订单提交成功 | 打印alipayOrderId与支付宝支付链接 |
| 限期内 | 手机打开链接付款 | 订单锁定,"我的大麦 → 交易中心"可查 |
脚本能压缩的是操作耗时——从"立即购买"出现到订单提交,中间只有两次 HTTP 请求;它压缩不了网络排队,返回"缺货登记"就代表这个价位确实被抢完了。
高频报错速查:现象、原因、对策
| 现象 | 原因 | 对策 |
|---|---|---|
| "购买数量与实际观演人数量不符" | buy_nums≠len(viewer) | 两者改成相同数量 |
| "登录失败, 请检查登录账号信息" | cookies.pkl过期,或账号密码错误 | 删除cookies.pkl,改用--mode qr重登 |
| "请检查输入的观演人信息与大麦网观演人信息是否一致" | viewer与常用购票人对不上(空格、繁简、全半角) | 在常用购票人里核对,逐字复制 |
| "手慢了,该票价已经售空" | 目标价位售罄 | 换ticket_price重试,或等下一批开票 |
| "获取购买必备参数异常,请重新解析response返回的参数" | 大麦前端 JS 更新,get_api_param正则失配 | 对照最新 vendor.js 重新提取参数 |
| 启动即报找不到 chromedriver | 驱动没改名或没放根目录 | 按系统改名后放项目根目录 |
选座分支报获取sku_id失败或 sign 相关错误 | 选座接口参数或签名逻辑与当前不一致 | 抓包对比接口参数,更新 signcode.js |
报错都来自脚本的实际打印,出问题时先对号入座,再考虑别的。
让它更稳的几个技巧 ⚡
1. 提前 1–2 天把登录态"焐热":开票前完整跑一遍,确认cookies.pkl已生成且登录验证通过。开票当天脚本启动即进入轮询,省掉浏览器登录那几分钟;当天若报"登录失败",删掉cookies.pkl用--mode qr重登一次。
2. 开票前 30 分钟干跑一次:预期结果是稳定输出"即将开抢"状态,说明item_id、ticket_price都填对了,get_api_param也没被网站更新搞坏。问题在开票前暴露,而不是开抢那一刻。
3. 时间与网络两条底线:系统时间校准到与北京时间一致;开抢时段别让下载、直播挤占带宽。主循环是"轮询—判定—下单"的紧凑循环,端到端耗时基本等于一次网络往返,离服务器近的线路比什么都有效。
边界与合规
- 仓库为 MIT License,作者声明仅用于个人参考学习,商用、转售、代抢不在许可范围内,账号风险自负;
- 主循环是高频轮询,同一目标别并行起多份脚本;
- 项目已停止维护、暂无更新计划,PC 端接口随时可能失效,把它当"开票前干跑验证"的工具而非一劳永逸的方案;
- 只给自己和身边人买票,尊重平台服务条款。
动手前的行动清单
- 今天:克隆仓库 →
pip install -r requirements.txt→ 放好命名正确的 chromedriver - 一两天内:填好
Automatic_ticket_purchase.py里的 6 个参数;常用购票人登记完毕,姓名逐字核对 - 开票前一天:跑一次完整流程,确认
cookies.pkl生成、登录验证通过 - 开票前 30 分钟:干跑一次,确认输出"即将开抢"
- 开票时刻:启动脚本,盯输出里的
alipayOrderId,限期内完成支付 - 收尾:到"我的大麦 → 交易中心"核对订单状态
脚本把"手速"换成了"提前量",你要做的只剩三件:参数别填错、时间要对准、网络要留专线。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考