☰
Python 大麦网自动抢票脚本使用指南:5 个核心参数与运行原理一次讲清
2026/9/30 10:51:15 网站建设 项目流程

Python 大麦网自动抢票脚本使用指南:5 个核心参数与运行原理一次讲清

【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase

这个项目的本质是:只在登录环节使用一个真实浏览器,之后改用 Python 的 requests 直接请求大麦网 PC 端接口,完成查票、确认订单、提交订单的全过程。本文基于 Automatic_ticket_purchase 仓库(大麦自动抢票脚本 V2.1),从依赖安装、chromedriver 配置、核心参数、运行日志解读,讲到使用它之前必须知道的维护现状。

先下结论:它适合谁,又卡在哪

README 的第一行就写着「已停止维护」:大部分购买方式已迁移到手机端,需配合抓包处理,且暂无更新计划。这一句基本决定了它的定位——更像一个教学性质的完整样例,而不是可以长期依赖的生产工具。

它做的事情:

  • 登录用 Selenium 打开真实 Chrome,支持账号密码和扫码两种方式
  • 查票、下单、选座全部走接口请求,不等页面元素渲染,显著减少中间等待
  • V2.1 增加了选座购买,但只支持指定单一价位选座,不支持连坐

它不做的:不自动支付。下单成功后只输出支付宝订单号和支付链接,最后付款一步是手动完成;也不是热门演出的「必抢」工具,结果取决于库存、网络和风控状态。

所以它适合想学接口逆向、Selenium 与 Cookie 管理的人;不适合期待实际抢到热门演出票、或只能在手机端完成购买流程的人。

环境准备:依赖与 chromedriver 配置

依赖清单很短,见 requirements.txt:requests、selenium、beautifulsoup4、pyexecjs 四个包。注意 selenium 被锁定在 3.141.0,tools.py 里的登录代码用的是旧版 APIfind_element_by_name,自行升级到 Selenium 4 会直接报错,建议按原样安装。

驱动方面,代码会按系统在当前工作目录下找固定文件名的驱动:chromedriver_linux、chromedriver_windows、chromedriver_mac。因此要从官方渠道下载与本机 Chrome 版本匹配的 chromedriver,改名后放进项目根目录,也就是你将来运行脚本的那个目录。

git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt

仓库本身是只读的,后文所有配置与改动都发生在你克隆下来的本地副本里。

最小可运行路径:改参数到启动

需要修改的地方只有一处:Automatic_ticket_purchase.py 里__init__方法的前几个字段。

self.login_id: str = 'your_account' # 大麦网登录账户 self.login_password: str = 'your_password' self.item_id: int = 610820299671 # 商品 id self.viewer: list = ['李四'] # 已登记的观演人 self.buy_nums: int = 1 # 需与观演人数量一致 self.ticket_price: int = 180 # 目标票价

然后启动:

python Automatic_ticket_purchase.py # 账号密码登录 python Automatic_ticket_purchase.py --mode qr # 扫码登录

首次运行没有本地缓存,会弹出浏览器登录页;登录成功后 Cookie 存为当前目录下的cookies.pkl,之后的运行直接读文件,不再经过浏览器。

关键参数对照表

参数作用示例
item_id演出商品 id,每个城市、每个场次不同,从演出详情页地址栏获取610820299671
viewer大麦「常用购票人」中已登记的姓名列表,脚本按姓名精确匹配['李四']
buy_nums购买数量,必须等于viewer列表长度,否则启动即退出1
ticket_price只抢这个价位的票,与票档列表中任何 sku 都对不上时不会下单180
login_id/login_password仅账号登录模式使用,--mode qr时不生效—

item_id的取法:打开目标场次详情页,看地址栏,id=后面的那串数字就是它。

观演人名单需要提前在账户里维护好,viewer里填的必须是「常用购票人」表中已存在的姓名。

姓名对不上不会报错崩溃,而是在提交订单前打印一行提示然后终止,所以开票前最好手动核对一遍。

内部机制:三步下单与开售轮询

主流程在run()方法里,可以拆成四段看。

第一段是登录态。优先读cookies.pkl;没有则按--mode走账号或扫码登录,再用一次个人信息页请求验证 Cookie 是否有效。登录代码里特意关掉了浏览器的自动化标记(excludeSwitches与disable-blink-features),目的正是降低被滑块风控拦截的概率。

第二段是查票轮询。step1_get_order_info请求详情页的 subpage 接口,取出目标价位对应 sku 的按钮文案,主循环while True就靠它分支:文案是「即将开抢」就继续循环;「缺货登记」判定售空退出;「立即购买」进入下单;「选座购买」进入选座流程。这里值得留意:循环里没有任何 sleep,开售前的请求频率只受网络往返时间限制,属于持续高频轮询。

第三段是确认订单。step2请求 orderConfirm 页面,从返回的window.__INIT_DATA__里解析出订单表单。选座场景更复杂:mtop 接口需要 sign 参数,由 signcode.js 经 execjs 编译执行算出,随后脚本拉取座位图、过滤掉不可售和价位不符的座位,按顺序取前 N 个可售座位——没有连座逻辑。

第四段是提交。step3_submit_order在表单里按姓名匹配观演人、标记isUsed,然后 POST 到 createOrder 接口。返回success且带alipayOrderId才算成功,此时打印订单号和支付宝支付链接。

脆弱点也在这里:所有接口参数和解析规则都是针对 PC 端前端逆向出来的,大麦更新前端 JS 后,get_api_param()这类正则解析就可能失效,而项目已停止维护,没有官方修复。

运行日志解读

脚本的输出都是---------- 文案 ----------这种格式,对照着看基本能自诊断:

  • 「购买数量与实际观演人数量不符」:buy_nums和len(viewer)不等,改参数即可。
  • 「登录失败, 请检查登录账号信息」:先删掉本地的cookies.pkl再运行,损坏的缓存文件会一直复现这个问题。
  • 「请检查输入的观演人信息与大麦网观演人信息是否一致」:姓名与登记信息有出入,逐字核对。
  • 「手慢了,该票价已经售空」:对应「缺货登记」状态,脚本会直接退出。
  • 「获取购买必备参数异常」:页面返回结构变了,正则没匹配到,属于接口变动。
  • 「抢票成功」:后面跟着 alipayOrderId 和支付链接,去「我的大麦 - 交易中心」完成支付。

常见问题定位法

按出现频率从高到低排:驱动报错几乎都是 chromedriver 文件名或版本问题——确认改名正确、放在运行目录、大版本与本机 Chrome 一致。登录页出现滑块且无法继续,多半是驱动与浏览器大版本不匹配,先升驱动再怀疑代码。get_api_param()里抛re相关异常,说明大麦前端 JS 更新了,tools.py 里的正则不再匹配,这部分只能自己在本地副本里跟着改。选座流程提示「获取sku_id失败」,是ticket_price不在该场次的选座价目列表里。登录成功但后续频繁失败,通常是账号触发风控,建议改用扫码登录,不要再去提高轮询频率。

使用边界声明

仓库自带的免责声明只用于个人参考学习,禁止商业用途。这类脚本对平台服务条款处于灰色地带,高频轮询与接口重放都可能触发风控,甚至带来封号风险,频率要克制。项目已停止维护,接口链路随时可能失效,它真正的价值在于能顺着一个完整样例,看清「登录态维护、接口参数逆向、下单链路编排」这一整套是怎么落地的。

【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询