news 2026/9/29 8:32:41

大麦抢票脚本完整指南:如何用 3 个接口请求完成抢票

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大麦抢票脚本完整指南:如何用 3 个接口请求完成抢票

大麦抢票脚本完整指南:如何用 3 个接口请求完成抢票

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

Automatic_ticket_purchase 是一个大麦网抢票脚本,登录后通过 HTTP 请求完成整个购票流程,不再逐页点击。核心数据点:从查询票档到提交订单只经过 3 次接口调用,全程不渲染页面、不点按钮。

它解决什么问题:手动点击是抢票的瓶颈

手动抢票输在页面加载时间上。开售瞬间,人要先刷新页面、找到票价档位、点“立即购买”、填观演人、再点确认,任何一步页面没加载出来,票就没了。以仓库截图里的周杰伦太原站演唱会为例,页面列出 2000 元起的多个票价档位,从点到“立即购买”到订单确认至少跨 2 次页面跳转。

这个项目早期版本(V1)也用按钮点击,作者自己承认“还要等待页面元素加载,效率低下”。V2 的重构思路是:只在登录时打开一次浏览器页面,之后所有动作都改为接口请求。区别类似“亲自跑柜台取餐”和“直接打餐厅点单接口”:人手的变量是页面速度,接口请求的变量只剩网络延迟。

三步跑起来:安装、配置、启动

跑通的最短路径就三步:装依赖、配驱动和参数、运行登录,不需要额外构建步骤。

第一步:克隆并安装依赖。依赖只有 4 个:requests、selenium、beautifulsoup4、execjs。

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

注意 requirements.txt 把 selenium 钉死在 3.141.0 这个老版本,需要搭配较老的 Chrome 浏览器,新浏览器大概率不兼容。

第二步:配置 ChromeDriver 与 4 个抢票参数。下载与本机 Chrome 版本匹配的 ChromeDriver,按系统重命名为 chromedriver_windows、chromedriver_linux 或 chromedriver_mac,放到项目根目录(tools.py 的 account_login 按系统分支读取驱动路径)。然后在 Automatic_ticket_purchase.py 里填 4 个必填参数:

self.item_id: int = 610820299671 # 商品id,来自演出页地址栏 self.viewer: list = ['viewer1'] # 大麦已登记的常用购票人 self.buy_nums: int = 1 # 数量,必须与观演人数量一致 self.ticket_price: int = 180 # 目标票价档位

item_id 是打开演出详情页后地址栏里 id= 后的那串数字,每个城市站对应不同值:

第三步:首次运行。

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

首次会弹出 Chrome 窗口完成登录,登录态保存到 cookies.pkl,之后运行就不再打开浏览器。

登录态是整条流水线的入口,拿到它之后,脚本进入真正的抢票决策环节。

它是怎么工作的:凭证缓存、状态轮询、接口签名三层

整个抢票流程可以拆成三层:凭证获取、抢票决策、订单提交,每层都对应一个可独立替换的模块。

第一层:凭证获取与缓存。Selenium 只出现在登录这一步。登录成功后抓取 cookies 存入 cookies.pkl,后续 check_login_status 通过请求个人信息页、比对页面标题是否为“我的大麦-个人信息”来验证凭证是否仍然有效。类比酒店入住:拿到房卡后不用每次走前台,卡失效了再重新办一次入住。

第二层:抢票状态机。DaMaiTicket.run 的核心是一个 while 轮询循环,不断查询目标价位的按钮状态,分支只有 4 种:

if ticket_sku_status == '即将开抢': continue # 未开售,继续轮询 elif ticket_sku_status == '缺货登记': return False # 已售空,终止 elif ticket_sku_status == '立即购买': submit_order_info = self.step2_click_buy_now(ex_params, buy_serial_number) break # 开售,进入下单

像门铃一样:一直问“开售了吗”,回答“即将开抢”就继续按,回答“缺货登记”就挂电话,回答“立即购买”立刻冲进去。提交订单前,step3_submit_order 还会把填的观演人姓名和大麦后台的常用购票人做交叉校验,对不上直接报错退出:

第三层:接口参数生成与签名。前两层依赖的请求参数并不是写死的。tools.py 的 get_api_param 会实时拉取演出页的 JS 文件,用正则解析出两组下单必备参数,相当于“从餐厅内部系统里学会点暗号”,页面升级后暗号变了也能重新学。选座接口还多一道门槛:请求必须携带 sign 签名。signcode.js 是一个自包含的 MD5 变体算法,通过 execjs 引擎按时间戳每次现算一份签名,相当于“口令会随时变化的通行证”。

三层里任何一层断掉,脚本都会在明确的分支处停下并打印原因,这比黑盒工具更便于排查问题。

实测数据与适用边界:没有基准测试,状态分支表更诚实

本项目没有公开的基准测试或成功率数据,适用性要靠下面的状态分支表加 4 条已知局限来判断。

