大麦网自动抢票脚本 Python 上手实录:从装环境到提交订单的完整流程
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
这是一篇关于 Automatic_ticket_purchase 大麦网自动抢票脚本的上手记录。作者 MakiNaruto 用 Python 把"登录、等开票、选票、下单"这一串人工操作拆成了接口调用,脚本只在登录时用浏览器,其余环节全部走 HTTP 请求,省去了旧版逐一点按钮、等页面加载的开销。下面按我实际跑通它的顺序讲:先看它现在处于什么状态,再讲流程原理,最后才是安装、配置和踩坑记录。
先说清楚现状:这个项目还处在什么状态
翻 README 第一行就是"已停止维护"。原因写得比较坦诚:大麦大部分购买链路已经迁移到手机端,仅靠这套 PC 接口已不够,需要配合抓包处理,作者暂无更新计划。所以我对它的定位是:一个结构清晰、值得完整读一遍的票务流程实现样例,而不是"装上就必然抢到"的工具。如果你想动手研究接口签名、状态轮询、cookie 会话管理这套东西,它仍然能完整跑起来。
版本上有一个演进值得注意:
- V2.0 重构:放弃页面按钮点击,登录环节用 selenium 打开页面完成,之后的取参、下单全部用 requests 直连接口;
- V2.1:新增选座购买分支,限制是只能抢指定价位的座位,且暂不支持连坐。
仓库文件不多,核心就三个:主逻辑 Automatic_ticket_purchase.py、登录与参数工具 tools.py、签名用的 signcode.js(通过 pyexecjs 调用,生成接口要求的签名参数)。
它内部是怎么抢的:一个"看状态决定动作"的循环
理解了这个循环,后面配置和排错就都好懂了。run()方法里的逻辑大致是:
- 登录:优先读本地
cookies.pkl;没有才走账号密码或扫码登录,成功后把 cookies 存下来,下次直接用; - 轮询状态:不断请求商品详情接口,读取目标票价对应按钮的文案;
- 按状态分支:
- "即将开抢" → 什么都不做,继续轮询;
- "立即购买" → 走
step2_click_buy_now拿订单参数,进入下单; - "缺货登记" → 票已售空,直接退出;
- "选座购买" → 拉取座位图数据,过滤出目标价位下可售的座位,自动挑选后走选座下单分支;
- 提交订单:
step3_submit_order里会把你配置的观演人和接口返回的观演人列表做核对,匹配上就标记使用,POST 提交;成功时控制台打印支付宝订单号和支付链接,提示去"我的大麦 → 交易中心"确认订单。
也就是说脚本并不"点"任何东西,它盯的是按钮文案变化,把状态机跑到了哪一步就执行哪一步的接口。
环境准备:一条安装命令加一个驱动文件
依赖只有四个包,安装一步到位:
pip install -r requirements.txt对应 requirements.txt 里的 beautifulsoup4、requests、selenium 和 pyexecjs。
然后下载与你 Chrome 版本匹配的 ChromeDriver,放到项目根目录,并按系统重命名,这是 tools.py 里account_login函数写死的查找逻辑:
- Windows →
chromedriver_windows - Linux →
chromedriver_linux - Mac →
chromedriver_mac
改名这一步非常多人漏掉,漏掉后现象就是登录环节直接报错,后面"踩坑"一节会再提到。
运行前需要填好的四个配置项
打开 Automatic_ticket_purchase.py 的DaMaiTicket.__init__,抢票必须改的只有这几处:
self.item_id: int = 610820299671 # 商品id self.viewer: list = ['viewer1'] # 在大麦网已登记的观演人 self.buy_nums: int = 1 # 购买数量, 需与观演人数量一致 self.ticket_price: int = 180 # 购买指定票价item_id 怎么找:在大麦网打开你要抢的演出详情页,地址栏里id=后面那串数字就是,注意同一演出不同城市站的 item_id 不一样,别抄串场次。
viewer 怎么填:到大麦"我的大麦 → 常用购票人管理"里看,脚本要求姓名与页面上登记的完全一致(代码里做的是字符串全等比对,错一个字整个流程会在第三步终止)。
另外buy_nums必须等于 viewer 列表长度,run()开头第一件事就是校验这一点,不等直接退出。
实际运行:两条命令覆盖两种登录
# 默认:账号密码登录(在代码里填好 login_id / login_password) python Automatic_ticket_purchase.py # 或指定扫码登录 python Automatic_ticket_purchase.py --mode qr我实际跑下来的顺序是:首次运行没有 cookies,走账号登录,成功后生成cookies.pkl;第二次运行直接加载 cookie 跳过登录,控制台会持续打印轮询到的状态。如果中途提示"登录失败",作者给的排查建议是删除 cookies 文件重新登录——cookie 过期是这个机制最常见的副作用。
我实际踩到的几个报错
- 驱动找不到:chromedriver 没重命名成
chromedriver_windows这类固定名字,或没放根目录。改文件名即可,代码不会自动搜索 PATH。 - 观演人校验不通过:控制台提示"请检查输入的观演人信息与大麦网观演人信息是否一致"。多音字、空格、生僻字替换都可能导致字符串比对失败,直接复制购票人管理页里的原文最稳。
- "购买数量与实际观演人数量不符":
buy_nums和viewer长度没对齐,改配置即可。 - 解析下单参数异常:
step2里正则window.__INIT_DATA__没匹配到时,说明接口返回结构变了,脚本会打印原文供你重新解析——这也是"停止维护"背景下最需要自己兜底的地方。
使用之前该想明白的几件事
合规边界:项目采用 MIT 协议,README 明确仅用于个人参考学习,商业用途(尤其是黄牛倒卖)后果自负。从使用角度我也建议:只对合法购票账号操作,控制轮询频率到接口默认节奏,不用于批量刷单或转售,尊重平台用户协议,也尊重其他购票者。
预期管理:如前所述,项目已停止维护且部分购买链路已移至手机端。把它当学习材料去读接口设计(登录会话管理、按钮状态轮询、动态参数拼接、execjs 签名调用)收获很大;指望它原样用于当前在售的热门场次,大概率需要自己基于抓包做二次适配,这一点要有心理准备。
小结
Automatic_ticket_purchase 这套大麦网自动抢票脚本的价值不在"一键必中",而在于它用很薄的代码把一次完整购票拆成了可观察、可断点、可替换的接口步骤:cookie 会话、状态机轮询、参数解析、观演人核对,每一环都能在 主脚本 和 tools.py 里找到对应实现。先读懂这个循环,再决定是自己适配新接口,还是拿它当模板写其他平台的流程,都比直接盲跑靠谱得多。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考