某麦网自动刷新抢票脚本——手机端(高级版)
某麦网自动刷新抢票脚本——电脑端
小白操作-抵制黄牛–需要更好用更高级关注获取
如何用Python自动抢大麦网演出票?
 在数字化时代,购票已经成为我们生活的一部分,无论是音乐会、话剧、体育赛事还是各种展览,抢票几乎成了一项“必备技能”。但面对热门事件的有限票源,如何在第一时间内抢到心仪的票呢?今天,我们将探索如何使用Python脚本和Selenium自动化工具来增加抢票的成功率。
 
Selenium简介
Selenium是一个用于Web应用程序测试的工具,但它同样可以用于自动化任何web浏览器操作。通过模拟真实用户的行为,Selenium可以登录网站、搜索信息、填写表单等。
抢票脚本的原理
本文的脚本主要通过Python的Selenium库来实现自动抢票。它首先登录大麦网,然后定时刷新目标演出的购票页面,一旦发现有票即尝试购买。
实现步骤
-  环境准备 
 确保你的Python环境已经安装好,并且安装了Selenium库。此外,还需要下载对应的浏览器驱动(例如ChromeDriver),并确保其版本与你的浏览器版本相匹配。
-  配置文件准备 
 创建一个config.json文件,包含所有必要的配置信息,例如演出的日期、场次、票价等级、实名信息、用户昵称、票数、大麦网官网地址、目标购票地址以及浏览器驱动路径。这些信息将被脚本读取和使用。
-  编写选择票务信息的逻辑 
 在choose_ticket方法中,根据大麦网页面的实际结构来选择日期、场次和票价等信息。这可能涉及到对Selenium的find_element_by_*和find_elements_by_*方法的使用,以及对页面元素进行点击操作。需要注意的是,页面结构可能会随时间变化,因此选择元素时应尽可能使用稳定的属性(如ID、名称或特定的CSS类)。
-  实现订单提交逻辑 
 在submit_order方法中,实现点击“立即购买”按钮并提交订单的逻辑。这可能需要处理额外的页面元素,例如选座信息或确认订单信息的弹窗。
-  执行脚本 
 执行脚本前,请确保所有配置都是正确的,特别是config.json文件中的信息。
在终端或命令提示符下运行脚本。脚本会首先打开大麦网登录页面,此时你需要手动完成登录操作。
登录完成后,脚本会自动导航到目标演出的页面,并根据choose_ticket方法中的逻辑选择票务信息。
最后,submit_order方法将尝试提交订单。由于可能存在需要手动操作的步骤(如选座),请保持对脚本运行过程的监控。
代码分析
初始化和配置读取
 __init__方法:这个构造函数负责读取配置文件,并初始化类的属性。这包括演出的日期、场次、票价等级、实名信息、用户昵称、票数、大麦网官网地址、目标购票地址以及浏览器驱动路径。
_init_driver方法:这个私有方法负责初始化Selenium的WebDriver,设置浏览器选项以提升加载速度(如禁用图片和CSS加载),并返回一个WebDriver实例供后续使用。
登录操作
 login方法:该方法打开大麦网的登录页面,并等待用户手动完成登录操作。这里采取了手动登录的方式以避开自动化处理可能遇到的验证码等问题。
进入演出页面
 enter_concert_page方法:登录成功后,这个方法将浏览器导向目标演出的页面,并等待页面加载完成。
选择票务信息
 choose_ticket方法:这个方法是用来选择演出的具体日期、场次和票价等信息的地方。由于实际的页面结构可能复杂且经常变化,这里只提供了一个选择日期的示例代码。实际使用时,需要根据大麦网页面的具体结构进行适当修改。
提交订单
 submit_order方法:一旦选好票务信息,这个方法用于点击“立即购买”或类似的按钮以提交订单。这个步骤可能会涉及更多的用户交互(如选座),因此在实际应用中可能需要手动操作。
主流程
 主流程:在if name == ‘main’:部分,脚本实例化Concert类,按顺序调用了登录、进入演出页面、选择票务信息、提交订单的方法。这个流程简洁地展示了使用Selenium自动化抢票的基本步骤。
注意事项
 该脚本依赖于大麦网页面元素的特定结构,如类名等。如果大麦网更新了页面结构,脚本可能需要相应的更新。
结语
 通过Python和Selenium,我们可以相对简单地实现自动抢票功能,为抢购心仪票务增加一份力量。然而,技术的使用需要谨慎,合理利用自动化技术,在不违反平台规则的前提下提高生活效率。希望这篇文章能为你在数字生活中增添一份便利。
 请记住,这篇介绍旨在技术分享,使用此类脚本时,请遵守相关平台的规定,理解其中的风险。
部分代码奉上
 ⬇️⬇️⬇️
