用 Golang 编写的高性能负载测试工具-网络攻防学习社区-安全圈子-FancyPig's blog

用 Golang 编写的高性能负载测试工具

Ddosify 徽标
Ddosify – 高性能负载测试工具

Ddosify - 高性能负载测试工具快速入门

特征

✔️协议不可知 – 目前支持HTTP、HTTPS、HTTP/2。其他协议正在开发中。

✔️基于场景 – 在 JSON 文件中创建您的流。不用一行代码!

✔️ 不同的负载类型 – 测试您的系统对不同负载类型的限制。

安装

ddosify可通过DockerHomebrew Tap以及可从macOS、Linux 和 Windows的发布页面下载的预编译二进制文件获得。

码头工人

docker run -it --rm ddos​​ify/ddosify

Homebrew Tap(macOS 和 Linux)

brew 安装 ddos​​ify/tap/ddosify

apk、deb、rpm、Arch Linux 包

  • 对于 arm 架构更改ddosify_amd64ddosify_arm64ddosify_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 权限才能将 ddos​​ify 二进制文件移动到/usr/local/bin.
  • 该脚本尝试检测您的操作系统(macOS 或 Linux)和体系结构(arm64、x86、amd64)以从发布页面下载适当的二进制文件。
  • 默认情况下,脚本会安装最新版本的ddosify.
  • 如果您遇到问题,请检查常见问题
  • 所需的包:curlsudo
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。

  1. 简单负载测试

     ddosify -t target_site.com
    

    上面的命令运行负载测试,默认值是 10 秒内 100 个请求。

  2. 使用一些功能

     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:80https://target_site.com发送总共1000 个 PUT请求,每个请求超时7秒。

  3. 基于场景的负载测试

     ddosify -config config_examples/config.json
    

    Ddosify 首先使用基本身份验证凭据test_user:12345通过代理http://proxy_host.com:proxy_porthttps://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并选择打开
  • 选择打开
  • 关闭打开的终端
请登录后发表评论