Skip to content

v0.5

Latest

Choose a tag to compare

@huaimeng666 huaimeng666 released this 18 Aug 09:12

12. 性能与代码结构重构 (v0.5)

  • 问题:

    1. 性能瓶颈: 程序在运行过程中会反复编译相同的正则表达式,尤其是在处理过滤规则和内容发现时,造成了不必要的CPU资源浪费。
    2. 代码耦合: 正则表达式散落在代码的各个角落,管理和维护困难。
    3. 编译错误: 由于变量作用域和初始化时机不当,导致在特定场景下出现 undefined 或 not exported 的编译错误。
  • 解决方案:

    1. 全面预编译正则: 对项目中所有正则表达式(包括URL发现、内容过滤、敏感信息提取等)进行了全面重构。所有正则现在都在程序启动时被预编译一次,并作为全局变量或配置项在各模块间共享。此项改动显著降低了运行时的CPU开销,大幅提升了扫描性能。
    2. 中心化管理: 将所有核心的正则表达式统一移至 config 包中进行定义和初始化,使代码结构更清晰,维护性更强。
    3. 修复编译Bug:
      • 新增 config.Init() 函数,并调整了在 main.go 中的调用时机,确保所有配置(特别是 -d 参数相关的正则)在被使用前都已正确初始化。
      • 修正了变量的导出规则(将 domainRegex 改为 DomainRegex),解决了跨包调用时 not exported 的问题。
      • 清理了 crawler/run.go 中冗余的初始化代码。
  • 价值:

    • 本次重构不仅彻底解决了遗留的编译错误,更是一次重要的性能和架构升级,为未来功能的迭代打下了坚实的基础。

13. 健壮性与稳定性修复 (v0.5)

  • 问题:
    • 在处理无法通过 http/https 访问的URL(例如目标列表中包含非标准web端口的地址,比如xxx.com:25)时,程序会因未正确处理网络连接失败而引发“空指针”错误,导致程序意外崩溃。
    • 旧代码在某些情况下未及时关闭网络连接,存在资源泄露的风险。
  • 解决方案:
    • 重写了 util/utils.go 中的 GetProtocol 函数。
    • 新的实现能够安全地处理网络连接错误。当遇到无法访问的URL时,程序不再崩溃,而是会跳过该URL并继续执行。
    • 修复了资源泄露问题,确保所有网络连接都能被正确关闭,提升了程序长时间运行的稳定性。
  • 价值:
    • 彻底解决了特定URL导致的程序崩溃问题,显著增强了工具在处理复杂和异常目标列表时的健壮性。