ARTICLE DETAIL

资讯详情

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

大麦网自动抢票脚本完整教程:Python 一键部署、原理剖析与实战配置

大麦网自动抢票脚本完整教程:Python 一键部署、原理剖析与实战配置 大麦网自动抢票脚本完整教程Python 一键部署、原理剖析与实战配置【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase热门演出开票几秒就空人工点立即购买永远慢半拍。Automatic_ticket_purchase 是一个基于 Python 的大麦网自动抢票脚本登录交给 Selenium 自动完成盯票和下单全部走 requests 直连接口配合提前写好的票价、观演人配置开票瞬间自动出手。这篇教程带你从环境配置到实战场景一次讲清。 三步跑通环境准备与最小可运行配置第一步拿到代码装好依赖git clone https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase pip install -r requirements.txtrequirements.txt 里只有 4 个依赖requests、selenium、beautifulsoup4、pyexecjs几分钟就能装完。第二步配好 ChromeDriver登录阶段需要 Selenium 驱动一个 Chrome 浏览器所以要下载与你系统对应的驱动放到项目根目录并按系统改名Windows →chromedriver_windowsLinux →chromedriver_linuxmacOS →chromedriver_mactools.py 里会根据platform.system()自动选择对应驱动名字对得上就不用改代码。第三步填好 4 个抢票参数打开 Automatic_ticket_purchase.py只改__init__里这几行其他都不用动self.login_id: str account # 大麦网登录账户名 self.login_password: str password # 大麦网登录密码 self.item_id: int 610820299671 # 商品id self.viewer: list [viewer1] # 在大麦网已填写的观影人 self.buy_nums: int 1 # 购买影票数量, 需与观影人数量一致 self.ticket_price: int 180 # 购买指定票价其中item_id最关键打开大麦网演出详情页看地址栏里id后面那串数字那就是商品 ID每个场次/城市都不一样。两个容易踩的坑提前说viewer里填的必须是已经在大麦网我的观演人里添加过的姓名脚本会在下单前自动核对buy_nums必须和viewer名单数量一致比如买 2 张票就填 2 个名字。配好后直接运行python Automatic_ticket_purchase.py⚡ 工作原理为什么它比自动点按钮快得多老一代抢票工具靠 Selenium 模拟鼠标点按钮每一步都要等页面渲染完。这个项目换了思路浏览器只干最脏的活——登录剩下的全部走 HTTP 接口。登录完成后脚本把浏览器里的 cookie 抽出来存到本地后续所有请求都由 requests 库直发省掉渲染、点击、等待这些毫秒级消耗出手快人一步。整个下单流程固定三步step1_get_order_info查商品页接口拿到所有票价档位sku 列表按你填的ticket_price定位到目标票价step2_click_buy_now请求订单确认页把页面里嵌的__INIT_DATA__解析出来拼出提交订单所需的完整参数step3_submit_orderPOST 到createOrder接口提交订单成功后打印支付宝支付链接人去付款就行。主循环就是不停查按钮状态、一出现立即购买立刻进下单流程逻辑很短但每次都在抢时间while True: ticket_info, sku_id_sequence, sku_id self.step1_get_order_info( self.item_id, commodity_param, ticket_priceself.ticket_price) ticket_sku_status ticket_info[skuPagePcBuyBtn][skuBtnList][sku_id_sequence][btnText] if ticket_sku_status 即将开抢: continue # 还没开卖继续盯 elif ticket_sku_status 立即购买: buy_serial_number {}_{}_{}.format(self.item_id, self.buy_nums, sku_id) submit_order_info self.step2_click_buy_now(ex_params, buy_serial_number) break # 开卖了立刻下单 elif ticket_sku_status 缺货登记: print(- * 10, 手慢了该票价已经售空: , ticket_sku_status, - * 10) return False翻译一下脚本像人一样盯着票面按钮——写着即将开抢就继续等写成立即购买就瞬间进入下单流程写着缺货登记就认输退出三种状态全覆盖。登录环节藏在 tools.py 里。Selenium 启动浏览器时特意加了两行参数关掉自动化特征降低被识别出你是脚本的概率option.add_experimental_option(excludeSwitches, [enable-automation]) option.add_argument(--disable-blink-featuresAutomationControlled)登录成功后脚本请求大麦网个人主页验证是否真的登录成功然后执行save_cookies把登录态序列化到cookies.pkl。下次再运行直接读这个文件连浏览器都不用打开——开票前反复试跑时这一步能省不少时间。整个项目就 3 个文件分工一目了然文件职责Automatic_ticket_purchase.py抢票主流程下单三步走tools.py登录、cookie 存取、接口参数解析、选座逻辑signcode.js座位接口的 sign 签名算法MD5 变体由 pyexecjs 在 Python 里直接执行 核心功能详解4 个真正救急的能力1. 三种登录方式 cookie 自动复用命令行参数控制登录模式python Automatic_ticket_purchase.py # 默认账号密码登录 python Automatic_ticket_purchase.py --mode qr # 二维码扫码登录账号密码全自动适合无人值守挂机扫码--mode qr弹浏览器手动扫适合账号密码不可用时兜底cookie 复用本地存在cookies.pkl时自动跳过登录直接开抢。真实场景开票日当天提前一天先跑一次扫码登录把 cookie 落盘。开票时刻脚本秒进抢票状态不用现场扫码——手抖一次就可能错过整场。2. 实时盯票售罄自动收手主循环按即将开抢 / 立即购买 / 缺货登记三态自动决策不需要人工判断时机。真实场景开票前 10 分钟把脚本挂起来它自己完成等待、判定、下单全流程你只需要盯着屏幕等那串alipayOrderId出现然后立刻去付款。3. 指定票价精准下单ticket_price不是摆设脚本拿到 sku 列表后逐档比对价格只买你填的那一档580 的内场票不会误点成 380。选座场次同样按价格定位到对应的price_id再拉取该价位下的可售座位。真实场景预算就够 380 元看台票填ticket_price 380即使同页有 580、880 档脚本也只锁 380 这一档出手。4. 观演人自动校验 自动选座提交订单前脚本把你在viewer里写的名字和大麦网观演人列表做交集比对有一个名字对不上就当场报错终止而不是等下单接口被拒才知道错了。选座场次则由 tools.py 的pick_seat接管先把整个场馆的座位按楼层 → 排 → 列组织成坐标字典剔除不可售座位和非目标价位的座位然后按buy_nums自动挑出前 N 个可用座。注意两点限制目前只支持单一目标价位暂不支持连坐挑出的座位可能不挨着。真实场景话剧票是选座票你只想买 480 元档脚本会自动圈定这个价位的可售区域帮你落座不用在座位图里一个个点。 进阶调优5 个提速与稳定要点登录模式选对能账号登录就优先account模式全程零人工qr模式留作滑块或密码失效时的备胎。无头模式后台挂机tools.py 里有一行被注释的option.add_argument(headless)取消注释后浏览器不再弹窗可以挂在服务器上提前守场。别碰cookies.pkl的时效cookie 过期后登录校验会直接失败脚本提示你删文件重来。开票前务必先完整跑一遍确认登录态有效。网络就近原则requests 直连接口意味着全程只吃网络质量。抢票当天用有线网、或离路由器近的 WiFi别在 4G 信号飘的时候开跑。接口参数是动态解析的tools.py 的get_api_param是去大麦网线上 JS 里实时抠参数而不是写死——这是它能跟着页面小改版存活的原因但大麦网大改前端后这里就是第一个要修的位置。另外提醒一句README 里明确写着项目已停止维护且大部分购买方式已迁移至手机端需配合抓包处理。把它当作学习请求链路解析的范本非常合适真金白银抢票前请先小规模验证当前接口是否仍有效。 实战场景3 组可直接照抄的配置场景一单人抢演唱会 180 元票viewer [张三]buy_nums 1ticket_price 180开票前 10 分钟启动脚本预期出现立即购买后数秒内打印alipayOrderId和支付宝支付链接人工完成付款即锁定。场景二3 个朋友拼 480 元话剧票viewer [张三, 李四, 王五]buy_nums 3ticket_price 480前提3 个人的实名信息都已添加到大麦网观演人管理页。预期一次性提交 3 张同价位订单任一名字拼错都会在校验阶段被拦下。场景三选座票守场选座场次 单一价位目标如ticket_price 580预期脚本自动圈定 580 元档可售座位按buy_nums挑座后下单注意选出的座位不保证相邻介意连坐需降低预期或改抢非选座票。️ 常见问题按现象 → 原因 → 解决排查现象提示登录失败, 请检查登录账号信息原因账号密码错、cookie 过期或登录页弹了滑块卡住。解决先删掉cookies.pkl重新登录密码登录不行就换--mode qr扫码浏览器里反复弹滑块时检查一下驱动参数两行是否被误删。现象提示请检查输入的观演人信息与大麦网观演人信息是否一致原因viewer里的姓名和官网登记的观演人名字不完全一致差一个字、繁简体不同都会挂。解决登录大麦网进观演人管理页逐个核对名字后原样复制进配置。现象提示手慢了该票价已经售空或状态一直停在即将开抢原因前者是该档已无库存后者是item_id指向的场次还没开售或 item_id 填错成了别的城市场次。解决确认开售时间重新到详情页地址栏核对id参数注意同一演出不同城市、不同场次的 item_id 各不相同。现象Selenium 启动就报错或浏览器起不来原因ChromeDriver 版本和系统不匹配或驱动没放在项目根目录 / 没按系统改名。解决按操作系统重新下载匹配版本确认文件名是chromedriver_windows/chromedriver_linux/chromedriver_mac三选一且与脚本在同一目录。现象控制台打印获取购买必备参数异常请重新解析response返回的参数原因大麦网页面结构变了__INIT_DATA__的解析正则没匹配到。解决对照控制台打印的原始返回手工比对改step2_click_buy_now里的正则这也是 README 说停止维护后最需要自己动手的地方。 写在最后这个项目的价值是用不到 500 行代码把登录 → 盯票 → 解析 → 下单整条链路讲透了Selenium 负责能过人机验证的登录requests 负责毫秒级的接口直连两者用一份 cookie 无缝交接——这套混合思路放在任何电商自动化场景都成立。最后照例提醒本项目遵循 MIT 协议仅供个人学习参考与合理购票需求使用请遵守大麦网平台使用条款切勿用于商业刷票——代码能帮你抢得快但别用它抢别人的票。【免费下载链接】Automatic_ticket_purchase大麦网抢票脚本项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表