当前位置: 首页 > news >正文

秀某动预约抢票脚本

秀某动预约抢票脚本

小白操作-仅供学习参考
在这里插入图片描述

主要流程和功能

  1. 初始化和配置变量:
  • confirm_url 和 login_url: 分别存储登录和确认订单的URL。

  • wait_time: 用户输入的提前多少秒开始执行。

  • start_time: 开售时间。

  • DEBUG: 调试标志,用于控制脚本的行为。

  1. 浏览器自动化:
  • 配置Chrome浏览器的性能和日志记录设置。

  • 进行浏览器操作,自动登录,并获取特定按钮进行点击。

  1. 网络请求:
  • 捕获通过浏览器发出的请求并记录其详情。

  • 保存请求的URL、POST数据和头部到本地文件。

  1. 发起并发请求:
  • 使用gevent和requests库发送存储好的请求。

  • 使用hashlib来计算请求的签名。

  1. 异常处理:
  • 捕捉并打印错误堆栈,以便调试。
  1. 多线程和定时控制:
  • 在预定时间开始前的指定秒数开始执行并发请求。

  • 使用gevent来管理并发执行的worker函数。

  • 时间控制逻辑:

if(t1-time.time()<float(wait_time)):
break
部分代码

from gevent import monkey
monkey.patch_all()wait_time = input("提前时间(秒):")debug_flag = input("从post_list加载账号(2开启并继续添加 1开启 0关闭):")start_time = input("开售时间(格式:2020 10 06 16 00 10):")DEBUG = int(debug_flag)if DEBUG != 1:times = input("账号数量:")
confirm_url = input("confirm_url:")
caps = {'browserName': 'chrome','loggingPrefs': {'browser': 'ALL','driver': 'ALL','performance': 'ALL',},'goog:chromeOptions': {'perfLoggingPrefs': {'enableNetwork': True,},'w3c': False,},
}
caps['goog:loggingPrefs'] = {'performance': 'ALL'}
options = webdriver.ChromeOptions()
options.add_argument('log-level=3')
options.add_argument('--window-size=400,700')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option("mobileEmulation", {"deviceName": "Nexus 5"})
driver = webdriver.Chrome(desired_capabilities=caps, options=options)if DEBUG == 2:with open('post_list.json', 'r') as f:post_list = json.load(f)
else:
post_list = []if __name__ == '__main__':thread_l = list()
for i in post_list:thread_l.append(gevent.spawn(worker, i=i))
# 处理时间
t1 = time.mktime(time.strptime(start_time, "%Y %m %d %H %M %S"))
while(1):if(t1-time.time()<float(wait_time)):breakgevent.joinall(thread_l)
  • gevent 和 monkey: 这是用于并发编程的库,monkey.patch_all() 是将标准库中适合的部分做上猴子补丁,使得它们变得异步化。

  • selenium: 用于自动化网页操作,如点击、输入文本等。

  • requests: 用于发送HTTP请求。

  • hashlib: 提供了一个强大的字符串哈希功能,通常用于加密操作。

相关文章:

  • 几个速度比较快的 Linux 开源镜像站
  • kubectl详解
  • Python TCP编程简单实例
  • c语言,java语言,python语言之间有什么区别
  • 解决updateByExample时属性值异常的问题(部分属性值没有使用占位符?进行占位,而是变成了属性的名称)
  • MyBatis入门——MyBatis XML配置文件(3)
  • CompletableFuture的主要用途是什么?
  • 国内医疗数据安全依然严峻,去年约9000万条数据泄露
  • python数据类型之字符串
  • [4]CUDA中的向量计算与并行通信模式
  • 传感器通过Profinet转Modbus网关与PLC通讯在生产线的应用
  • 力扣226.翻转二叉树101.对称二叉树
  • 如何将Windows PC变成Wi-Fi热点?这里提供详细步骤
  • 纯前端实现截图功能
  • 微信小程序之九宫格抽奖
  • 【comparator, comparable】小总结
  • 【剑指offer】让抽象问题具体化
  • 10个确保微服务与容器安全的最佳实践
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Lucene解析 - 基本概念
  • mysql_config not found
  • React as a UI Runtime(五、列表)
  • Selenium实战教程系列(二)---元素定位
  • WePY 在小程序性能调优上做出的探究
  • 从PHP迁移至Golang - 基础篇
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 浮现式设计
  • 简析gRPC client 连接管理
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 你真的知道 == 和 equals 的区别吗?
  • 收藏好这篇,别再只说“数据劫持”了
  • ​​​【收录 Hello 算法】9.4 小结
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #laravel 通过手动安装依赖PHPExcel#
  • #Z0458. 树的中心2
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (转) Face-Resources
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .describe() python_Python-Win32com-Excel
  • .FileZilla的使用和主动模式被动模式介绍
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Framework杂记
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .Net中的设计模式——Factory Method模式
  • /etc/sudoer文件配置简析
  • @property python知乎_Python3基础之:property
  • @SentinelResource详解
  • [7] CUDA之常量内存与纹理内存
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [AutoSAR 存储] 汽车智能座舱的存储需求