ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

大麦抢票脚本技术深度解析:3次接口调用完成抢票

大麦抢票脚本技术深度解析:3次接口调用完成抢票 大麦抢票脚本技术深度解析3次接口调用完成抢票【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchaseAutomatic_ticket_purchase 是大麦网的 Python 抢票脚本。它最有代表性的数字是V2.0 改造后整个抢票流程只剩 3 次 HTTP 接口调用浏览器只在登录时出现一次。README 开头声明得很直白项目已停止维护大部分购买方式已迁移至手机端。但代码里的接口化抢票思路对想弄清网页抢票流程如何拼装的读者仍有参考价值。用一个场景看它能做什么抢一张指定票价的演唱会门票以开抢日抢一张指定价位的演唱会门票为例这个脚本的分工很明确浏览器只负责登录一步其余全部是接口直调。提前要拿好的两个参数item_id商品ID打开大麦商品页URL 里id后面那串数字就是每个城市、每个场次各不相同。viewer观演人姓名必须事先在大麦我的大麦 → 常用购票人管理里登记脚本里填写的姓名要与登记完全一致。配置填五处首跑仍要登录一次# 来自 Automatic_ticket_purchase.py运行前必须修改的字段 self.login_id: str account # 大麦登录账号 self.login_password: str password # 大麦登录密码 self.item_id: int 610820299671 # 商品ID从 URL 获取 self.viewer: list [viewer1] # 大麦已登记的观演人姓名 self.buy_nums: int 1 # 购买数量须与观演人数一致 self.ticket_price: int 180 # 目标票价首次运行没有 cookie 缓存脚本会用 selenium浏览器自动化库打开登录页支持两种方式python Automatic_ticket_purchase.py账号密码登录默认python Automatic_ticket_purchase.py --mode qr扫码登录登录成功后 cookie 会写入cookies.pkl之后的运行不再打开浏览器。开抢之后从轮询到支付链接run()主循环里脚本每轮调 step1 查询票态用按钮文案决定分支# 来自 Automatic_ticket_purchase.py 的 run()轮询抢购按钮状态 while True: ticket_info, seq, sku_id self.step1_get_order_info(...) status ticket_info[skuPagePcBuyBtn][skuBtnList][seq][btnText] if status 即将开抢: # 未开抢继续轮询 continue elif status 立即购买: # 已开抢进入下单流程 break elif status 缺货登记: # 已卖完退出 return False命中立即购买后step2 请求orderConfirm接口从页面内嵌的__INIT_DATA__变量取出订单确认参数step3 再把参数 POST 到createOrder提交订单。成功时控制台输出alipayOrderId和支付宝支付链接抢票流程到此结束——支付仍需人工完成。它是怎么做到的把抢票请求直接拼出来脚本比点击页面快的原因不复杂它不操作页面而是拼装请求。核心是两处。把页面点击替换为三次接口直调要解决的问题旧版脚本靠 selenium 点击立即购买按钮要等每个页面元素渲染加载完成链路延迟受页面渲染拖累而抢票本质是拼接口返回速度人眼点击一定慢于请求。用什么办法登录后脚本只带着 cookie浏览器保存的登录凭证依次直调三个端点detail.damai.cn/subpage取票档列表SKU即票价与库存单元按目标价匹配出skuId顺带读出按钮状态buy.damai.cn/orderConfirm模拟点击立即购买解析页面里的__INIT_DATA__拿到完整下单参数buy.damai.cn/multi/trans/createOrder提交订单响应里success为真且返回alipayOrderId即抢票成功。主流程三个步骤对应 step1/step2/step3 方法逐段可查Automatic_ticket_purchase.py登录、cookie 读写与登录态校验则收在 tools.py。页面上取不到的两个暗参数要解决的问题部分请求参数不在页面 DOM 里而是前端 JS 内部拼装或需要带签名计算才能通过校验。用什么办法均在 tools.py 中从远程 JS 正则提取get_api_param直接下载大麦前端 JS 包vue-pc 0.0.70 版本用两段正则提取出commodity_param与ex_params两组参数本地算签名选座走的是阿里 mtop 网关统一的 API 网关每个请求都要求携带 sign 校验字段。脚本用 execjs 把 MD5 实现 signcode.js 交给 Node 执行取 cookie 里_m_h5_tk的前半段作h5_token与毫秒时间戳、请求参数拼接后算出签名。# 来自 tools.pymtop 接口 sign 的四步计算 h5_token cookies.get(_m_h5_tk).split(_)[0] time_stamp int(datetime.now().timestamp() * 1000) param1 {}{}12574478.format(h5_token, time_stamp) sign_code js_exec.call(calcaulate, param1 api_param)效果如何三个版本的能力演进与现状项目没有发布过基准或成功率数据最可靠的效果依据是 README 里的版本记录。三个版本的能力对照版本登录方式抢票链路选座支持当前状态V1.x浏览器全程操作selenium 按钮点击等页面元素加载不支持已废弃V2.0浏览器仅登录requests 直调 3 个接口cookie 持久化到 pkl不支持停止维护V2.1同上同上支持指定单一价位不支持连坐停止维护无更新计划改造前后的实际差异体现在链路上V2.0 之前每次抢购都要等页面渲染V2.0 之后除首次登录外全程无浏览器参与轮询与下单都是毫秒级的 HTTP 请求。为什么现在跑不起来⚠️ 局限全部来自项目自述README 第一行即已停止维护大部分购买方式已迁移至手机端需配合抓包处理且暂无更新计划参数提取写死依赖 vue-pc 0.0.70 远程 JS大麦前端一旦发新版get_api_param的两段正则直接失效单进程单线程轮询失败无重试机制不支持多账号或并发selenium 固定 3.141.0chromedriver 必须与本地 Chrome 版本匹配并按系统重命名chromedriver_windows/chromedriver_linux/chromedriver_mac。从零到第一次跑通四步完成配置最小路径是克隆 → 装依赖 → 配 chromedriver → 填参运行。git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase cd Automatic_ticket_purchase pip install -r requirements.txt依赖只有四个requests、selenium、beautifulsoup4、pyexecjs见 requirements.txt。另外两件事必须手工做下载与本地 Chrome 版本匹配的 chromedriver按操作系统重命名后放到项目根目录修改Automatic_ticket_purchase.py里的字段viewer 须与大麦登记名完全一致。运行后观察三个信号首次会弹出浏览器登录页登录完成后只剩 HTTP 轮询、不再出现浏览器看到抢票成功alipayOrderId 支付宝支付链接即为成功。实战要点常见报错处理与脆弱点三种最常出现的控制台提示控制台输出含义处理方式登录失败cookie 过期或账号错误删除cookies.pkl重新登录即将开抢循环打印尚未到开抢时间正常状态脚本本身在轮询请检查输入的观演人信息viewer 与大麦登记不一致核对常用购票人后重填运行后要盯住的两处脆弱点JS 版本耦合get_api_param里硬编码了 vue-pc 0.0.70 的地址与正则大麦前端升级后需要自行抓新版 JS 并重写这两段正则选座链路长选座购买要连续调 4 次 mtop 接口换取 standId、座位图与可售座位任何一处接口字段变动都会断链且连坐不支持。能力边界能做与不能做能做PC 端开抢、不选座购买、单一价位的选座购买不能做手机端开抢README 明确需抓包、连坐、多账号并发、失败重试。选它还是不选三条判断判断标准选它来学习想弄懂接口抢票的三件事——从远程 JS 正则提取参数、mtop 签名计算、cookie 持久化复用这份代码两个文件没有冗余一遍能读完不选它来生产项目未维护、PC 端链路基本弃用README 免责声明也明确反对商业化作弊用途任何业务场景都不建议直接采用。这个项目已不是能用的抢票工具而是网页抢票流程如何用 HTTP 请求拼装的完整样本。想学接口抓取技术的开发者值得通读一遍想找当下可用的热门票务脚本请直接另寻渠道。【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表