大麦网抢票脚本 Python 实战:配好 4 个参数,让程序完成从登录到下单
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
大麦网抢票脚本用 Python 把登录、盯票、下单整条链路自动化:开售前配置好账号、场次和观演人,开抢时由程序轮询状态并提交订单,人只负责最后的支付。适合会用 pip、愿意先读懂代码再上手的用户。
先看它替你干了什么:一条自动化购票流水线
整个仓库很小,核心就三个代码文件:
- Automatic_ticket_purchase.py:主流程,
DaMaiTicket类里按顺序执行"获取下单信息 → 点击购买 → 提交订单" - tools.py:浏览器登录、cookie 存取、接口参数解析、选座相关逻辑
- signcode.js:选座接口的签名算法,通过 execjs 从 Python 调用
把执行链路拆开看是四步:
- 登录阶段用 Selenium 打开真实浏览器(全流程唯一需要浏览器的环节),登录成功后把 cookie 校验一遍,写入
cookies.pkl - 之后每次运行只要
cookies.pkl还在,就直接复用登录态,跳过浏览器登录 - 进入紧密循环,反复请求目标价位的购买按钮状态(代码里的
while True没有固定间隔,实际节奏由接口往返耗时决定) - 一旦读到"立即购买",立刻组装订单参数提交,成功后终端打印支付宝支付链接
有两点要提前知道:README.md 明确标注项目已停止维护(大部分购买方式已迁移到手机端);另外脚本的接口参数是从大麦前端 JS 里正则解析出来的(见tools.get_api_param),页面一旦改版就可能解析失败。所以把它当作 requests + Selenium 的完整学习样本更合适,而不是稳抢工具。
环境准备:依赖之外,还要放一个 ChromeDriver
python --version git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txtrequirements.txt 里只有四个依赖:requests、beautifulsoup4、selenium、pyexecjs,版本都比较老,用独立虚拟环境安装可以避免污染主环境。
ChromeDriver 是额外的一步:代码会按系统从项目根目录找名为chromedriver_windows/chromedriver_mac/chromedriver_linux的驱动文件。你需要下载与本机 Chrome 版本匹配的驱动,按上述名字重命名后放到项目根目录即可。登录完成后浏览器就可以关掉了,后续请求全部由 requests 发起。
运行方式只有两种:
python Automatic_ticket_purchase.py # 默认账号密码登录(需先在代码里填账号密码) python Automatic_ticket_purchase.py --mode qr # 打开页面后扫码登录🎫 大麦网抢票脚本怎么配置:item_id、观演人与票价
所有参数都写在 Automatic_ticket_purchase.py 的__init__里:
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 # 购票数量,需与观演人数量一致 self.ticket_price: int = 180 # 目标票价item_id 怎么找:地址栏里的场次编号
item_id 是场次在大麦系统里的唯一编号,同一巡演不同城市就是不同的 item_id。打开对应演出的详情页,地址栏里id=后面的那串数字就是它:
观演人名单怎么对齐
viewer列表里的名字必须和大麦账户"常用购票人管理"中的姓名逐字一致。脚本在提交订单时会拿订单接口返回的观演人名单做比对,只要有一个字对不上,就会打印"请检查输入的观演人信息"并直接放弃下单:
数量和票价的两个硬约束
buy_nums必须等于viewer列表长度,不一致时run()在开始前就会退出ticket_price必须是该场次真实存在的票档,否则脚本在第一步找不到对应 sku,会反复提示"票价未填写, 请选择票价"
开抢瞬间脚本在判断什么:四种按钮状态对照
主循环每一轮都从接口读取目标价位的按钮文案,然后按状态分流:
| 按钮文案 | 含义 | 脚本动作 |
|---|---|---|
| 即将开抢 | 未到开抢时间 | 继续循环,下一轮再查 |
| 立即购买 | 随座票开售 | 立即进入下单流程 |
| 缺货登记 | 该价位已售空 | 停止并提示 |
| 选座购买 | 本场次为选座购票 | 拉取座位图,挑可售座位后再下单 |
选座分支比随座复杂:脚本会调用选座接口获取场馆布局和座位实时状态,过滤出"目标价位且未售罄"的座位,再按序取够buy_nums个(目前只支持一个目标价位,也不支持连坐)。买随座票时这个分支不会触发。
一个使用建议:不要自己再叠加并行重试。单线程的顺序轮询已经接近正常用户的请求节奏,人为加并发只会让请求特征更容易被识别。
提高成功率:开抢前值得做的几件事
- 账号侧信息提前补齐:观演人、证件类型、收货地址都要在大麦里填好,脚本只负责填订单参数,基础信息缺什么就卡在哪
- 用注册时间较长、使用正常的账号,开抢前把个人信息页、购票人列表完整过一遍
- 系统时间与标准时间源同步,开抢时间精确到秒
- 用稳定的网络连接,条件允许时有线网络比 Wi-Fi 更可靠
- 开抢时段终端保持待命:登录环节若出现滑块或验证,人工完成后再看脚本继续,脚本的设计里留了这种人工干预口
- 抢票成功后终端会打印支付宝支付链接,尽快完成支付,再到大麦"交易中心"核对订单
常见报错对照:登录失败、观演人不匹配、参数解析异常
| 终端提示 | 可能原因 | 处理办法 |
|---|---|---|
| 登录失败, 请检查登录账号信息 | 账号密码错误,或登录页结构变化 | 改用--mode qr扫码;仍失败则删除cookies.pkl重来 |
| 请检查输入的观演人信息与大麦网观演人信息是否一致 | viewer 与平台记录不一致 | 到"常用购票人管理"逐字核对姓名 |
| 获取购买必备参数异常 | 大麦页面改版,正则解析失败 | 对照 tools.py 里的解析代码检查返回内容 |
| 购买数量与实际观演人数量不符 | buy_nums 与观演人数不一致 | 修正参数后重跑 |
| 该票价已经售空 | 没赶上开抢 | 属于正常结果,不是故障 |
上面这类问题基本分两种:参数类改配置即可恢复;站点改版类则需要愿意读代码去修解析逻辑。
项目已停止维护,且大部分购买流程已迁移到手机端,它现在最大的价值是抢票链路的设计思路和一套完整的接口自动化示例。请把它用于学习和研究,遵守平台规则与相关法律法规,不要用于转售牟利。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考