# coding: utf-8
import json
from time import sleep, time
from pickle import dump, load
from os.path import exists
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class Concert(object):def __init__(self, config_path='./config.json'):with open(config_path, 'r', encoding='utf-8') as f:config = json.load(f)self.date = config['date']self.session = config['sess']self.price = config['price']self.real_name = config['real_name']self.nick_name = config['nick_name']self.ticket_num = config['ticket_num']self.damai_url = config['damai_url']self.target_url = config['target_url']self.driver_path = config['driver_path']self.driver = Noneself.status = 0self.time_start = 0self.time_end = 0self.num = 0self.setup_driver()  # 初始化浏览器驱动def setup_driver(self):"""设置WebDriver,并预加载cookies,如果存在的话。"""options = webdriver.ChromeOptions()prefs = {"profile.managed_default_content_settings.images": 2,"profile.managed_default_content_settings.javascript": 1,'permissions.default.stylesheet': 2}options.add_experimental_option("prefs", prefs)capa = DesiredCapabilities.CHROMEcapa["pageLoadStrategy"] = "none"self.driver = webdriver.Chrome(executable_path=self.driver_path, options=options, desired_capabilities=capa)if exists('cookies.pkl'):self.driver.get(self.damai_url)  # 需要先访问网站才能设置cookiescookies = load(open("cookies.pkl", "rb"))for cookie in cookies:if 'expiry' in cookie:del cookie['expiry']self.driver.add_cookie(cookie)print(u'Cookie载入完成')else:print(u"Cookie未找到,请先运行get_cookie方法获取")def check_order(self):if self.status in [3, 4, 5]:if self.real_name is not None:print(u"###等待--确认订单--页面出现,可自行刷新,若长期不跳转可选择-- CRTL+C --重新抢票###")try:tb = WebDriverWait(self.driver, 1, 0.1).until(EC.presence_of_element_located((By.XPATH, '/html/body/div[3]/div[2]/div')))except:raise Exception(u"***Error:实名信息选择框没有显示***")print(u'###开始确认订单###')print(u'###选择购票人信息,可手动帮助点击###')init_sleeptime = 0.0Labels = tb.find_elements_by_tag_name('label')# 防止点击过快导致没有选择多个人while True:init_sleeptime += 0.1true_num = 0for num_people in self.real_name:tag_input = Labels[num_people-1].find_element_by_tag_name('input')if tag_input.get_attribute('aria-checked') == 'false':sleep(init_sleeptime)tag_input.click()else:true_num += 1if true_num == len(self.real_name):breakprint("本次抢票时间:", time()-self.time_start)self.driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[9]/button').click() # 同意以上协议并提交订单相关文章:
 
某麦网自动刷新抢票脚本——手机端(高级版)
某麦网自动刷新抢票脚本——电脑端 小白操作-抵制黄牛–需要更好用更高级关注获取 如何用Python自动抢大麦网演出票? 在数字化时代,购票已经成为我们生活的一部分,无论是音乐会、话剧、体育赛事还是各种展览,抢票几乎成了一项“…...
【MySQL】(基础篇十八) —— 触发器
触发器 本文学习什么是触发器,为什么要使用触发器以及如何使用触发器,还介绍创建和使用触发器的语法。 MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生自动执…...
[19] Opencv_CUDA应用之 基于形状的对象检测与跟踪
Opencv_CUDA应用之 基于形状的对象检测与跟踪 形状可以用作全局特征检测具有不同形状的物体,可以是直线、多边形、圆形或者任何其他不规则形状利用对象边界、边缘和轮廓可以检测具有特定形状的对象本文将使用Canny边缘检测算法和Hough变换来检测两个规则形状,即线和圆1. Cann…...
 
