大麦网自动抢票脚本 Automatic_ticket_purchase:从零配置与原理拆解
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
开票前 30 秒你疯狂刷新页面,结果刷新出来的是登录页;等你输完账号密码再点回去,页面只剩"缺货登记"四个字。抢票拼的真的只是手速吗?其实不是——是"登录、填表、盯状态、点提交"这一长串重复动作拖累了你。开源项目 Automatic_ticket_purchase(大麦网抢票脚本)用一次登录加自动接口请求,替你把中间这些环节接过去。下面按"装好→看懂→调顺"的顺序,带你完整走一遍。
手动点抢的三个卡点
把流程摊开对比,差距就不只是"快":
| 环节 | 手动操作 | 脚本执行 |
|---|---|---|
| 登录态 | 刷新页面易触发重新登录,每次要重新走一遍 | 登录一次后 cookies 落盘复用 |
| 下单路径 | 加载页面、渲染、逐个控件点击 | 直接请求下单接口,跳过页面渲染 |
| 状态判断 | 肉眼盯按钮,发现时多半已卖空 | 循环解析票档按钮文案,命中才下单 |
根本原因可以归纳为三条:
- 登录态和页面绑定太紧:手动刷新既丢滚动位置又容易把会话打断,"刷新—重新登录"本身就在消耗时间。
- 人工链路太长:就算你 1 秒内完成点击,页面加载、表单提交这些步骤仍然要 2 秒起步,而热门票档的余量通常撑不过 1 秒。
- 状态判断靠肉眼:票是否可售、哪个价位有货,人眼无法在毫秒尺度上分辨,多数人是点了"立即购买"才知道太晚。
从克隆到跑通:5 分钟部署
按最小路径来,总共五步。
# 1. 克隆项目 git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase # 2. 安装 Python 依赖(requests / selenium / bs4 / execjs) pip install -r requirements.txt # 3. 下载与你本机 Chrome 版本匹配的 chromedriver # 按系统重命名后放到项目根目录:chromedriver_linux / _windows / _mac # 4. 在 Automatic_ticket_purchase.py 的 __init__ 中填入自己的参数(见下方示例) # 5. 启动脚本 python Automatic_ticket_purchase.py # 默认:账号密码登录 python Automatic_ticket_purchase.py --mode qr # 改为扫码登录核心参数都在Automatic_ticket_purchase.py的DaMaiTicket.__init__里:
self.login_id: str = 'account' # 大麦网账号 self.login_password: str = 'password' # 大麦网密码 self.item_id: int = 610820299671 # 演出商品 id,从详情页 URL 获取 self.viewer: list = ['李四'] # 购票人姓名,须与网站后台完全一致 self.buy_nums: int = 1 # 购买数量,等于观演人个数 self.ticket_price: int = 180 # 目标票价,只抢这个价位item_id在演出详情页地址栏的id=后面,一眼就能找到:
viewer则来自"我的大麦 → 常用购票人管理",姓名必须一字不差:
常见报错排查:
- 启动就抛
ChromeDriver ... version类异常:驱动与 Chrome 主版本号不匹配,按 Chrome 实际版本重新下载。 - 打印"登录失败, 请检查登录账号信息":确认账号密码;若是复用旧 cookies 失效,删除根目录
cookies.pkl再运行。 - 打印"请检查输入的观演人信息与大麦网观演人信息是否一致":
viewer里的姓名与购票人管理页逐一比对,注意生僻字和空格。
更完整的参数说明可直接看 README.md;接口参数的解析逻辑写在get_api_param中,前端改版后需要照着更新。
原理拆解:登录用浏览器,下单走接口
脚本为什么快?因为它只在登录这一个环节打开真实浏览器,之后的查票、下单全部用requests直发接口,省掉了页面渲染和控件定位的开销。整体流程如下:
五个核心模块,各管一段:
- 登录模块(
tools.account_login):用 Selenium 打开 Chrome 完成账号密码或扫码登录,并刻意关闭自动化标记以降低被拦截的概率。 - 登录态检查(
tools.check_login_status):请求"我的大麦"个人信息接口验证 cookies 是否有效;首次成功后把 cookies 存入cookies.pkl,后续运行不再打开浏览器。 - 参数构造模块(
tools.get_api_param):动态拉取大麦前端 JS,正则解析出下单必需的commodity_param与ex_params;选座链路还要用 signcode.js 在本地算出 mtop 接口的sign签名。 - 监控循环(
DaMaiTicket.run):反复查询目标票档,按钮文案是"立即购买"才继续,"即将开抢"则继续等,"缺货登记"立即退出。 - 下单链路(step2 → step3):串联"立即购买 → 解析订单页数据 → 提交
createOrder"三个接口,成功后打印支付宝支付链接。
进阶调优清单
登录态长效化
- 背景:cookies 会过期,过期后脚本会退回浏览器登录,浪费宝贵的开抢窗口。
- 操作:抢票前一天手动跑一次账号登录,让
cookies.pkl生成并处于有效期内;失效时删掉该文件重登即可。 - 效果:开抢当天脚本启动即通过登录校验,不弹出浏览器窗口。
选座场次配置
- 背景:部分演出走"选座购买"链路,脚本 V2.1 起支持指定价位抢座。
- 操作:确认
ticket_price与目标票价一致,buy_nums等于观演人数。 - 效果:脚本会在该价位内挑出前 N 个可售座位自动提交;注意暂不支持连座,介意座位位置的场次慎用。
开抢前自检
- 背景:多数失败其实源于参数没核对,而不是脚本不够快。
- 操作:逐项确认购票人姓名一致、数量匹配、驱动路径正确,电脑保持唤醒并用有线网络。
- 效果:把"环境问题"从失败原因里剔除,让脚本只在票源真没了时才停下。
边界与合规说明
说点实话:README 开头已声明项目停止维护,原因是大部分购买方式已迁移到手机端、PC 端链路可能失效。所以把它当教学项目看待更合适——学习 Selenium 登录、cookies 复用、接口解析和 JS 签名这四类技术,再按需改造,比直接抱幻想跑通更现实。
使用上保持克制:控制请求频率、只用于本人观演、不用于转售,并遵守平台服务条款。仓库基于 MIT License,仅限个人参考学习。
下一步:克隆仓库、装好依赖,把item_id和观演人填进Automatic_ticket_purchase.py,先跑一次登录流程验证cookies.pkl能否生成——这一关过了,剩下的就交给它循环盯票。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考