票档状态脚本行为说明
即将开抢继续轮询等待开售,循环不退出
立即购买进入下单流程核心抢票路径
选座购买拉取座位列表自动选座V2.1 新增,不支持连坐
缺货登记直接终止该价位已售空

局限需要如实说明:README 明确写着“已停止维护,暂无更新计划”,且大部分购买方式已迁移至手机端,PC 端接口可能已失效;选座仅支持单一价位、不支持连坐,buy_nums 必须与观演人数一致;selenium 3.141.0 年代久远,新版 Chrome 与 Selenium 4 生态下元素定位 API 会直接报错;get_api_param 里写死了 vue-pc/0.0.70 的 JS 地址,站点 JS 一升级,正则解析就会失败。

还需要注意:源码的轮询循环没有 sleep,提前运行过久等于高频打接口,有触发风控的可能;账号登录遇到滑块需要人工介入。

边界说完,这个项目仍然有明确的高价值用途,下面按场景拆解。

落地场景与进阶调优:3 个高频用例

项目的价值集中在 3 个场景,前两个是功能场景,第三个是学习场景。

  1. 不选座抢票(演唱会)。填好 item_id 和票价档位,开售时脚本自动完成查询、下单、提交,人不用守在页面前。
  2. 选座抢票(话剧、体育)。通过带签名的 mtop 接口拉座位列表,按“楼层-排-列”顺序自动挑前 buy_nums 个可售座位,适合不在意具体座位只求有票的场景。
  3. 接口自动化学习样例。登录、JS 参数解析、签名生成、订单提交是一条完整链路,适合学习如何把一个网页流程改造成接口流程。

常见坑可以对照 3 项检查:

检查项期望状态异常时处理
cookies.pkl文件存在且登录态有效删除后重新运行,触发重新登录
chromedriver版本与 Chrome 一致浏览器白屏或崩溃,重下驱动并重命名
启动时机开售前 1~2 分钟过早启动等于高频轮询,风控风险上升

另有两条建议:开抢前先在页面核对 item_id 与观演人姓名,参数错配会直接报错退出;建议用 --mode qr 扫码登录,避免把账号密码明文留在代码里。若确实需要提前预热,建议在轮询循环里自行补一个 sleep,把请求频率降下来。

选型建议与展望

一句话结论:想学接口自动化、或以学习为目的验证 PC 端抢票链路的开发者值得读;需要持续维护、手机端购票或商业用途的团队,不建议使用。

这个项目的价值在于“代码极少、链路极全”:700 多行 Python 加一个 JS 签名文件,完整演示了“登录→选价位→填观演人→下单”这个网页全流程如何收敛成 3 次接口调用。其中 get_api_param 的 JS 动态参数解析和 signcode.js 的签名生成,是两个可以平移到其他同类站点上的动手点,也是普通爬虫教程里很少覆盖的部分。使用前请确认目标演出仍支持 PC 端购票,遵守平台条款;仓库定位是个人学习参考,把它当作一份可读的接口自动化教材,比当作生产工具更合适。

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

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

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

C++函数模板实现数组排序输出:类型抽象与泛型编程入门

1. 题目背后的真实意图:为什么数组排序要扯上函数模板不知道你有没有这种感觉:明明就是一道“把数组排个序再输出”的练习题,偏偏题目后面要加个括号,写上“函数模板”四个字。很多同学第一反应是“哦,就是用一个模板来…

作者头像 李华
网站建设 2026/9/29 8:28:20

2026张掖电气检测机构排名 TOP5 CMA 资质机构提供防爆设备检测+防爆安全检测 联系方式推荐

张掖的电气防爆检测市场近年来机构数量激增,化工园区、油库加油站、矿山厂区、制药企业及危化品仓储场所的业主们,面对防爆电气安全排查与生产验收任务时,常陷入选择困境。大量无资质机构出具的报告在应急管理部门核查中屡屡碰壁,…

作者头像 李华
网站建设 2026/9/29 8:27:51

增程汽车AVL Cruise仿真模型与恒功率控制策略解析

1. 增程汽车 cruise 仿真模型的定位与设计拆解先说结论:增程汽车仿真模型 恒功率控制,这是目前做混动/增程整车预研和架构验证时性价比最高的一套组合。cruise 在咱们汽车圈子里指的是 AVL Cruise,一套经典的整车纵向动力学仿真工具。很多人…

作者头像 李华
网站建设 2026/9/29 8:27:37

迅时FXO网关对接Asterisk的协议级配置与排错指南

简介:本资源是一份面向通信与VoIP系统集成工程师、开源PBX部署人员及Linux语音平台学习者的实操技术指南,聚焦迅时FXO口网关与Asterisk开源IP PBX的三类典型对接场景:局域网直连拨号、网关注册式中继接入、以及外线呼入IVR分机路由。内容覆盖…

作者头像 李华