
Ddosify – 高性能负载测试工具
特征
✔️协议不可知 – 目前支持HTTP、HTTPS、HTTP/2。其他协议正在开发中。
✔️基于场景 – 在 JSON 文件中创建您的流。不用一行代码!
✔️ 不同的负载类型 – 测试您的系统对不同负载类型的限制。
安装
ddosify
可通过Docker、Homebrew Tap以及可从macOS、Linux 和 Windows的发布页面下载的预编译二进制文件获得。
码头工人
docker run -it --rm ddosify/ddosify
Homebrew Tap(macOS 和 Linux)
brew 安装 ddosify/tap/ddosify
apk、deb、rpm、Arch Linux 包
- 对于 arm 架构更改
ddosify_amd64
为ddosify_arm64
或ddosify_armv6
。 - 需要超级用户权限。
# For Redhat based (Fedora, CentOS, RHEL, etc.)
rpm -i https://github.com/ddosify/ddosify/releases/latest/download/ddosify_amd64.rpm
# For Debian based (Ubuntu, Linux Mint, etc.)
wget https://github.com/ddosify/ddosify/releases/latest/download/ddosify_amd64.deb
dpkg -i ddosify_amd64.deb
# For Alpine
wget https://github.com/ddosify/ddosify/releases/latest/download/ddosify_amd64.apk
apk add --allow-untrusted ddosify_amd64.apk
# For Arch Linux
git clone https://aur.archlinux.org/ddosify.git
cd ddosify
makepkg -sri
使用便捷脚本(macOS 和 Linux)
- 该脚本需要 root 或 sudo 权限才能将 ddosify 二进制文件移动到
/usr/local/bin
. - 该脚本尝试检测您的操作系统(macOS 或 Linux)和体系结构(arm64、x86、amd64)以从发布页面下载适当的二进制文件。
- 默认情况下,脚本会安装最新版本的
ddosify
. - 如果您遇到问题,请检查常见问题
- 所需的包:
curl
和sudo
curl -sSfL https://raw.githubusercontent.com/ddosify/ddosify/master/scripts/install.sh | sh
从源代码安装(macOS、Linux、Windows)
go install -v go.ddosify.com/ddosify@latest
轻松上手
本节旨在向您展示如何在不深入了解其细节的情况下轻松使用 Ddosify。
-
简单负载测试
ddosify -t target_site.com
上面的命令运行负载测试,默认值是 10 秒内 100 个请求。
-
使用一些功能
ddosify -t target_site.com -n 1000 -d 20 -p HTTPS -m PUT -T 7 -P http://proxy_server.com:80
Ddosify在20秒内通过代理http://proxy_server.com:80向https://target_site.com发送总共1000 个 PUT请求,每个请求超时7秒。
-
基于场景的负载测试
ddosify -config config_examples/config.json
Ddosify 首先使用基本身份验证凭据test_user:12345通过代理http://proxy_host.com:proxy_port向https://test_site1.com/endpoint_1发送HTTP/2 POST请求, 超时时间为3秒。收到响应后,HTTPS GET 请求将与config_examples/payload.txt文件中包含的有效负载一起发送到https://test_site1.com/endpoint_2,超时为 2 秒。此流程将在5秒内重复20次,并且响应将写入stdout。
细节
您可以通过 CLI 选项或配置文件配置负载测试。配置文件支持比 CLI 更多的功能。例如,您无法使用 CLI 选项创建基于场景的负载测试。
CLI 标志
ddosify [FLAG]
旗帜
|
描述 | 类型 | 默认 | 必需的? |
---|---|---|---|---|
-t |
目标网站 URL。示例:https : //ddosify.com | string |
—— | 是的 |
-n |
请求总数 | int |
100 |
不 |
-d |
以秒为单位的测试持续时间。 | int |
10 |
不 |
-p |
请求的协议。支持的协议有HTTP、HTTPS。HTTP/2 支持只能通过使用描述的配置文件来使用。将添加更多协议。 | string |
HTTPS |
不 |
-m |
请求方法。HTTP(s) 的可用方法是GET、POST、PUT、DELETE、UPDATE、PATCH | string |
GET |
不 |
-b |
网络数据包的有效载荷。HTTP 的 AKA 主体。 | string |
—— | 不 |
-a |
基本身份验证。用法:-a username:password |
string |
—— | 不 |
-h |
请求的标头。您可以提供具有多个-h 标志的多个标头。 |
string |
—— | 不 |
-T |
以秒为单位的请求超时。 | int |
5 |
不 |
-P |
代理地址为主机:端口。 -P http://user:pass@proxy_host.com:port' |
string |
—— | 不 |
-o |
测试结果输出目的地。将添加其他输出类型。 | string |
stdout |
不 |
-l |
负载测试的类型。Ddosify 支持 3 种负载类型。 | string |
linear |
不 |
-config |
负载测试的配置文件。 | string |
—— | 不 |
-version |
打印版本、git commit、构建日期 (utc)、go 信息并退出 | —— | —— | 不 |
负载类型
线性
ddosify -t target_site.com -l linear
结果:
注意:如果在给定的持续时间内请求计数太低,则测试可能会比您预期的更早完成。
增加的
ddosify -t target_site.com -l incremental
结果:
挥手
ddosify -t target_site.com -l waved
结果:
配置文件
配置文件让您可以使用 Ddosify 的所有功能。
您可以通过配置文件使用的功能;
- 场景创建
- 自定义负载类型创建
- 来自文件的有效载荷
- 额外的连接配置,例如保持活动启用/禁用逻辑
- HTTP2 支持
用法;
ddosify -config <json_config_path>
config_examples/config.json 中有一个示例配置文件。该文件包含您可以使用的所有参数。每个参数的详细信息;
-
request_count
可选的这相当于
-n
标志。不同之处在于,如果您的场景中有多个步骤,则此值表示步骤的迭代计数。 -
load_type
可选的这相当于
-l
标志。 -
duration
可选的这相当于
-d
标志。 -
manual_load
可选的如果您正在寻找创建自己的自定义负载类型,您可以使用此功能。下面的示例说明 Ddosify 将根据提供的持续时间分别运行场景 5 次、10 次和 20 次。
request_count
并将duration
根据manual_load
配置由 Ddosify 自动填充。在本例中,request_count
将是 35,duration
将是 18 秒。同样manual_load
覆盖load_type
,如果你提供他们两个。因此,在使用manual_load
.
"manual_load": [
{"duration": 5, "count": 5},
{"duration": 6, "count": 10},
{"duration": 7, "count": 20}
]
-
proxy
可选的这相当于
-P
标志。 -
output
可选的这相当于
-o
标志。 -
steps
强制的此参数可让您创建场景。Ddosify 分别运行提供的步骤。对于给定的示例文件 step id: 2 将在收到 step id: 1 的响应后立即执行。执行顺序与配置文件中的步骤顺序相同。
一个步骤的每个参数的详细信息;
-
id
强制的每个步骤必须有一个唯一的整数 id。
-
url
强制的这相当于
-t
标志。 -
protocol
可选的这相当于
-p
标志。 -
method
可选的这相当于
-m
标志。 -
headers
可选的具有键:值格式的标题列表。
-
payload
可选的这相当于
-b
标志。 -
payload_file
可选的如果您需要较长的有效负载,我们建议使用此参数而不是
payload
. -
auth
可选的基本身份验证。
"auth": { "username": "test_user", "password": "12345" }
-
-
-
others
可选的此参数接受动态键:值对以配置所用协议的连接详细信息。
"others": { "keep-alive": true, // Default false "disable-compression": false, // Default true "h2": true, // Enables HTTP/2. Default false. "disable-redirect": true // Default false }
-
常见问题
macOS 安全问题
"ddosify" can’t be opened because Apple cannot check it for malicious software.
- 打开
/usr/local/bin
- 右键单击
ddosify
并选择打开 - 选择打开
- 关闭打开的终端