大麦网自动抢票指南:如何用 Python 脚本 4 步跑通自动购票流程
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
19:30:00,大麦网开票倒计时归零的那一刻,热门演出的票池往往已经见底——手动刷新、点按钮、选观演人,每个动作之间隔着几百毫秒到几秒,拼的是页面加载速度和手速。Automatic_ticket_purchase 是一个大麦网自动抢票脚本:登录之后,它用 requests 直接调用大麦的库存查询、订单确认和提交接口,把剩余动作交给程序,把响应等待从人手级别降到网络级别。
🔍 它替你把哪些手动环节交给了程序
理解这个脚本的价值,看它自动化的四件事就行。整体流程是:登录验证 → 获取购票必备信息 → 轮询票务状态 → 可购时立即提交,对应 Automatic_ticket_purchase.py 里的run()方法。
- 登录与状态保持:首次运行用 selenium 打开 Chrome 完成账号或扫码登录,登录后把 cookies(证明你已登录的身份凭证)写入
cookies.pkl(见 tools.py 的save_cookies),之后每次运行直接读取,不再重复登录。 - 状态轮询:脚本周期性请求
detail.damai.cn/subpage接口,读取目标价位的按钮文案——"即将开抢"就继续等,"缺货登记"立即结束,"立即购买"进入下一步。你不再需要盯着页面刷新。 - 拼订单请求:tools.py 的
get_api_param()会下载并解析大麦的前端 JS,提取下单所需请求参数,再调用orderConfirm拿到提交订单的完整数据;选座购买链路则依赖 signcode.js 为座位接口生成 sign 签名(仅支持抢购指定价位的座位,暂不支持连坐)。 - 提交订单:在订单数据里勾选你指定的常用购票人后 POST 到
createOrder接口,成功时终端打印alipayOrderId和支付宝支付链接。
关键在于:浏览器只参与首次登录,之后的所有请求都由requests完成,这正是它比"在页面上点按钮"更快的原因。
流程清楚后,下面用 4 个步骤把它跑起来。
🛠️ 从 0 到跑通:4 个步骤完成部署
第一步:安装依赖
先克隆仓库并安装 Python 依赖:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt这条命令安装 requirements.txt 声明的四个依赖:requests负责 HTTP 请求,selenium驱动浏览器,beautifulsoup4解析 HTML,pyexecjs执行 JS。结束后没有红色报错即成功,可用pip list核对这四个包。
第二步:准备 ChromeDriver
登录环节的浏览器自动化需要 ChromeDriver,它是让程序控制 Chrome 的桥接程序。下载与你 Chrome 版本匹配的文件,按操作系统重命名为chromedriver_windows、chromedriver_linux或chromedriver_mac(tools.py 的account_login()按这个固定名字查找),放到项目根目录。版本不匹配时浏览器启动失败或报版本错误;匹配的话,首次运行会自动弹出 Chrome 并打开大麦登录页。
第三步:填写抢票参数
打开 Automatic_ticket_purchase.py,修改DaMaiTicket.__init__中的六个参数:
self.login_id: str = 'account' # 大麦网账号 self.login_password: str = 'password' # 大麦网密码 self.item_id: int = 610820299671 # 商品ID self.viewer: list = ['viewer1'] # 常用购票人姓名 self.buy_nums: int = 1 # 票数, 需与购票人数量一致 self.ticket_price: int = 180 # 指定票价这六个值决定了脚本为谁、抢哪场、买哪个价位的票,填写依据见下一节。
第四步:运行并确认登录
python Automatic_ticket_purchase.py # 账号密码登录 python Automatic_ticket_purchase.py --mode qr # 扫码登录--mode只影响登录方式。首次运行会打开大麦登录页,扫码模式需你手动用手机扫码。登录成功后项目目录生成cookies.pkl,第二次起直接跳过登录。
判断成功的信号:脚本不再弹出浏览器而是进入状态轮询;当目标价位变为可购并下单成功时,终端会打印"抢票成功"以及alipayOrderId和支付链接,再到大麦"我的大麦-交易中心"确认订单即可。
跑通之后,绝大多数失败都出在参数配置上,下面看最容易配错的三个。
⚙️ 三个最容易配错的参数,及出错后怎么排查
item_id:在哪个页面、取哪个数字
item_id是大麦为每个演出场次分配的唯一标识,不同城市、不同场次对应不同的 item_id。获取方式:打开目标演出的详情页,在地址栏中找id=后面的数字。
上面示意了大麦网商品详情页地址栏中id=参数的位置。填错的后果是查不到对应场次,状态查询卡住或解析报错。排查思路:确认你打开的是目标城市站点的详情页(切换城市站时地址栏的 id 会随之变化),并确认数字拷贝完整。
viewer 与 buy_nums:必须与常用购票人逐字一致
viewer里的姓名必须来自大麦"我的大麦-常用购票人管理",且逐字一致,空格差异都会导致失败。提交订单前,脚本会把你的列表与服务端返回的购票人名单做交集比对,不一致时打印"请检查输入的观演人信息与大麦网观演人信息是否一致"并退出。
上面示意了大麦网常用购票人管理页面中"姓名"一栏,即你需要填进viewer的内容。这里还有一个硬约束:buy_nums必须等于viewer列表的姓名数量,否则run()开头就打印"购买数量与实际观演人数量不符"并直接退出,连一次请求都不会发出。
ticket_price:要与页面票价精确匹配
ticket_price与页面价格做浮点数相等比较,必须与详情页上的某个票价完全一致;对不上时sku_id为空,流程无法进入购买分支;不填则直接提示"票价未填写"。排查时打开详情页核对价格列表即可。
另外两个接口层面的提醒:其一,get_api_param()解析的是固定版本的前端 JS 文件,大麦更新前端后这一步可能解析异常,需要按代码注释提示自行修正;其二,README.md 已注明项目停止维护,大部分购买方式迁移至手机端且暂无更新计划,遇到接口失效时只能配合抓包自行适配。
配置核对完毕,动手前还有两件事要确认。
📌 开始前的合规提醒与第一步行动
本项目仅用于学习与研究,目的是理解票务平台的接口交互逻辑。使用前请阅读大麦网使用规则与平台条款,保持合理请求频率,不要用于影响正常销售秩序的场景,README 的免责声明也写明了这一点。考虑到项目已不再更新,最稳妥的第一步是:先用--mode qr完成一次登录,确认cookies.pkl生成且下次运行免登录;再挑一场不热门的预售演出,把"状态轮询 → 提交订单"完整走一遍,确认每个环节返回正常后,再为目标演出调整参数。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考