大麦网抢票脚本 Automatic_ticket_purchase 完整指南:三步跑通抢票流程
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
开售那一刻,我点着"立即购买",按钮却在落点前变成了"缺货",页面还白了一截。那两三秒让我认清:靠手速去拼,基本没有胜算。
后来我试着把这套流程用代码走一遍,发现登录后抢票的路径其实是固定的:拉取演出信息、确认票价、提交订单。开源项目 Automatic_ticket_purchase(大麦网抢票脚本)做的就是这件事:用浏览器完成登录,之后全部走接口请求,不再等页面渲染,等按钮变成可买状态时直接把订单提交出去。
它是什么、给谁用
- 脚本是纯 Python 写的,主流程在 Automatic_ticket_purchase.py,登录、签名、选座等辅助逻辑都放在 tools.py,Windows、macOS 都能跑。
- 适合两类人:想拆解真实购票接口长什么样的人,以及想给自己和朋友抢热门演出的人。把它当参考项目,不是开箱即用的成品。
- 前置条件:有大麦账号,购票人提前存好;本机装了 Chrome 和 Python 3。
- 有一点要先说清:项目在 README.md 顶部标注了"已停止维护"。部分演出已把购买迁到手机端,目标演出如果 PC 端买不了,脚本就用不上,动手前先确认演出支持网页端下单。
运行前要先弄好的3件事:账号、item_id、环境
账号和购票人信息
脚本不会替你填姓名和身份证号,它直接调用你在网站上存好的购票人。所以要先登录大麦,把购票人添加进"常用购票人管理",脚本里填的名字必须和存好的名字一字不差。
如何获取 item_id
item_id 是演出的唯一编号,不同城市站点的值不一样。打开演出详情页,看浏览器地址栏,id=后面那串数字就是它,比如id=610820299671。
运行环境
依赖用 pip 一次装完,清单见 requirements.txt。另外要下载与系统匹配的 ChromeDriver,放到项目根目录并改名为chromedriver_windows、chromedriver_mac或chromedriver_linux。还要注意:签名模块要用 Node.js 执行 signcode.js,所以本机得装好 Node。
最快跑起来的路径:克隆、配置、启动
第一步,克隆仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt第二步,打开Automatic_ticket_purchase.py,在DaMaiTicket类的__init__里填参数:
self.login_id = '你的账号' self.login_password = '你的密码' self.item_id = 610820299671 # 目标演出id self.viewer = ['购票人姓名'] # 网站已保存的购票人 self.ticket_price = 180 # 目标票价buy_nums记得和购票人数量保持一致,买两张就存两个人、填 2。
第三步,启动脚本:
# 默认账号密码登录 python Automatic_ticket_purchase.py # 或改用二维码登录 python Automatic_ticket_purchase.py --mode qr启动后它会先看项目里有没有cookies.pkl:有就直接拿它验证登录,没有就弹出 Chrome 窗口让你登录,并把 cookie 存下来;登录通过后进入轮询,一直盯着目标价位的按钮状态,等到出现"立即购买"或"选座购买",就自动走下单和提交,卡在哪一步都会在控制台打出来。
脚本内部在干什么:4个模块的分工
把它想象成一家快递站,抢票订单就是那件包裹:
- 登录与 cookie 模块(
tools.py里的account_login、save_cookies、load_cookies):相当于快递站的"进出门禁"。第一次刷脸(浏览器窗口登录)后,之后的包裹都凭门禁记录(cookies.pkl)直接放行,省掉最不稳定的人工环节。 - 签名模块(
get_sign_code配合signcode.js):每个接口请求都要带一个 sign 参数,就像包裹上必须实时打印的运单号。脚本用 execjs 调 Node 执行签名算法现算这个号,这也是环境里必须有 Node.js 的原因。 - 选座模块(
get_seat_dynamic_info、pick_seat等):像游戏里的"座位匹配器"。先把整张座位图拉回来,划掉已售的和目标价位之外的,再从剩下的里面挑前 N 个可用座位。目前只支持同一价位选座,不支持连坐。 - 主循环(
run方法):一个 while 循环,反复读按钮文案——"即将开抢"就继续等,"缺货登记"就收手,"立即购买/选座购买"才真正发请求。前面所有模块都是铺垫,这一步才是交卷。
提升成功率的清单:开售前、开售瞬间、失败之后
开售前
- 提前手动登录一次,生成
cookies.pkl,验证下次能直接复用 - 核对 item_id、ticket_price、viewer、buy_nums 四项,城市选错一切白搭
- 换有线网络,关掉后台下载和大流量程序
- 确认演出支持 PC 端购买,记准确开售时间
开售瞬间
- 提前 3~5 分钟启动脚本,让它先进入轮询状态
- 多个价位时优先选库存更多的那一档
- 多账号就串行轮流跑,别同时打同一个接口
失败之后
- 先看控制台输出,定位卡在登录、参数解析还是提交订单
- 删掉
cookies.pkl重新走一次人工登录 - 反复出现解析异常时,大概率是站点 JS 更新了,脚本已停止维护,要有手动修补的心理准备
🎯 红线:该做的和不该做的
- 只用于个人学习和练习,别拿去做商业票务,抢来的票也不要转卖。
- 保持脚本原有的轮询节奏,别改成高频轰炸接口,平台有风控。
- 下单成功后立刻停掉脚本,不要让它继续空转发请求。
- 账号密码在代码里是明文,注意别外泄,能用
--mode qr扫码登录就别把密码写进文件。 - 账号被限制或请求被拒时先停下来排查,不要想着绕过平台限制。
出问题时先看这里:症状与处理对照表
| 症状 | 可能原因 | 处理方式 |
|---|---|---|
| 控制台提示"登录失败" | 账号密码错误,或 cookies 过期 | 删除cookies.pkl重新运行,或改用--mode qr扫码登录 |
| 提示"票价未填写, 请选择票价" | ticket_price与实际档位对不上 | 打开演出页核对真实售价,按整数填写 |
| Chrome 窗口弹不出来 | ChromeDriver 缺失或版本不匹配 | 下载对应驱动,按系统改名,放到项目根目录 |
| 反复出现"参数解析异常" | 站点前端 JS 更新,正则规则失效 | 检查tools.py中get_api_param的正则是否还能匹配 |
| 刚启动就提示"该票价已经售空" | 票已卖完,或 item_id 指到了错误城市 | 重新核对演出 URL 里的 item_id 和开售时间 |
最后说句实在话:脚本压缩的是"人眼发现、手动点击"这段时间,能不能买到还是由库存总量和你的网络状况决定,它只能提高"按钮变绿时请求已经在路上"的概率,不保证必中。我的建议是先用一场不热门的演出把登录、轮询、下单全流程完整跑一遍,确认每一步都正常,再去面对真正的开售时刻。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考