大麦网抢票脚本 3 步跑通:Selenium + Requests 混合架构实践
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
倒计时归零,页面弹出一行"库存不足"——手动抢票输在物理极限上,而不是运气上。这个开源项目给出的思路是典型的 Python 自动化抢票:让大麦网抢票脚本替你盯着按钮状态,状态一变就立刻走接口下单,人只负责登录那一瞬间。
混合架构:让 Selenium 只干它必须干的活
这个仓库的取舍很直接:页面渲染最重的环节只有登录,登录之后的一切都不再碰页面。
- Selenium:仅用于打开登录页、切进登录 iframe、填账号或等扫码,登录态以 cookies 形式落盘到
cookies.pkl,下次运行直接加载。 - Requests:轮询按钮状态、拿下单参数、提交订单,全部是对
detail.damai.cn/buy.damai.cn接口的直接请求,省掉了页面加载、元素定位和动画等待。
核心循环在 Automatic_ticket_purchase.py 的run里:反复拉取票档按钮文本,"即将开抢"就继续等,一旦跳到"立即购买",立即连发"获取购买参数 → 确认订单页 → 提交 createOrder"三步请求。选座类场次还会拉取座位表、按目标价位过滤可售座位再下单。tools.py 里另有两个"脏活":get_api_param从大麦网前端 JS 里正则抠出下单接口的参数模板,get_sign_code借 execjs 执行 signcode.js 生成选座接口签名——平台前端一旦改版,基本就改这两处。
最短部署路径:3 个动作跑起来
动作一:拉代码
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase动作二:装依赖
pip install -r requirements.txtrequirements.txt 里就 4 个包:selenium、requests、beautifulsoup4、pyexecjs。
动作三:放 ChromeDriver。下载与本机 Chrome 版本匹配的驱动,重命名后放到项目根目录:Windows 改名为chromedriver_windows,macOS 改名为chromedriver_mac,Linux 用chromedriver_linux。代码按platform.system()自动找文件,名字不对就是启动即报错。
跑起来:
python Automatic_ticket_purchase.py --mode qr--mode缺省走账号密码登录(填login_id/login_password),--mode qr走扫码,短信同理。登录成功后 cookies 自动存盘,之后重复运行免登录。
核心参数速配:三个值决定生死
参数都集中在DaMaiTicket.__init__,改完再启动。
| 参数 | 含义 | 怎么拿 |
|---|---|---|
item_id | 场次的唯一标识,决定脚本打哪个接口 | 详情页 URL 里id=后的数字 |
viewer | 观演人姓名列表,须与大麦网常用购票人逐字一致 | "我的大麦 → 常用购票人管理"里抄 |
ticket_price | 目标票价(整数),脚本按它匹配 sku | 详情页票档列表里的价格 |
另外buy_nums必须等于viewer的长度,不等时run直接拒绝执行。
item_id 提取方法
打开目标场次的详情页,看地址栏,detail.damai.cn/item.htm?id=610820299671&...里id=后面那串数字就是。注意同一巡演不同城市的站是不同item_id,别拿别站的值。
观演人配置核对
viewer填的名字必须和账户里"常用购票人"完全一致,且该观演人已完成实名认证。提交订单前脚本会拉取账户观演人名单做交集比对,对不上会直接打印"请检查输入的观演人信息"并终止——这一步是保护,不是 bug。
成功率策略:快、稳、多路
真正的差距不在代码,在开售前后那几十秒的执行质量。
- 提前进待命:开售前 30 分钟启动脚本,把登录态、
item_id、观演人、票价全部核对完,开售时脚本已经在轮询状态。 - 轮询节奏有讲究:
while True循环每次拉一次按钮状态,间隔太稀会错过"立即购买"窗口,太密则容易触发风控。0.3–0.5 秒一次是常见的起点,再压之前先想想自己的网络质量。 - 多价位 + 多观演人留冗余:
viewer里预置 2–3 个已实名观演人;目标价位秒光时,与其干等,不如让脚本盯一个次级价位。 - 多账号多路:热门场次可以准备多个实名账号,各自登录存好 cookies 并行跑。脚本本身单进程单账号,多路并行要自己在外层写一层调度。选座场次目前只支持指定价位下单,且不支持连坐,开售前确认好场次类型。
踩坑速查:现象 → 原因 → 解决
- 驱动加载失败→ ChromeDriver 与 Chrome 浏览器版本不匹配 → 按当前 Chrome 版本重新下载,改回
chromedriver_<平台>再启动。 - 登录后立刻提示登录失败→
cookies.pkl里的登录态已过期或失效 → 删掉该文件,重新扫码或走账号登录。 - 观演人信息不匹配→
viewer与常用购票人姓名不逐字一致,或未过实名 → 去"常用购票人管理"核对姓名,确认观演人已实名。 - 接口参数解析失败→ 大麦网前端 JS 改版,tools.py 里
get_api_param的正则匹配落空 → 参照该函数更新正则,或拉取新维护的版本。README 顶部也写了现状:部分购买流程已迁到手机端,脚本需配合抓包自行跟进。
这个工具的定位是给自己和家人省下单时间,仅限个人购票场景使用;用于批量刷单或商业倒卖就越过了边界,请求频率也请控制在个人正常使用的范围内。
脚本解决的是"手比机器快"这一段,剩下的短板在配置上:开售前把item_id、观演人、票价逐项核对一遍,比多写任何优化都管用。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考