【Echarts】散点图 制作 气泡 类型图表
目录 需求主要代码效果展示注 需求 需参照设计图画出对应图表 主要代码 /**** 数据 ****/ this.dataList [...Array(8).keys()].map((item) > {return {ywlxmc: 业务类型 (item 1),sl: item > 4 ? 50 : 70} })/**** 气泡样式 ****/ const styleList [{offset: [56…...
深入理解Spring Boot的启动过程
深入理解Spring Boot的启动过程 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一起深入探讨Spring Boot的启动过程。Spring Boot作为一…...
 
【深度学习】卷积神经网络CNN
李宏毅深度学习笔记 图像分类 图像可以描述为三维张量(张量可以想成维度大于 2 的矩阵)。一张图像是一个三维的张量,其中一维代表图像的宽,另外一维代表图像的高,还有一维代表图像的通道(channelÿ…...
游戏AI的创造思路-技术基础-深度学习(3)
继续填坑,本篇介绍深度学习中的长短期记忆网络~~~~ 目录 3.3. 长短期记忆网络(LSTM) 3.3.1. 什么是长短期记忆网络 3.3.2. 形成过程与运行原理 3.3.2.1. 细胞状态与门结构 3.3.2.2. 遗忘门 3.3.2.3. 输入门 3.3.2.4. 细胞状态更新 3.…...
贪心算法练习题(2024/6/24)
1K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能的最…...
 
大厂程序员上班猝死成常态?
大家好,我是瑶琴呀,拥有一头黑长直秀发的女程序员。 近日,连续看到大厂程序员猝死、低血糖晕倒的新闻,同为程序员感到很难受。互联网加班成常态这是既定事实,尤其在这个内卷严重、经济不景气的环境中,加班…...
 
深度学习 —— 1.单一神经元
深度学习初级课程 1.单一神经元2.深度神经网络3.随机梯度下降法4.过拟合和欠拟合5.剪枝、批量标准化6.二分类 前言 本套课程仍为 kaggle 课程《Intro to Deep Learning》,仍按之前《机器学习》系列课程模式进行。前一系列《Keras入门教程》内容,与本系列…...
Android 12.0 通知发送过程源码分析-Framework
以下NotificationManagerService简称 NMS 1. 通知的发送: NotificationManager.notify(int id, Notification notification) 开始. 源码路径: /frameworks/base/core/java/android/app/NotificationManager.java/***发布通知以显示在状态栏中。 如果通知带有* 相同的 ID 已被…...
提防远程攻击:了解正向 Shell 和反向 Shell 确保服务器安全
前言 在当今网络安全形势日益复杂的环境中,了解正向 Shell 和反向 Shell 的工作原理和使用场景,对于保护你的服务器免受远程攻击至关重要。本文不仅深入解析这两种常见的远程控制技术,还将提供有效的防护建议,帮助你提升服务器的…...
RabbitMQ中CorrelationData 与DeliveryTag的区别
在RabbitMQ中,CorrelationData是一个用于封装业务ID信息的类,它主要在消息确认机制中发挥作用。以下是关于CorrelationData在RabbitMQ中的详细作用: 封装业务ID信息: 当发送消息时,可以将业务ID信息封装在Correlation…...
 
数据恢复篇:如何在Android上恢复删除的短信
如果您不小心删除了Android设备上的短信并想要检索它们,则可以尝试以下方法: 如何在Android上恢复删除的短信 检查您的备份: 如果您之前备份了Android设备,则可以从备份中恢复已删除的短信。检查您设备的内部存储空间或 Google 云…...
 
花了大几万的踩坑经验!宠物空气净化器哪个牌子好:希喂、小米、有哈PK
我的闺蜜最近向我大吐苦水,自从家里养了猫之后,她发现家里的空气质量大不如前。宠物的浮毛和排泄物的气味在空气中飘散,让她非常怀念以前没有养猫时家里清新的呼吸环境。她觉得这些漂浮的毛发和异味大大降低了居家的舒适度。 还引起了身体上…...
 
查普曼大学团队使用惯性动捕系统制作动画短片
道奇电影和媒体艺术学院是查普曼大学的知名学院,同时也是美国首屈一指的电影学院之一,拥有一流电影制作工作室。 最近,道奇学院的一个学生制作团队接手了一个项目,该项目要求使用真人动作、视觉效果以及真人演员和CG角色之间的互动…...
 
vue 代理
一、常用的发送一个ajax请求: 1、xhr new XMLHttpRequest(),真正开发中不常用 2、jq,jq主要功能是获取dom,周边才是请求接口 3、axios(大名鼎鼎的) axios.get("url").then(response>{},error>{} )4、…...
 
[leetcode]24-game
. - 力扣(LeetCode) class Solution { public:static constexpr int TARGET 24;static constexpr double EPSILON 1e-6;static constexpr int ADD 0, MULTIPLY 1, SUBTRACT 2, DIVIDE 3;bool judgePoint24(vector<int> &nums) {vector&l…...
网络爬虫的原理
网络爬虫的原理 网络爬虫,作为信息检索和数据分析的重要工具,其原理的核心在于模拟人类浏览网页的行为,通过自动化的方式从互联网上收集所需的数据。在了解了网络爬虫的基本原理后,我们可以进一步探讨其在实际应用中的工作机制以…...
 
游戏AI的创造思路-技术基础-机器学习(2)
本篇存在大量的公式,数学不好的孩子们要开始恶补数学了,尤其是统计学和回归方程类的内容。 小伙伴们量力而行~~~~~ 游戏呢,其实最早就是数学家、元祖程序员编写的数学游戏,一脉相承传承至今,囊括了更多的设计师、美术…...
 
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
 
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
 
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
 
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
 
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
 
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
