大麦网抢票自动化:Python脚本辅助购票实践
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
Automatic_ticket_purchase 是一个面向大麦网的 Python 抢票自动化脚本:登录环节用 Selenium 操作真实浏览器,之后的下单、选观影人等操作改用 requests 直接请求购票接口。如果你想把购票流程自动跑一遍,或者想看看"浏览器 + API"的混合自动化怎么做,这个项目可以参考。
📦 项目速览:把购票流程交给脚本执行
一句话说清:这个项目把"登录大麦、盯开票、点购买、填购票人"这几步手动操作变成一个 Python 脚本——配好参数后,程序自动轮询票务状态,并在可购时提交订单,适合想自动跑购票流程、或想拆解购票接口链路的人。需要留意的是,README 已声明项目停止维护,且多数购买流程已迁至手机端,实际接口可能有变动,学习参考意义大于直接可用。
🧩 设计思路:登录用Selenium,下单用API
核心机制是按操作特性分工:浏览器操作稳定但慢,API 调用快但登录难,所以各干各的。
- 登录阶段(Selenium):
tools.py里的account_login用 Selenium 打开登录页,支持账号密码和扫码两种方式;登录成功后把 cookies 存进cookies.pkl,下次运行直接读文件,不再开浏览器。 - 抢票阶段(requests):
Automatic_ticket_purchase.py里的DaMaiTicket类把流程拆成三步——step1_get_order_info轮询目标场次状态,step2_click_buy_now拉取订单信息(选座场次走选座分支),step3_submit_order按名字匹配购票人并提交订单。 - 时机控制:step1 在一个循环里反复查询,状态是"即将开抢"就继续等,变成"立即购买"才进入下单;选座购买还会拉取座位数据,过滤出目标价位下的可售座位再下单。
还有个细节:大麦接口的部分参数(比如 sign 签名)不是写死的,tools.py会动态抓取页面 JS 提取参数,再调用signcode.js里的函数计算签名,这也是requirements.txt里需要pyexecjs的原因。
⚙️ 部署与配置:获取代码、装依赖、填参数
第一步,获取代码:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase第二步,安装依赖:requirements.txt里就 4 个包,覆盖浏览器自动化、HTTP 请求和 JS 执行。
pip install -r requirements.txt另外需要下载与浏览器匹配的 ChromeDriver,按系统重命名为chromedriver_windows、chromedriver_linux或chromedriver_mac,放到项目根目录——tools.py的驱动路径逻辑就是按这个名字找的。
第三步,配置参数:全部参数在Automatic_ticket_purchase.py的__init__方法里,共 5 项。
| 参数 | 填什么 | 从哪来 | 注意什么 |
|---|---|---|---|
login_id/login_password | 大麦账号和密码 | 自己的账户 | 首次登录用,之后读 cookies 文件 |
item_id | 商品数字 ID | 商品页 URL 中的id | 不同城市、场次 ID 不同 |
viewer | 购票人姓名列表 | 大麦"常用购票人管理"已注册的名字 | 必须与页面完全一致 |
buy_nums | 购买张数 | 想买的票数 | 必须等于viewer里的人数 |
ticket_price | 票价(元) | 场次详情页"票价" | 决定脚本锁定哪个 sku |
🔄 核心工作流:从配置参数到确认订单
1. 提前录入购票人:先在网页版"我的大麦-常用购票人管理"里添加购票人,脚本里的姓名就是从这里取的。
2. 选择登录方式:首次运行没有 cookies,默认账号密码登录:
python Automatic_ticket_purchase.py python Automatic_ticket_purchase.py --mode qr登录成功后 cookies 写入cookies.pkl,之后运行不再打开浏览器。
3. 运行抢票:脚本先校验登录状态,再进入轮询循环。等到"即将开抢"时持续重试,状态切到"立即购买"就立刻按顺序打订单接口,中间不等人操作。
4. 确认支付:提交成功后控制台会打印 alipayOrderId 和支付宝支付链接,再去"我的大麦-交易中心"确认订单、完成支付。
📊 实测表现:下单环节比手动快在哪
项目本身没给基准测试数据,从代码行为看,差距主要体现在下单链路上:
| 指标 | 手动操作 | 脚本操作 |
|---|---|---|
| 下单链路 | 详情页→点购买→订单页,一般 3 次以上页面加载 | 约 3 次接口调用,通常秒级返回 |
| 开票时机 | 靠人的反应速度刷新页面 | 轮询循环,状态变化即触发 |
| 购票人勾选 | 逐个核对姓名 | 按名字自动匹配勾选 |
更实际的口径是:手动受页面加载和手速限制,脚本把"发现可购到提交订单"压缩成一次网络往返的间隔。具体成功率还是看场次热度和网络,别把它当成必中工具。
⚠️ 避坑与注意事项:5个高频问题怎么处理
- 提示登录失败→ 原因通常是 cookies 失效或首次登录信息不对 → 删掉
cookies.pkl重新登录。 - 直接退出"购买数量与实际观演人数量不符"→ 原因是
buy_nums和viewer人数不等 → 让两者一致。 - 提示观演人信息不一致→ 名字与官网录入的购票人对不上(多了空格也算) → 照页面原文改。
- 浏览器打不开或报驱动错误→ ChromeDriver 版本不匹配或命名不对 → 下载对应版本、按系统后缀重命名放到根目录。
- 一直停在"即将开抢"→ 未到开售时间或场次为预售 → 核对详情页的正式开票时间。
🔒 合规提醒
自动化工具的使用受平台规则约束,请遵守大麦网用户协议和相关法律法规,脚本仅用于个人学习参考,不要用于倒卖或商业牟利。作者也在 README 里声明仓库仅用于个人参考学习。
这个项目的看点不在"保证抢到",而在于把购票流程拆得很清楚:登录交给浏览器,下单交给接口,时机交给轮询。即使接口已经变动、脚本不能直接跑,这套"浏览器 + API"的分工思路也值得借鉴。下次再遇到"手动操作太慢"的场景,不妨从这里开始搭框架。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考