【GitHub精选项目】短信系统测试工具:SMSBoom 操作指南

在这里插入图片描述

前言

本文为大家带来的是 OpenEthan 开发的 SMSBoom 项目 —— 一种用于短信服务测试的工具。这个工具能够发送大量短信,通常用于测试短信服务的稳定性和处理能力。在合法和道德的范畴内,SMSBoom 可以作为一种有效的测试工具,帮助开发者和系统管理员评估短信服务的性能。

然而,值得注意的是调 SMSBoom 的使用必须严格遵守法律法规和道德标准。错误使用此类工具不仅违反法律,而且可能导致严重的骚扰行为。因此,本文将仅聚焦于其在合法和道德框架下的使用,如压力测试和系统稳定性评估。

在这篇文章中,我们将探讨 SMSBoom 的安装、配置和合法使用方法,旨在为需要进行合法短信服务测试的专业人士提供指导。

项目地址:https://github.com/OpenEthan/SMSBoom


项目概览

SMSBoom 是一款专门设计用于发送大量短信的工具。其主要用途是为系统管理员和开发者提供一种手段来测试短信服务的负载能力和稳定性。通过模拟高流量短信发送,SMSBoom 能够帮助识别和解决短信服务平台在极端情况下可能遇到的问题。

该工具的核心特点包括其能够快速生成和发送大量短信,从而使用户能够评估短信服务的响应速度和处理能力。这在测试短信服务的稳定性、扩展性和可靠性时尤为重要。

具体的功能可以看项目所展示的 README 文档。

在这里插入图片描述

克隆项目

git clone

最简单的,在命令行工具数据以下命令即可,如下图所示:

git clone https://github.com/OpenEthan/SMSBoom

在这里插入图片描述

Download ZIP

当然,使用 Download ZIP 也是个不错的下载方式。

在这里插入图片描述




可以看到,这个效果是非常不错的!

在这里插入图片描述

使用指南

本项目由 Python 所编写,所以特别容易理解上手。
在前面将项目拷贝下来后,去到项目目录下,需要安装所需要的库。在命令行执行以下命令即可。

pip install -r requirement.txt

命令行版

接下来,我们去在命令行执行 python mssboom.py,可以看到以下画面。

在这里插入图片描述

  • 提示有4个可接收的命令,分别是
    1. asyncrun:以最快的方式请求接口,使用真正的异步处理方式,支持高并发。
    2. onerun:单线程模式,通常用于测试和调试。
    3. run:传入线程数和手机号,启动,支持同时测试多个手机号。
    4. update:从 GitHub 获取最新的接口和代码更新。

我们可以在命令行中输入 smsboom.py 后跟随一个命令和相应的选项和参数来执行不同的操作。例如,如果要使用 asyncrun 命令,可以执行类似以下的命令:

python smsboom.py asyncrun [OPTIONS] [ARGS]

另外还可以使用 --help 选项来获取有关每个命令的详细帮助信息,例如我们需要查看单线程模式,

python smsboom.py onerun --help

可以看到以下画面,
在这里插入图片描述

在真正要测试的时候,就可以使用来进行使用了。

python smsboom.py onerun --phone 13xxxxxxxxx

GUI版

在命令行中输入,

python smsboom_GUI.py 

就可以看到以下画面了,真正的简洁明了!

在这里插入图片描述

代码摘选

run 模式

run 模式默认是64线程,速度非常快!

@click.command()
@click.option("--thread", "-t", help="线程数(默认64)", default=64)
@click.option("--phone", "-p", help="手机号,可传入多个再使用-p传递", multiple=True, type=str)
@click.option('--frequency', "-f", default=1, help="执行次数(默认1次)", type=int)
@click.option('--interval', "-i", default=60, help="间隔时间(默认60s)", type=int)
@click.option('--enable_proxy', "-e", is_flag=True, help="开启代理(默认关闭)", type=bool)
def run(thread: int, phone: Union[str, tuple], frequency: int, interval: int, enable_proxy: bool = False):"""传入线程数和手机号启动测试,支持多手机号"""with ThreadPoolExecutor(max_workers=thread) as pool:...

