news 2026/8/23 15:39:06

Python大麦抢票脚本完整指南:从环境配置到自动化下单全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python大麦抢票脚本完整指南:从环境配置到自动化下单全流程

Python大麦抢票脚本完整指南:从环境配置到自动化下单全流程

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

开票前 3 秒你按下购买,页面还卡在加载,几秒后屏幕只剩"缺货登记"——这就是手动抢票的真实处境。这套大麦抢票脚本 Automatic_ticket_purchase 就是干这件事的:用浏览器完成一次登录后,全程切换为纯 API 请求,持续盯住票档状态,按钮一旦变成"立即购买"就自动走完下单流程,不需要你再碰鼠标。

🎯 项目速览:这套大麦抢票脚本是什么

  • 定位:面向大麦网(damai.cn)PC 网页端的自动抢票工具,V2.1 版本,核心逻辑集中在 核心源码(一个DaMaiTicket类)和 工具函数库 两个文件里,没有复杂架构,读完一遍就能懂。
  • 解决什么问题:人工抢票的瓶颈不在"手速",而在"浏览器要渲染页面、人眼要确认状态"。脚本把这两件事都省掉——登录之外的一切操作都直接打接口,毫秒级完成。
  • 核心亮点
    • 双引擎设计:Selenium 只负责登录(账号密码 / 扫码 / 短信),抢票阶段完全用 Requests 直连 API;
    • Cookie 复用:首次登录后把 Cookie 存进cookies.pkl,再次运行不再弹浏览器;
    • 状态机监控:循环检查目标票档的按钮文案("即将开抢 / 立即购买 / 缺货登记 / 选座购买"),自动决策下一步;
    • V2.1 支持选座购买:自动拉取座位图、过滤可售座位、按顺序选座(暂不支持连坐)。
  • 一句实话:README.md 顶部明确标注"已停止维护"——大麦的大部分购买流程已迁移到手机端,纯 PC 网页链路需要配合抓包才能维持。把它当作学习"浏览器自动化 + 接口调用"混合架构的优质范本来看,价值比当工具更大。

🚀 快速上手:大麦抢票脚本安装与首次运行

安装依赖与配置 ChromeDriver

# 1. 克隆项目 git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase # 2. 安装依赖(selenium 3.141.0 / requests / beautifulsoup4 / pyexecjs) pip install -r requirements.txt

注意一点:项目锁定的 selenium 是 3.141.0 老版本,必须手动指定 ChromeDriver 路径。去 ChromeDriver 官方下载页取与你 Chrome 版本匹配的驱动,按系统重命名后放到项目根目录:

chromedriver_linux / chromedriver_windows / chromedriver_mac

对应 tools.py 里account_login函数的查找逻辑,命名不对浏览器就打不开。选座功能还会用到execjs执行 JS 签名,如果你要跑选座分支,需另外装一个 Node.js 运行环境。

如何获取 item_id 并配置抢票参数

编辑 Automatic_ticket_purchase.py 的__init__,一共 6 个参数:

self.login_id: str = 'account' # 大麦账号(账号登录方式必填) self.login_password: str = 'password' # 大麦密码 self.item_id: int = 610820299671 # 商品ID:同一场演出每个城市都不同 self.viewer: list = ['你的姓名'] # 观演人,须与大麦网登记的名字完全一致 self.buy_nums: int = 1 # 购买数量,必须等于观演人人数 self.ticket_price: int = 180 # 目标票价(元),用于匹配 sku

item_id怎么拿?浏览器打开目标演出页,地址栏id=后面那串数字就是:

viewer里填的名字必须与大麦"常用购票人管理"中登记的信息一字不差,脚本在提交订单前会用接口返回的观演人列表做一次校验,对不上会直接终止:

首次运行大麦抢票脚本

# 默认:账号密码登录(会打开 Chrome) python Automatic_ticket_purchase.py # 或改用扫码登录(推荐,避免密码明文) python Automatic_ticket_purchase.py --mode qr

首次运行会弹出浏览器登录。登录成功后 Cookie 自动写入cookies.pkl,之后的运行直接复用登录态,脚本一启动就进入抢票主循环。抢票成功后终端会打印支付宝订单号和支付链接,记得去"交易中心 → 订单管理"确认并支付。

🔍 核心机制拆解:脚本如何三步完成抢购

整体流程是一个状态机,README.md 里的流程图讲得很清楚:

登录阶段:Selenium 只做这一件事

account_login用 Chrome 打开登录页,账号模式下切进alibaba-login-boxiframe 填账号密码回车,扫码模式则等页面标题变成大麦首页标题(WebDriverWait最长等 180 秒)。拿到 Cookie 后还有一道check_login_status校验——请求"我的大麦"个人页,用 BeautifulSoup 比对<title>是否为"我的大麦-个人信息",防止"看似登录实则没登"。

这段代码里藏着两个反自动化检测的细节,值得抄走:

option.add_experimental_option('excludeSwitches', ['enable-automation']) # 关掉 webdriver 特征 option.add_argument('--disable-blink-features=AutomationControlled') # 防滑块拦截

不加这两行,navigator.webdriver暴露自动化身份,登录页大概率弹滑块卡死。

抢票主循环:盯住按钮文案做决策

登录后脚本进入while True死循环,每一轮做三件事:

  1. step1 取商品信息:请求detail.damai.cn/subpage,从返回的skuList里按ticket_price匹配出目标sku_id,同时读出该票档按钮的文案btnText
  2. 按文案分支即将开抢→ 继续循环;缺货登记→ 结束并提示;立即购买→ 进入下单;选座购买→ 进选座分支;
  3. 下单两步走step2_click_buy_now请求buy.damai.cn/orderConfirm并正则抠出页面里的window.__INIT_DATA__(订单确认页的全部数据);step3_submit_order校验观演人后 POSTcreateOrder提交。

