拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

10分钟上手:用这个Python自动化抢票脚本直连大麦网API

10分钟上手:用这个Python自动化抢票脚本直连大麦网API

10分钟上手:用这个Python自动化抢票脚本直连大麦网API

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

Automatic_ticket_purchase 是一款面向大麦网的 Python 自动化抢票开源脚本:浏览器只负责登录,查票、下单全部走 API 请求,开售前无需盯屏刷页面。先提醒一句:项目 README 已声明停止维护,且多数购买流程已迁移到手机端,本文适合个人学习与非热门场次演练。下文按"原理 → 流程 → 环境 → 参数"的顺序,带你 10 分钟内跑通这套开源抢票工具。

先看结果:API 直连为什么比模拟点击快

手动抢票有多慢?从看到"立即购买"到完成点击,大约要2.3 秒,而热门场次往往在开售头几秒就被抢空,成功订单大多集中在开售后半秒内完成。脚本旧方案是全程用 Selenium 模拟点击,每一步都要等页面渲染、等元素加载,单次操作周期约1.2 秒。

V2 版本把思路整个换掉:页面只在登录时打开一次,抢票动作全部降级为requests发出的 HTTP 请求。

对比维度页面模拟(传统方案)API 直连(本脚本)
登录打开页面输入账号密码同样打开一次,随后缓存 cookies
查库存刷新页面、等元素渲染一次请求读按钮状态
提交订单连续点击两个页面一次 POST 直接下单
单次操作周期约 1.2s约 0.15s

直接收益是省掉了约80%花在页面渲染和元素等待上的请求,整个抢票动作可以压到毫秒级响应。

Python 抢票脚本内部的 4 步抢票流程

主逻辑在Automatic_ticket_purchase.py的run()方法里,核心是一个"轮询 → 命中即跳出"的循环:先查目标价位的按钮状态;显示"即将开抢"就继续轮询;状态变成"立即购买"的瞬间进入订单确认页;拿到订单参数后直接提交,成功后打印支付宝支付链接。

while True: ticket_info, sku_id_sequence, sku_id = self.step1_get_order_info( self.item_id, commodity_param, ticket_price=self.ticket_price) status = ticket_info['skuPagePcBuyBtn']['skuBtnList'][sku_id_sequence]['btnText'] if status == '即将开抢': continue # 未开售,继续轮询 elif status == '缺货登记': return # 已售空,直接退出 elif status == '立即购买': submit_order_info = self.step2_click_buy_now(ex_params, buy_serial_number) break

V2.1 还加了一条选座购买分支:需要选座的演出会先通过带签名的 mtop 接口拉取座位数据,按目标票价过滤出可售座位再走同一套下单流程。签名算法由 signcode.js 配合 execjs 执行,逻辑独立于普通抢购链路。

3分钟配好环境:从克隆到运行的完整命令

环境搭建三步:克隆仓库、装依赖、放浏览器驱动。

git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt # 启动(默认账号登录) python Automatic_ticket_purchase.py # 切换扫码登录 python Automatic_ticket_purchase.py --mode qr

依赖清单很短,只有 requests、selenium、beautifulsoup4、pyexecjs 四个包。唯一的麻烦在驱动:下载与本机 Chrome 版本匹配的 ChromeDriver,重命名为chromedriver_windows、chromedriver_mac或chromedriver_linux,放进项目根目录,脚本会按平台自动选择。

首次运行会弹出浏览器完成登录,成功后写入cookies.pkl;之后再运行直接跳过登录进入轮询。开售前一天先跑一次登录,到点挂着即可。

核心参数逐项讲解:item_id、viewer、票价从哪来

配置都集中在Automatic_ticket_purchase.py的__init__里,只需要改 5 处:

self.login_id: str = 'account' # 大麦网账号名 self.login_password: str = 'password' # 账号密码 self.item_id: int = 610820299671 # 商品id(不同城市不同) self.viewer: list = ['viewer1'] # 大麦网观演人姓名 self.buy_nums: int = 1 # 数量,须与 viewer 一致 self.ticket_price: int = 180 # 目标票价
参数获取位置常见坑
item_id演出页 URL 里的id同一巡演分城市,容易填错
viewer"我的大麦-常用购票人"姓名必须与站点逐字一致
buy_nums你要买的张数与 viewer 数量不符会直接退出
ticket_price详情页目标票价用于匹配 sku,别填错档位

item_id是最容易配错的一项。打开演出详情页,在地址栏找到id参数即可,同一个巡演不同城市的值是不同的。

viewer必须填已在大麦"常用购票人"里添加过的姓名,且逐字一致。脚本在提交订单前会做核对,姓名对不上会直接拒绝提交。

失败了按这个顺序排查

  1. 登录失败:删除cookies.pkl重跑,并确认账号参数是否正确。
  2. 提示"获取购票必备参数异常":大麦更新了前端 JS,需要重新修正 tools.py 中get_api_param()的正则。
  3. 选座接口不通:mtop 接口依赖真实设备 cookie 与签名,属于手机化迁移后的已知限制。

由于购买链路已部分迁移到移动端,这个项目当下的价值更多在于学 API 直连抢票的完整思路。建议的下一步:先通读tools.py理解登录校验和请求链路,再用一个非热门场次完整演练一次,跑通后自行评估是否向手机抓包方案扩展。

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

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

返回列表