asyncRun 模式

asyncRun 使用 asyncio 构建了异步任务,速度是嘎嘎快的!

@click.option("--phone", "-p", help="手机号,可传入多个再使用-p传递", prompt=True, required=True, multiple=True)
@click.command()
def asyncRun(phone):"""以最快的方式请求接口(真异步百万并发)"""_api = load_json()_api_get = load_getapi()apis = _api + _api_getloop = asyncio.get_event_loop()loop.run_until_complete(runAsync(apis, phone))

onerun 模式

onerun 模式是简根据传入的手机号码作为测试,单线程。

@click.option("--phone", "-p", help="手机号,可传入多个再使用-p传递", prompt=True, required=True, multiple=True)
@click.command()
def oneRun(phone):"""单线程(测试使用)"""_api = load_json()_api_get = load_getapi()apis = _api + _api_getfor api in apis:try:reqFunc(api, phone)except:pass

总结

SMSBoom 是一个功能强大的工具,专为短信服务的压力测试和性能评估而设计。通过模拟高流量短信发送,它帮助用户在实际环境中测试和评估短信服务平台的稳定性和扩展性。该工具提供了多种运行模式,包括异步处理和单线程模式,以适应不同的测试需求。

在使用 SMSBoom 时,需要强调的是,这个工具应仅用于合法的测试和评估目的,如系统性能测试、软件开发中的压力测试等。非法或不道德的使用,例如发送垃圾短信或进行骚扰,是严格禁止的,并可能导致法律后果。

SMSBoom 项目的便捷性和高效性使它成一个有用工具,但它也是一把双刃剑。因此,鼓励所有用户在使用时遵循道德规范和法律要求,确保其应用仅限于正当和合法的场景。

后话

本次分享到此结束,
see you~~🎈🎈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/225342.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【编译原理】基于词法分析器的LL1语法分析器

【编译原理】基于词法分析器的LL1语法分析器 实验要求 设计一个满足以下要求的⽂法: (1)识别只包含变量声明语句和执行语句程序段的语法结构合法性; (2)变量声明中只使用int,char,float 3类基本类型&…

Android studio 花式按键

一、activity_main.xml代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.a…

【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )

文章目录 一、 list 双向链表容器简介1、容器特点2、容器操作时间复杂度3、遍历访问5、头文件 二、 list 双向链表容器 构造函数1、默认无参构造函数2、创建包含 n 个相同元素的 list 双向链表3、使用初始化列表构造 list 双向链表4、使用另外一个 list 容器 构造 list 双向链表…

【Java基础】Java中异常分类,他们之间的区别?

&#x1f341;Java中异常分哪两类 &#x1f341;Java中异常类&#x1f341;受检异常&#x1f341;非受检异常 &#x1f341;拓展知识仓&#x1f341;什么是Throwable&#x1f341;Error和Exception的区别和联系&#x1f341; 列举几个常用的RuntimeException&#x1f341;Java异…

关于“Python”的核心知识点整理大全41

目录 scoreboard.py game_functions.py game_functions.py 14.3.8 显示等级 game_stats.py scoreboard.py scoreboard.py scoreboard.py game_functions.py game_functions.py alien_invasion.py 14.3.9 显示余下的飞船数 ship.py scoreboard.py 我们将最高得分圆整…

微信这样分类客户,帮你轻松提升业绩!

无论是什么行业&#xff0c;都会遇到各种各样的客户&#xff0c;能不能成交这些客户&#xff0c;关键的一点在于有没有明确的客户分类。 今天就给大家分享几个高效分类客户的方法&#xff0c;帮助大家提高成交率和业绩。 1、分组管理 在微信中创建不同的分组&#xff0c;比如…

MyBatis——MyBatis的缓存

MyBatis的缓存 创建工程&#xff1a; 1缓存介绍 为什么使用缓存&#xff1f; 首次访问时&#xff0c;查询数据库&#xff0c;并将数据存储到内存中&#xff1b;再次访问时直接访问缓存&#xff0c;减少IO、硬盘读写次数、提高效率 Mybatis中的一级缓存和二级缓存&#xff1f;…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