也就是说,脚本"快"的本质不是发请求快,而是省掉了所有渲染和人工确认:你盯着页面看"能不能买"的那几秒,就是它拉开的差距。

还有一个容易忽略的细节:get_api_param函数是正则解析大麦前端 JS 源码g.alicdn.com上的 vendor.js)来提取请求参数模板的。这意味着大麦一旦升级前端 JS,这套正则就会失配——这也是此类接口型脚本最脆弱的一环,下文 FAQ 会再提。

选座分支:JS 签名 + 自动选座

选座购买的请求走mtop.damai.cn网关,必须带一个sign参数。signcode.js 里是作者从大麦页面扒下来的签名函数(本质是一段 MD5 变体实现),get_sign_codeexecjs在 Node 里执行它算出签名。

拿到签名后,脚本依次:拉取座位区数据 → 查询可售座位状态 → 按"楼层 → 排 → 列"构建座位树并过滤掉不可售座位和价格不符的座位 →pick_seat从树上按序取buy_numsseatId→ 走orderConfirm确认选座 → 提交订单。

pick_seat的实现非常朴素——遍历顺序取前 N 个可用座位,不保证连坐。想改选座策略(比如偏好中间区、连坐优先),只需重写这个函数。

🛠 进阶技巧与常见坑

  • 先跑通登录再抢票:开票前几小时先把脚本跑到"登录成功、进入监控循环"的状态,让cookies.pkl就位。开抢时脚本秒进主循环,比现场现登录省下至少几十秒。
  • buy_numsviewer数量不一致会直接退出run()第一行就校验,比如买 2 张票viewer就必须写 2 个名字。
  • 观演人校验失败是高频报错:"请检查输入的观演人信息与大麦网观演人信息是否一致",通常是名字含生僻字、多打了空格,或该观演人未在"常用购票人"里启用。
  • 登录态失效的处理:终端提示"登录失败"时,删掉cookies.pkl重新运行即可;大麦 Cookie 有效期有限,跨天使用建议重登。
  • 前端 JS 变更导致解析异常:如果 step2 打印"获取购买必备参数异常",说明window.__INIT_DATA__的结构或get_api_param里的正则匹配不上了,需要打开大麦页面重新抓一遍 JS 修 tools.py 对应函数。这是该项目停更后最大的使用障碍。
  • 网络环境:有线网络 + 关掉占带宽的后台程序。脚本循环间隔由接口响应时间决定,不要人为把间隔改得更短去"刷",高频异常请求只会触发风控。
  • 成功 ≠ 出票:脚本打印"抢票成功"只代表订单创建成功,支付宝支付链接需要在有效期内完成付款,别挂完就关终端。

❓ 常见问题 FAQ

Q:完全不懂代码,只改 6 个参数能跑吗?能,但前提环境得装对:Python、依赖、ChromeDriver 三者版本匹配。建议先用--mode qr扫码登录跑一次冷门场次,确认能走到"监控票状态"的循环,再上真正的开抢。

Q:为什么每次运行都弹浏览器?说明cookies.pkl没生成或已失效。可能原因:首次登录没等页面完全跳回大麦首页、扫码超时(脚本只等 180 秒)、或大麦 Cookie 过期。手动删除cookies.pkl重新登录一次。

Q:支持连坐吗?能指定区域选座吗?当前 V2.1 选座只按座位树顺序取前 N 个可售座位,不支持连坐,也不能指定"内场/看台 A 区"。pick_seat是个十几行的函数,按排号排序、按奇偶行配对都能自己改。

Q:项目停更了,现在还能用吗?能用于学习和低热度场次的实战,但热门演出要谨慎:大麦已将多数购买流程迁到手机端,PC 端接口和反爬策略随时可能变化,作者也明确无更新计划。把它当成一套"活的教学案例"——登录反检测、接口逆向、JS 签名复现、状态机设计,四个知识点都在几十行代码里。

Q:ChromeDriver 版本不匹配会怎样?Chrome 90 之后版本严格校验,不匹配会报session not created直接崩。原则是驱动版本与浏览器版本的大版本号一致。

Q:有封号风险吗?脚本没有做高频轰炸,请求节奏跟随接口响应,正常个人使用风险可控,但任何绕过前端直接调接口的行为都可能在风控升级时失效。建议只用于个人购票,别转售,别多账号轮询。

📌 结语

这套大麦抢票脚本的真正价值,是把"一次登录、全程接口、状态机决策、JS 签名复现"这套完整的自动化链路压缩到了 500 行以内的可读代码里——哪怕它已经停更,也足够你拆解清楚一个 Web 抢票系统是怎么跑起来的。

技术的价值在于服务自己:用它帮自己抢下一张想看很久的演出票是合理需求,但请保持对个人使用的边界——不商用、不转售、不施压服务器,尊重平台规则和其他抢票者的公平机会。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 15:38:25

FlicFlac 使用指南:Windows 下拖拽完成 7 种音频格式互转

FlicFlac 使用指南&#xff1a;Windows 下拖拽完成 7 种音频格式互转 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac FlicFlac 是一款免费、便携的 Wind…

作者头像 李华
网站建设 2026/8/23 15:35:40

Android Studio 中文界面:从安装到验证的完整操作

Android Studio 中文界面&#xff1a;从安装到验证的完整操作 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 你盯着满屏英文菜单…

作者头像 李华
网站建设 2026/8/23 15:32:32

QuickBMS 怎么用?从解包到重导入的实操路径

QuickBMS 怎么用&#xff1f;从解包到重导入的实操路径 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS 你改过游戏文件吗&#xff1f;资源全塞在 .pak 或 .arc 里&#xff0c;工具要么不存在&a…

作者头像 李华