Python大麦网抢票脚本:5步跑通部署与关键参数说明
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
这个项目是一个Python大麦网抢票脚本:首次运行用浏览器完成登录并把cookie存到本地,之后不再依赖浏览器,直接用requests请求票务接口,当目标票价变为"立即购买"时自动完成下单与提交。核心能力是接口驱动的完整购票流程。
项目概览
脚本把大麦网PC端购票的三步(查票态→进下单页→提交订单)改写成纯HTTP请求执行,避开了页面渲染的等待。README开头注明项目已停止维护、大部分购买方式已迁移至手机端,把它当作技术学习样本比当作生产工具更合适。
完整流程:
- 读取本地cookie;没有则启动Chrome登录
- 校验登录状态,成功后保存cookie
- 循环轮询票务接口,检查目标票价状态
- 状态变为"立即购买"后调用接口创建订单
- 提交订单,输出支付宝支付链接
🚀 从0到跑通大麦网抢票脚本
环境要求:Python 3.7+、本机Chrome浏览器、Node.js(选座场景下通过execjs调用JS计算签名参数)。
- 获取代码并安装依赖:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt下载与本地Chrome版本匹配的ChromeDriver,放到项目根目录,并按系统重命名:Windows为
chromedriver_windows,Linux为chromedriver_linux,macOS为chromedriver_mac。驱动查找逻辑在 tools.py 的account_login中。修改 Automatic_ticket_purchase.py 中
__init__方法的参数,见下节。启动:
python Automatic_ticket_purchase.py # 账号密码登录(默认) python Automatic_ticket_purchase.py --mode qr # 扫码登录配置说明
所有参数都在 Automatic_ticket_purchase.py 的__init__方法中:
| 参数 | 作用 | 如何获取/填写 |
|---|---|---|
login_id/login_password | 首次登录大麦网使用的账号 | 填已注册的大麦网账号密码 |
item_id | 定位目标演出商品 | 演出详情页URL中的id参数 |
viewer | 观演人姓名列表 | 必须与账户中已登记的观演人姓名完全一致 |
buy_nums | 购买数量 | 必须等于viewer列表的人数 |
ticket_price | 目标票价(元) | 详情页对应票价档位的数字 |
获取演出项目ID:打开目标演出的详情页,在浏览器地址栏中找到id=后面的数字(例如...item.htm?...id=610820299671),这个值就是item_id。
大麦网抢票脚本中item_id的获取位置:详情页地址栏里的id参数
填写观影人:观演人需要提前在大麦网账户中登记。进入"我的大麦 → 常用购票人管理",把列表中的姓名原样填入viewer,一人一个元素,例如['张三', '李四']。
大麦网抢票脚本的viewer参数来源:常用购票人管理界面中的姓名列表
大麦网抢票脚本核心机制解析
为什么只在登录时用Selenium。早期版本靠按钮操作页面,每一步都要等待元素加载。2.0版把浏览器仅保留在登录环节(也是唯一有反自动化检测的环节),之后的票态查询、下单、提交全部改为requests直接请求接口,省掉了页面渲染开销。轮询与状态判断逻辑在 Automatic_ticket_purchase.py 的run方法中:
ticket_sku_status = ticket_info['skuPagePcBuyBtn']['skuBtnList'][sku_id_sequence]['btnText'] if ticket_sku_status == '立即购买': submit_order_info = self.step2_click_buy_now(ex_params, buy_serial_number) break为什么本地缓存cookie。首次登录成功后,cookie通过save_cookies写入cookies.pkl;再次运行时load_cookies直接读取,跳过整个浏览器启动和登录流程,cookie失效时删除该文件即可。实现在 tools.py。代价是全部接口与参数都来自对PC网页的逆向:get_api_param靠正则从大麦前端JS里提取参数,选座签名靠 signcode.js 复算,大麦前端一旦改版,对应环节就会失效。
常见问题
现象:控制台输出"登录失败, 请检查登录账号信息"。 可能原因:本地cookie过期、账号密码填写错误,或ChromeDriver版本与浏览器不匹配。 解决:删除项目根目录的cookies.pkl后重跑;仍失败则改用--mode qr扫码登录,并核对驱动版本。
现象:控制台输出"获取购买必备参数异常,请重新解析response返回的参数"。 可能原因:脚本依赖的下单接口与页面参数解析来自旧版网页,大麦前端更新后get_api_param的正则不再匹配,且项目已停止维护、没有官方修复。 解决:用浏览器开发者工具手动抓取对应接口,比对返回结构与代码中的解析逻辑,自行更新。
现象:控制台提示"请检查输入的观演人信息与大麦网观演人信息是否一致"或"购买数量与实际观演人数量不符"。 可能原因:viewer中的姓名与登记值不完全一致,或buy_nums与viewer人数不等。 解决:核对常用购票人管理界面,保证姓名逐字一致、数量相等。
进阶方向
想深入的话,建议重点看选座签名的实现:脚本通过execjs在Node中执行 signcode.js 生成mtop接口的sign参数,是"接口逆向+签名复现"的一个完整小案例。项目已停止维护,动手前建议先用一场竞争小的演出跑通完整流程,验证环境后再自行评估接口是否可用。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考