Skip to content

hangliuc/gitlab-codesearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitLab 代码关键字搜索工具

这是一个的 GitLab 代码审计与关键字搜索工具。它支持多线程并发搜索多分支自动切换以及富文本终端输出,旨在帮助开发人员和安全审计人员快速定位多个项目中的敏感信息或特定代码逻辑。

🌟 核心功能

  • 多分支联动:默认同时搜索 mastermain 分支,确保覆盖不同仓库的默认命名习惯。
  • 高性能并发:通过 ThreadPoolExecutor 支持跨项目、跨关键字并行搜索,极大提升扫描效率。
  • 富文本美化:使用 rich 库生成带颜色的表格,并自动高亮代码片段中的匹配关键字。
  • 健壮性增强:内置 tenacity 自动重试机制,并能智能处理 GitLab API 的 429 (Too Many Requests) 速率限制。
  • 多格式导出:支持将搜索结果导出为 .xlsx (Excel)、.csv.json 文件。

📦 依赖安装

在运行工具前,请确保安装以下 Python 第三方库:

pip3 install -r requirements.txt

🚀 使用方法

1. 按组搜索 (最常用)

搜索指定分组(Group)及其所有子组下项目的 mastermain 分支:

python main.py -u [https://gitlab.example.com](https://gitlab.example.com) -t YOUR_TOKEN -g 123 -k "password" "api_key"

2. 按项目搜索

搜索指定项目的 mastermain 分支:

python main.py -u [https://gitlab.example.com](https://gitlab.example.com) -t YOUR_TOKEN -p 456 -k "password" "api_key"

3. 指定搜索分支

搜索指定项目的自定义分支(默认 mastermain):

python main.py -u [https://gitlab.example.com](https://gitlab.example.com) -t YOUR_TOKEN -p 456 -b feature-branch -k "password" "api_key"

🛠 参数说明

短参数 长参数 描述 默认值
-u --url GitLab 服务器 URL (例如: https://gitlab.com) -
-t --token GitLab API Private Token (需具备 read_api 权限) -
-k --keywords 要搜索的关键字列表,支持同时输入多个关键字 -
-g --group GitLab 分组 ID (按组搜索时必填) -
-p --project 单个项目 ID (按特定项目搜索时使用) -
-b --branch 搜索的目标分支列表,支持指定多个分支进行扫描 master main
-o --output 导出文件路径 (支持扩展名: .xlsx, .csv, .json) 默认终端展示
-v --verbose 开启详细模式,显示搜索过程中的调试信息与速率限制提醒 False

⚠️ 注意事项

  1. 权限要求:确保你的 API Token 具有 read_api 或 api 权限。

  2. 速率限制:如果遇到 API 限制,工具会自动休眠并重试。你也可以在 GitLab 管理后台调高搜索频率限制。 image.png

  3. 并发调节:默认并发数为 10,如需扫描极大规模的 Group,请在 search.py 中调整 max_workers 参数。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages