Python大麦网自动抢票脚本实战教程(Selenium完整可运行代码)

发布时间:2026/7/25 5:57:53
Python大麦网自动抢票脚本实战教程(Selenium完整可运行代码) 适用系统: Windows / Mac / Linux核心优势国内网络适配、无需境外驱动、防风控、精准卡点、零基础可用⚠️ 重要免责声明本文所有代码仅用于 Python 自动化、Selenium 网页自动化技术学习研究仅限个人测试学习。大麦网用户协议明确禁止脚本、爬虫等自动化工具操作平台批量抢票、囤票加价倒卖演出票涉嫌违反《治安管理处罚法》情节严重可追究刑事责任。违规使用脚本导致账号封禁、IP 限制、法律责任全部由使用者自行承担。请理性购票维护公平购票环境。一、前言为什么选择 Selenium 做抢票热门演唱会、音乐节开票瞬间秒空手动刷新、手动点击根本拼不过自动化程序。目前市面上仅有两种抢票方案优劣差距非常明显接口直刷不推荐新手直接请求后端库存接口速度最快但需要逆向加密签名、Cookie、订单参数技术门槛极高高频请求极易封号、触发风控。Selenium 浏览器自动化本文方案操控真实 Chrome 浏览器1:1 模拟真人点击、刷新、选座下单可视化操作、逻辑简单、风控概率极低是新手学习、个人捡漏首选方案。相比于复杂的接口逆向Selenium 可以让我们零逆向、零基础实现全自动抢票全程看得见操作报错可快速排查。二、环境搭建5分钟极速完成2.1 安装 Python 环境安装Python 3.8 及以上正式版本安装时务必勾选Add Python to PATH加入系统环境变量。安装完成后终端输入以下命令验证是否安装成功python--version2.2 安装核心依赖库本脚本无需手动配置 ChromeDriver依托webdriver-manager自动适配国内镜像驱动完美解决境外驱动网站无法访问的国内网络问题。一键安装依赖pipinstallselenium webdriver-manager依赖说明selenium浏览器自动化核心库负责操控页面所有操作webdriver-manager自动匹配、下载、适配 Chrome 驱动彻底告别版本报错2.3 浏览器要求电脑需安装最新版谷歌 Chrome 浏览器其他浏览器不兼容本脚本。三、抢票核心流程拆解脚本完整复刻人工购票全流程全自动执行仅扫码登录需要手动参与加载页面 自动登录检测打开目标演出页面未登录自动弹出扫码窗口限时等待登录精准定时卡点倒计时等待开票开票前1分钟高频刷新页面自动选场次/日期/票档自动匹配可购场次、目标票价档位自动设置购票数量、勾选观演人无需手动操作订单信息循环重试提交订单毫秒级监控下单按钮抢到立即提交核心优化全程使用WebDriverWait显式等待摒弃死板的固定延时页面加载完成立即执行操作兼顾速度与稳定性。四、完整可运行抢票代码国内适配版代码内置防风控参数、随机真人延时、超时保护、异常捕获无需修改底层代码仅修改顶部配置即可直接运行。 大麦网自动抢票脚本 PythonSelenium 完整版 适配国内网络、无需访问境外ChromeDriver下载站 内置防风控、定时卡点、显式等待、自动驱动适配 仅供Python自动化技术学习禁止囤票倒卖、商用 importtimeimportrandomfromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromwebdriver_manager.chromeimportChromeDriverManagerfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.common.exceptionsimportTimeoutException,NoSuchElementException# 【用户自定义配置区 - 务必修改】 # 大麦移动端演出链接APP分享链接获取替换对应项目IDTARGET_URLhttps://m.damai.cn/damai/perform/item.html?projectId替换为你的演出ID# 目标开票时间 24小时制TARGET_HOUR10TARGET_MINUTE0# 目标票档文字必须和网页完全一致例看台380元、内场680元TARGET_PRICE看台380元# 购买票数1张成功率最高多张需提前添加对应实名观演人BUY_COUNT1# 无头模式False显示浏览器(调试) True隐藏浏览器(后台挂机)HEADLESSFalse# 登录最大等待时间秒LOGIN_WAIT_TIME120# 订单最大重试提交次数MAX_SUBMIT_TRY50# classDamaiTicketBot:def__init__(self):# Chrome防风控核心配置规避自动化检测chrome_optionswebdriver.ChromeOptions()# 关闭浏览器自动化标识chrome_options.add_experimental_option(excludeSwitches,[enable-automation])chrome_options.add_experimental_option(useAutomationExtension,False)chrome_options.add_argument(--disable-blink-featuresAutomationControlled)# 模拟真实浏览器运行环境chrome_options.add_argument(--no-sandbox)chrome_options.add_argument(--disable-dev-shm-usage)# 随机UA进一步防风控chrome_options.add_argument(user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36)# 无头模式配置ifHEADLESS:chrome_options.add_argument(--headlessnew)chrome_options.add_argument(--disable-gpu)# 关闭冗余日志输出chrome_options.add_argument(--log-level3)# 自动适配驱动解决国内无法访问境外驱动网站问题# webdriver-manager 国内镜像自动下载驱动无需手动安装serviceService(ChromeDriverManager().install())self.driverwebdriver.Chrome(serviceservice,optionschrome_options)self.driver.maximize_window()# 全局显式等待精准加载元素self.waitWebDriverWait(self.driver,10)# 隐式等待兜底self.driver.implicitly_wait(3)defwait_for_element(self,by,value,timeout10):通用工具等待元素可点击超时不报错、不中断程序try:elemWebDriverWait(self.driver,timeout).until(EC.element_to_be_clickable((by,value)))returnelemexceptTimeoutException:returnNonedeflogin_handle(self):加载页面 扫码登录逻辑限时保护print([INFO] 正在加载大麦演出页面...)self.driver.get(TARGET_URL)time.sleep(random.uniform(1,1.5))# 检测登录状态login_btnself.wait_for_element(By.XPATH,//*[contains(text(), 登录) or contains(text(), 登陆)])iflogin_btn:print([INFO] 检测到未登录请打开大麦APP扫码登录2分钟内完成)login_btn.click()# 限时等待登录完成try:WebDriverWait(self.driver,LOGIN_WAIT_TIME).until(lambdad:loginnotind.current_url.lower())print([SUCCESS] 账号登录成功等待开票)exceptTimeoutException:print([ERROR] 登录超时脚本自动退出请重新运行)self.driver.quit()exit()else:print([INFO] 账号已登录就绪等待开票)defwait_target_open_time(self):精准定时卡点开票前高频刷新无需手动值守print(f[INFO] 定时等待开票{TARGET_HOUR:02d}:{TARGET_MINUTE:02d})whileTrue:nowtime.localtime()h,m,snow.tm_hour,now.tm_min,now.tm_sec# 临近开票进入秒杀状态ifhTARGET_HOURandmTARGET_MINUTEands55:print([INFO] 即将开票启动秒杀模式)break# 开票前1分钟高频刷新页面确保第一时间加载库存ifhTARGET_HOURandmTARGET_MINUTE-1ands55:self.driver.refresh()time.sleep(random.uniform(0.4,0.6))time.sleep(0.1)defselect_date_session(self):自动选择可点击日期、演出场次print([INFO] 自动匹配演出日期、场次)# 选择可用日期date_btnself.wait_for_element(By.XPATH,//div[contains(class, date-item) and not(contains(class, disabled))])ifdate_btn:date_btn.click()print([INFO] 已选中演出日期)time.sleep(random.uniform(0.2,0.4))# 选择可用场次session_btnself.wait_for_element(By.XPATH,//div[contains(class, session-item) and not(contains(class, disabled))])ifsession_btn:session_btn.click()print([INFO] 已选中演出场次)defselect_price_tier(self):精准匹配目标票档双模式兜底精确模糊print(f[INFO] 匹配目标票档{TARGET_PRICE})# 精确匹配票档price_btnself.wait_for_element(By.XPATH,f//span[contains(text(), {TARGET_PRICE})]/..)ifprice_btn:price_btn.click()print(f[SUCCESS] 成功选中票档{TARGET_PRICE})else:# 模糊匹配兜底price_btnself.wait_for_element(By.XPATH,f//*[contains(text(), {TARGET_PRICE})])ifprice_btn:price_btn.click()print(f[SUCCESS] 模糊匹配选中票档{TARGET_PRICE})else:print(f[ERROR] 未找到对应票档请检查配置文字是否一致)time.sleep(random.uniform(0.2,0.3))defset_ticket_count(self):自动设置购票数量ifBUY_COUNT1:returnprint(f[INFO] 调整购票数量至{BUY_COUNT}张)add_btnself.wait_for_element(By.XPATH,//div[contains(class, number)]//span[contains(class, plus) or contains(text(), )])ifadd_btn:for_inrange(BUY_COUNT-1):add_btn.click()time.sleep(random.uniform(0.08,0.15))print([INFO] 购票数量设置完成)defselect_viewer(self):自动勾选实名观演人print([INFO] 勾选实名观演人)viewer_checkself.wait_for_element(By.XPATH,//div[contains(class, audience)]//input[typecheckbox and not(disabled)])ifviewer_checkandnotviewer_check.is_selected():viewer_check.click()print([INFO] 观演人勾选完成)defsubmit_order_loop(self):核心下单逻辑循环重试提交订单极限抢票print([INFO] 持续监控下单按钮全力抢票中...)foridxinrange(MAX_SUBMIT_TRY):submit_btnself.wait_for_element(By.XPATH,//*[contains(text(), 立即购买) or contains(text(), 提交订单)],timeout1)ifsubmit_btn:try:submit_btn.click()print(\n【抢票成功】请15分钟内打开大麦APP完成支付)returnTrueexceptException:continue# 定时刷新防缓存ifidx%50:self.driver.refresh()time.sleep(random.uniform(0.4,0.6))time.sleep(random.uniform(0.15,0.25))print([ERROR] 抢票失败已达最大重试次数)returnFalsedefrun(self):脚本主运行入口print(*60)print( 大麦网自动抢票脚本国内适配版)print(*60)try:# 1. 登录流程self.login_handle()# 2. 等待开票时间self.wait_target_open_time()# 3. 开票刷新进入抢票流程self.driver.refresh()time.sleep(random.uniform(0.3,0.5))# 4. 自动选场次、选票、设数量self.select_date_session()self.select_price_tier()self.set_ticket_count()# 5. 点击立即购买buy_btnself.wait_for_element(By.XPATH,//*[contains(text(), 立即购买) or contains(text(), 选座购买)])ifbuy_btn:buy_btn.click()# 6. 勾选观演人 提交订单self.select_viewer()self.submit_order_loop()else:print([ERROR] 无购买按钮门票已售罄或页面更新)exceptExceptionase:print(f[FATAL] 脚本异常{str(e)})finally:print(\n[INFO] 脚本运行结束浏览器保持打开可手动操作)input(回车关闭浏览器...)self.driver.quit()if__name____main__:botDamaiTicketBot()bot.run()五、参数配置教程仅改4项无需读懂代码仅修改顶部自定义配置区4个核心参数即可使用TARGET_URL大麦APP分享的移动端演出链接替换链接内的projectIdTARGET_HOUR / TARGET_MINUTE官方开票时间24小时制如10点开票填 10、0TARGET_PRICE目标票档文字必须和网页一字不差匹配失败是新手最大问题BUY_COUNT购票数量默认1张成功率最高多张需提前添加对应观演人六、零基础极速上手步骤6.1 账号提前准备必做大麦账号完成实名认证未实名无法下单个人中心提前添加实名观演人信息实体票演出提前填写收货地址6.2 脚本运行步骤将修改好的代码保存为damai_bot.py终端进入文件所在文件夹执行运行命令python damai_bot.py弹出浏览器后大麦APP扫码登录登录成功后脚本自动卡点等待开票全程无需手动操作抢票成功后15分钟内APP手动支付超时订单失效七、常见问题排查表故障现象问题原因解决方案匹配不到票档票档文字和页面不一致直接复制网页完整票档文字粘贴配置驱动版本报错Chrome自动更新脚本自动适配驱动直接重启即可无法勾选观演人未实名/未添加观演人提前在网页端完善实名与观演人信息浏览器闪退、风控操作频率过高关闭无头模式不要长时间挂机八、风控与合规提醒风控说明脚本内置防风控参数但平台存在行为检测请勿24小时挂机、高频频繁运行成功率说明无100%抢票脚本脚本仅替代人工重复操作最终成功率取决于网络、服务器并发、运气合规红线代码仅限个人Python技术学习禁止商用代抢、囤票倒卖违规后果自负九、拓展优化方向可自行二次开发升级脚本多票档优先级切换、微信抢票通知、Cookie免登录、多演出轮询监控、语音播报成功提醒等功能。十、总结本脚本适配国内网络环境彻底解决境外驱动无法访问的问题零基础用户修改少量配置即可全自动抢票。同时通过学习本脚本可快速掌握 Selenium 网页自动化、元素等待、防风控优化、面向对象编程等实用技术兼顾实战与学习价值。请理性使用技术维护公平购票环境。

相关新闻

最新新闻

日新闻

周新闻

月新闻