HULK DoS 工具已从 Python 移植到 Go 语言。 原始 Python 实用工具由 Barry Shteiman 编写,详见 http://www.sectorix.com/2012/05/17/hulk-web-server-dos-tool/ 我只是快速粗略地按原样移植了代码。保留了原始函数名称,并基本保持了原始逻辑。
与 Python 版本的主要区别在于 Go 语言针对并发的架构:goroutine。hulk.py 会为连接池中的每个连接创建一个新线程,因此会使用成百上千个线程。 而 hulk.go 仅使用轻量级的 goroutine,这些 goroutine 只占用几十个线程(通常 Go 运行时为每个 CPU 核心启动一个线程,再加上几个服务线程)。这种架构使 Go 版本能更高效地利用资源,并在相同硬件上获得比 Python 版本高得多的连接池。
此工具专为压力测试设计,并且确实可能使配置不当的服务器或编写糟糕的应用宕机。请谨慎使用。
示例:
$ hulk -site http://example.com/test/ 2>/dev/null
$ HULKMAXPROCS=4096 hulk -site http://example.com 2>/tmp/errlog
有用的环境变量:
更多详情:http://old.siberian.laika.name/node/7
更新:嗯,我最初创建这个实用工具是为了完成一次性任务,当时我只是稍微学了点 Go。令人惊讶的是,我发现这个工具被其他人使用,在 GitHub 上获得了一些星标,甚至被收录在 BlackArch Linux 发行版 中。所以我对代码做了一些清理。
我认为它可能属于公共领域,因为它只是一段简单简短的代码。但出于某种我不记得的原因,我选择了 GPL 许可证。好吧。那么,HULK 的 Go 版本采用 GPLv3 许可证。详见 LICENSE。
我与原始的 Python 版本 HULK 实用工具无关。原始 HULK 实用工具归 Barry Shteiman (http://sectorix.com) 所有。原始源代码中未提及任何许可证,因此它不受 GPL 约束。有关许可证问题,请咨询原始工具的作者。