大麦网Python自动抢票脚本:5分钟跑通
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
晚上 8 点整,演出开抢,你的手指悬在“立即购买”上方,页面转了三个圈,变灰,显示“售罄”。这是人手反应时间补不上的差距。这个大麦网自动抢票 Python 脚本的思路是:用 Selenium 打开页面完成登录,之后的每一步都通过请求直连服务器,跳过页面渲染,等状态一变“立即购买”就连发请求完成下单。
这篇文章带你从零跑通它:装环境、找商品 ID、配观影人、看懂流程,最后完整跑一遍。
克隆仓库并安装依赖
- 克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase- 安装依赖,一共 4 个:
pip install -r requirements.txt对应 requirements.txt 里的四个库:BeautifulSoup4 解析 HTML,requests 直连服务器发请求,Selenium 控制浏览器,pyexecjs 执行一小段 JavaScript——选座接口的签名要用到。
⚠️ 动手前先看一眼 README:项目已停止维护,大部分购买方式已迁移至手机端,需配合抓包处理,暂无更新计划。本文按现有代码走通全流程,适合用来学习抢票脚本的完整结构;如果实际接口已变动,需要你自己跟进修改。
拿到商品 ID
大麦网上每一场演出都有一个商品 ID,item_id,它是脚本锁定目标的关键。获取方法很简单:
- 打开你要抢的那场演出详情页
- 看浏览器地址栏的 URL
- 找到
id=后面的那串数字
别复制错:每个城市、每个日期都有独立的 ID,北京场详情页上的 ID 拿不到上海场的票。
配好观影人和购票数量参数
打开 Automatic_ticket_purchase.py,找到DaMaiTicket类的__init__方法,改这几行:
self.login_id: str = '你的账号' self.login_password: str = '你的密码' self.item_id: int = 610820299671 # 商品id self.viewer: list = ['观影人姓名'] # 大麦网已登记的观影人 self.buy_nums: int = 1 # 购买数量 self.ticket_price: int = 180 # 目标票价三个注意点:
- viewer 里的名字必须和大麦账号“常用购票人管理”里登记的实名信息完全一致,包括空格。
- buy_nums 要和 viewer 列表里的人数相等,不然脚本启动时就会报错。
- ticket_price 写具体票价数字,脚本靠它从 SKU 列表里匹配出对应的 sku_id。
观影人姓名在这个页面找:登录大麦网后,进“我的大麦” → “常用购票人管理”。
合规也在这里说清楚:项目 MIT License 明确仅用于个人参考学习,别用于商业囤票,请求频率保持正常水平即可。
看懂抢票工作流程
先交代两个名词:Selenium 是“控制真实浏览器”的库,ChromeDriver 就是让程序能驱动你本地 Chrome 的那个中间件。这个脚本只在登录环节用 Selenium——打开登录页、填入账号密码、等页面跳转,最长等 180 秒,每 0.5 秒检查一次。
登录成功后,页面的任务就完了。脚本把浏览器的 cookies 存到cookies.pkl,之后全靠 requests 直连:
- step1_get_order_info:拉取目标场次的 SKU 列表,按你填的票价匹配出 sku_id
- 循环检测状态:反复查询该票价的按钮文字——“即将开抢”就继续等,“缺货登记”直接放弃,“立即购买”进入下一步
- step2_click_buy_now:请求订单确认页,从返回数据里解析出提交订单所需的全部参数
- step3_submit_order:把选好的观影人和订单参数提交到创建订单接口,成功后终端打印“抢票成功”、alipayOrderId 和支付宝支付链接
登录和 cookies 缓存的细节在 tools.py 里;选座接口的签名逻辑在 signcode.js,由 pyexecjs 在本地执行。选座购买这条分支稍微复杂:先拉座位图数据,用 sign 参数请求座位状态,再过滤出目标价位下可卖的座位。想理解抢票脚本怎么组装请求参数,这段代码值得细读。
实战跑一遍
- 按前面两节配好参数
- 启动脚本:
python Automatic_ticket_purchase.py # 默认账号密码登录 python Automatic_ticket_purchase.py --mode qr # 扫码登录- 第一次没有
cookies.pkl,会弹出 Chrome 窗口。账号模式下脚本自动填好账号密码并提交;扫码模式用手机扫即可 - 登录成功后页面跳转到大麦首页,脚本校验登录状态,把 cookies 落盘保存
- 随后进入检测循环,一旦看到“立即购买”就连续走完下单三步,成功时终端会给出支付链接
第二次再运行会直接读 cookies,跳过整个页面登录环节。
踩坑速查
现象:Chrome 打开了但登录不成功,出现滑块原因:ChromeDriver 版本和本地 Chrome 版本不匹配。解决:下载与 Chrome 版本一致的驱动,重命名为chromedriver_windows(Linux 用chromedriver_linux,macOS 用chromedriver_mac),放到项目根目录。
现象:终端提示“请检查输入的观演人信息与大麦网观演人信息是否一致”原因:viewer 里的名字和实名登记对不上。解决:去“常用购票人管理”把姓名原样复制过来,连大小写、空格都别动。
现象:启动时报“购买数量与实际观演人数量不符”原因:buy_nums 和 viewer 列表长度不相等。解决:买 2 张就填 2 个观影人。
现象:step2 阶段打印“获取购买必备参数异常”原因:大麦前端 JS 更新,正则匹配不上了。解决:对照最新的接口结构,调整 tools.py 里的get_api_param。
代码本身不算难啃:主流程就是三次请求,其余都在组装和解析参数。读懂这套结构后,同类的快速下单场景也能套着改。用它之前想清楚边界,别给服务器太大压力,平台规则也尽量尊重。
【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考