【JavaScript】Set、Map、WeakSet、WeakMap

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

Gin框架之使用 go-ini 加载.ini 配置文件

首先,联想一个问题,我们在部署服务时,通常为了方便,对于需要迭代更新的代码进行修改,但是比对shell,可以搞一个变量将需要修改的,以及修改起来变动处多的,写在变量内,到时候如果需要变更,可以直接变更变量即可; 那么,golang有没有什么方式可以将需要变的东西保存起…

TCP协议及工作原理(三)客户端的搭建

ui界面的搭建 &#xff1a; QTcpServer是基于TCP的服务器类提供一种方便的方式管理和创建TCP服务器&#xff0c;QTcpSocket处理TCP套接字编程用于建立TCP连接&#xff0c;发送接收数据等功能。 参考前两篇可深入理解&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

php 不加后缀访问

实现不带后缀访问php文件的方法&#xff1a;首先在htaccess文件中加入内容“RewriteRule ^(api/token) token.php [L]”&#xff1b;然后通过根目录下的“token.php”来接受“api/token”&#xff1b;最后修改配置文件。 考虑的做法有&#xff1a; HTTP重写技术&#xff0c;让…

Win10电脑蓝牙默认音量100的设置教程

在Win10电脑操作过程中&#xff0c;用户想设置连接蓝牙后音量默认是100&#xff0c;但不知道具体的设置操作步骤。这时候用户需要打开Win10系统上的注册表&#xff0c;点击修改注册表来完成这一设置&#xff0c;下面就是Win10电脑蓝牙默认音量100的设置教程介绍&#xff0c;帮助…

【Java、Python】获取电脑当前网络IP进行位置获取(附源码)

我相信看到这篇博客的时候心里肯定是想解决自己的一个问题的&#xff0c;而这篇博客我就以简单快速的方式解决这些烦恼&#xff01; 一、获取当前IP 在Java中自带了一些自己的流对象来获取当前的IP地址&#xff0c;不多说我们直接上代码。 //获取当前网络ip地址 ipAddress Ine…

CentOS安装MongoDB

CentOS安装MongoDB 文章目录 CentOS安装MongoDB1. 安装并运行2. 创建用户/密码3. 测试语句4. 允许外网访问 1. 安装并运行 在 CentOS 上安装 MongoDB&#xff0c;你可以按照以下步骤进行&#xff1a; 导入 MongoDB 的 GPG 密钥&#xff1a; sudo rpm --import https://www.mon…

React快速入门之组件

组件 文件&#xff1a;Profile.js export default function Profile({isPacked true&#xff0c;head,stlyeTmp,src,size 80}) {if (isPacked) {head head " ✔";}return (<div><h1>{head}</h1><imgsrc{src}alt"Katherine Johnson&q…

MongoDB ReplicaSet 部署

文章目录 前言1. 环境准备2. 生成密钥3. 配置参数4. 创建 ReplicaSet5. 副本集维护5.1 新增成员5.2 移除节点5.4 主节点降级5.5 阻止选举5.6 允许副本节点读5.7 延迟观测 6. 连接副本集 后记 前言 本篇文章介绍 MongoDB ReplicaSet 如何搭建&#xff0c;及常用的维护方法。 1…

Redis-实践知识

转自极客时间Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis最佳实践 普通KEY Redis 的key虽然可以自定义&#xff0c;但是最好遵循下面几个实践的约定&#xff1a; 格式&#xff1a;[业务名称]:[数据名]:[id] 长度不超过44字节 不…

【Jmeter】Jmeter基础9-BeanShell介绍

3、BeanShell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法。 3.1、Jmeter中使用的BeanShell 在Jmeter中&#xff0c;除了配置元件&#xff0c;其他类型的元件中都有BeanShell。BeanShell 是一种完全符合Java语法规范的脚本语言,并且又拥…

TCP并发服务器

一.进程实现TCP并发服务器 #include <func.h> #define PORT 6666 #define IP "192.168.124.42"void handler(int arm) {while(waitpid(-1,NULL,WNOHANG) > 0); } int main(int argc, const char *argv[]) {//接受17号信号signal(17, handler);i…