Skip to main content

Nuclei SDK

Nuclei主要是作为CLI工具构建的,通常优化和选项都集中在对CLI的改进上。为了解决从Go中使用Nuclei的增长需求,我们在v3.0.0中引入了改进后的Nuclei Go SDK。 虽然CLI仍然是使用Nuclei的主要方式,但在pkg.go.dev上提供了额外的文档和API参考以及示例。
注意事项:
  • Nuclei仍在积极开发中,因此SDK可能会有重大变更。团队将继续维护文档以解决实施中的变化。
  • 将Nuclei作为服务运行可能会带来安全风险。我们建议谨慎实施Nuclei作为服务,并采取适合您环境的额外安全措施。
如果您有疑问,请通过Help联系我们。

Nuclei版本

Nuclei不支持LTS版本或稳定版本。这是因为Nuclei和模板作为一个整体运行,Nuclei引擎将不断发展以满足编写新模板的需求和功能。 为确保最佳结果,我们建议保持使用最新版本的Nuclei SDK。

性能和优化

Nuclei SDK的最佳和资源高效使用需要对Nuclei如何消耗资源有透彻的理解。我们还建议基于多种因素进行优化。有关扫描更大目标数量的更多详情,请参考大规模扫描

使用的一般建议

  • 尽可能实施host-spray策略
  • 如果可能,不要通过设置低内存限制来约束GC(垃圾收集)。Nuclei(就像go标准http库一样)专注于重用内存而非释放并再次分配。这就是为什么Nuclei与其他Go工具一样,内存使用没有大幅波动,而是逐渐增加或减少内存使用
  • 在了解自己系统以及您正在扫描的目标的需求和能力后,正确调整-c-bs-rl标志
  • 虽然Nuclei可以通过正确的配置处理任何数量的目标,但我们建议批处理目标(基于目标/系统能力)
  • 从SDK使用Nuclei提供了更多在运行内容和方式方面的自定义控制,我们建议制定考虑所有因素的适当分块策略
  • 由于SDK仍在积极开发中,我们建议查看Nuclei功能,特别是tmplexeccore包。了解执行流程将使您更深入地了解如何为您的用例优化Nuclei

报告问题

在理解上述链接文档中提到的所有因素和优化技术后,如果您仍然面临性能问题如崩溃、内存泄漏等,请附上以下详情报告此问题:
  • Nuclei版本(如果不是最新版,请在报告前尝试最新版本)
  • 目标/输入数量
  • 模板数量
  • 大规模扫描文档中提到的所有标志的值或包含相同内容的实际代码片段
  • 观察到的内存使用情况
  • 使用的处理程序类型(NucleiEngine或ThreadSafeNucleiEngine)
  • 任何其他相关详情
对于内存泄漏问题,需要使用pprof进行调试分析以正确诊断问题。