手把手跑通大麦网自动抢票脚本:环境搭建、配置与下单全流程
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
开篇速览
本文带你从零跑通 Automatic_ticket_purchase 大麦网自动抢票脚本,完成后你会得到一套能自动登录大麦网、轮询票源状态并直接调用下单接口的运行环境,适合想入门 Selenium 自动化与 HTTP 接口逆向的新手跟着操作。
核心机制:它凭什么能做到
这个项目采用「登录阶段用浏览器、其余全用纯 HTTP 请求」的混合架构:Selenium + ChromeDriver 只负责打开大麦网登录页、完成账号密码或扫码登录;登录成功后,查票、拉订单确认页、提交订单全部改走 requests 接口,不再点击页面、不等待元素渲染。其中 mtop 系列接口需要附加 sign 参数,由 signcode.js 通过 execjs 调用本地 Node.js 引擎完成计算。
整个流程可以拆成五步:
- 检查本地是否存在 cookies.pkl 缓存,有效则直接复用,跳过浏览器;
- 缓存失效时由 Selenium 打开登录页,成功后把 cookies 存为 cookies.pkl;
- 用正则解析大麦网前端 JS,提取调用 API 所需的固定参数(见 tools.py 中的 get_api_param);
- 循环查询商品 SKU 状态:「即将开抢」继续等待、「缺货登记」退出、「立即购买」进入下单流程;
- 先 GET 订单确认页拿到订单数据,再 POST createOrder 接口提交订单,控制台输出 alipayOrderId 和支付链接。
🚀 从零到跑通:快速上手
前置条件清单(共 5 项):
- Python 3.7 及以上
- Chrome 浏览器,以及与之版本匹配的 ChromeDriver 驱动
- 驱动已放入项目根目录并重命名:Windows 为 chromedriver_windows,Linux 为 chromedriver_linux,macOS 为 chromedriver_mac
- 一个大麦网账号,且已提前添加好购票人(观演人)信息
- 稳定的网络(登录阶段最长等待 180 秒)
先把项目代码拉到本地:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase进入项目目录并安装依赖(全部依赖只有 requests、selenium、beautifulsoup4、pyexecjs 四个):
cd Automatic_ticket_purchase pip install -r requirements.txt一个需要说明的现状:README 中已声明项目停止维护,部分演出的购买入口迁移到了手机端。建议以接口自动化学习的目标来跑通它,并对个别解析逻辑做好适配当前接口的准备。
🔑 关键配置逐项详解
配置项都集中在 Automatic_ticket_purchase.py 的 DaMaiTicket 类__init__方法里,逐项修改即可。
item_id:演出项目的商品编号。打开演出详情页,地址栏里的 id 参数就是它,例如截图中的 610820299671。不同城市、不同场次取值不同,填错会让查询接口拿到错误商品或直接报错,是整个脚本的前提。
viewer:购票人姓名列表。姓名必须与大麦网里已保存的信息完全一致(我的大麦 → 常用购票人管理)。填错一个字,脚本会在提交订单时中断并提示观演人信息不一致。
buy_nums:购买数量。必须与 viewer 列表的元素个数相等,否则脚本启动即退出。
ticket_price:目标票价(元)。脚本只会在该价位可购时才触发下单,填了页面上不存在的价位会导致 SKU 匹配失败、一直空转。
login_id / login_password:仅账号密码登录时需要填,走扫码登录可不填。
跑通第一个任务 & 多场景速配
默认账号密码登录:
python Automatic_ticket_purchase.py二维码扫码登录:
python Automatic_ticket_purchase.py --mode qr启动后的预期表现:先弹出浏览器打开大麦网登录页,需要你完成登录;随后控制台进入静默,表示脚本正在后台轮询票源状态;状态变为「立即购买」或「选座购买」时,会连续发出两次下单请求;成功则打印「抢票成功」以及 alipayOrderId 和支付宝支付链接,此时需要人工前往支付。
几个常见场景的配置差异:
- 个人演唱会抢票:item_id 取自演出页,viewer 填两人姓名、buy_nums=2,ticket_price 设为目标价位;开票前 30 分钟启动脚本并保持运行。
- 选座类演出:ticket_price 填目标价位即可,脚本会拉取座位图并按顺序取前 N 个可用座位,选座逻辑不保证相邻。
- 小团体批量购买:把 5~10 张票拆到两三个账号上跑,每个账号 buy_nums 保持较小,降低单账号风控概率。
⚙️ 进阶调优(精选)
- 使用有线网络、关闭占带宽的程序,让每次请求往返时间尽量小,排队时能更早到达。
- 开票前手动跑一遍登录流程,确认 cookies.pkl 已生成且有效,正式运行时可跳过浏览器直接进入轮询。
- 登录阶段不要关闭浏览器窗口,否则脚本会等待 180 秒超时后放弃。
- 多实例并行时使用不同账号配合不同的 Chrome 用户配置,避免会话互相覆盖。
🛠️ 排查与避坑
问题一现象:浏览器反复打开,登录迟迟不成功,或出现滑块验证。 可能原因:ChromeDriver 与 Chrome 版本不匹配,或自动化特征被识别。 解决办法:换用与浏览器版本一致的驱动,并先手动完整登录一次验证账号可用。
问题二现象:控制台打印「加载cookies失败」或「登录失败, 请检查登录账号信息」。 可能原因:cookies.pkl 缓存过期或损坏。 解决办法:删除 cookies.pkl 后重新运行,脚本会重新登录并写入新缓存。
问题三现象:进入下单环节时报「获取购买必备参数异常」。 可能原因:大麦网接口变更,脚本里的正则不再匹配当前返回结构。 解决办法:在开发者工具的网络面板核对实际响应,自行修改 tools.py 中的解析逻辑——这也是本项目最大的练习价值。
问题四现象:提示「请检查输入的观演人信息与大麦网观演人信息是否一致」。 可能原因:viewer 里的姓名与保存值存在空格、昵称与实名不一致。 解决办法:从常用购票人管理界面原样复制姓名粘贴进 viewer 列表。
延伸思考
可迁移的技术点:Selenium 只用于登录、后续全切 requests,请求链路大幅缩短;前端签名算法提取后用 execjs 本地重放;用 pickle 持久化登录态跳过重复登录。
改进方向:参数外置为独立配置文件;加入开票倒计时定时触发;支持相邻座位筛选与支付结果通知。
收尾
这个仓库的价值不在于抢票成功率,而在于用不到 300 行代码把登录、轮询票源、提交订单的完整链路摊开给你看,接口结构与签名机制都能直接追踪。使用时请把它限定在自己真实观演的需求范围内,并遵守平台规则与条款。下次开票前花十分钟把环境准备好,你就比临时抱佛脚的人多一层把握。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考