ChatGPT-API-Leakage完全指南:10个步骤掌握GitHub API密钥嗅探工具
ChatGPT-API-Leakage完全指南:10个步骤掌握GitHub API密钥嗅探工具
ChatGPT-API-Leakage是一款强大的GitHub API密钥嗅探工具,能够帮助开发者扫描GitHub上泄露的OpenAI API密钥,提升API安全意识。本指南将通过10个简单步骤,带你从安装到熟练使用这款工具,轻松掌握密钥检测与保护技巧。
1. 工具简介:什么是ChatGPT-API-Leakage?
ChatGPT-API-Leakage是一个开源安全工具,专为扫描GitHub上泄露的OpenAI API密钥设计。它通过智能搜索和正则匹配技术,能够快速识别公开代码库中可能存在的API密钥,帮助开发者及时发现并修复安全漏洞。
该工具采用Selenium模拟浏览器操作,通过GitHub网页搜索实现正则表达式匹配,比传统API搜索更精准。扫描结果会自动存储在SQLite数据库中,方便后续分析和管理。
2. 准备工作:安装必要依赖
在开始使用前,请确保你的系统已安装以下工具:
- Google Chrome浏览器
- Python包管理器uv(自动处理Python版本和依赖)
uv是一个快速的Python包管理器,能自动读取项目中的pyproject.toml和uv.lock文件,确保依赖环境一致性。如果你还没有安装uv,可以访问uv官方文档获取安装指南。
3. 一键安装:获取工具源码
首先,克隆项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/ch/ChatGPT-API-Leakage
cd ChatGPT-API-Leakage
然后使用uv安装项目依赖:
uv sync
如需包含开发工具(如pylint、flake8、ruff),可运行:
uv sync --all-groups
4. 快速启动:运行扫描工具
安装完成后,只需一条命令即可启动工具:
uv run main.py
首次运行时,工具会自动打开Chrome浏览器,要求你登录GitHub账号。这是因为GitHub的高级搜索功能需要用户登录才能使用。登录成功后,工具将开始自动扫描过程。
ChatGPT-API-Leakage扫描过程演示,显示API密钥检测进度和结果
5. 高级配置:自定义扫描参数
工具支持多种命令行参数,可根据需求自定义扫描行为:
| 参数 | 描述 | 默认值 |
|---|---|---|
--from-iter |
从指定迭代开始扫描 | None |
--debug |
启用调试模式,显示详细日志 | False |
-ceko, --check-existed-keys-only |
仅检查数据库中已存在的密钥 | False |
-k, --keywords |
指定搜索关键词列表 | 默认关键词列表 |
-l, --languages |
指定编程语言过滤列表 | 默认语言列表 |
常用示例:
# 从迭代100开始扫描
uv run main.py --from-iter 100
# 仅检查现有密钥
uv run main.py --check-existed-keys-only
# 使用自定义关键词和语言
uv run main.py -k "openai" "chatgpt" -l python javascript
6. 扫描原理:工具如何工作?
ChatGPT-API-Leakage的核心工作流程包括以下步骤:
-
关键词搜索:使用预设关键词(如"api key"、"openai"、"chatgpt"等)在GitHub上搜索相关代码库。完整关键词列表可查看src/configs.py文件。
-
语言过滤:默认扫描多种编程语言,包括Python、JavaScript、TypeScript等,可通过参数自定义。
-
路径过滤:重点扫描常见配置文件路径,如.env、.json、.yml等,提高检测效率。
-
正则匹配:使用精心设计的正则表达式识别OpenAI API密钥格式,包括最新的sk-proj-和sk-svcacct-格式。
-
结果验证:对发现的密钥进行有效性验证,并记录状态。
-
数据存储:将结果保存在SQLite数据库中,便于后续查询和分析。
7. 结果查看:分析扫描数据
扫描结果保存在项目根目录的github.db SQLite数据库中。你可以使用任何SQLite数据库浏览器打开查看,如DB Browser for SQLite。
数据库包含两个主要表:
- APIKeys:存储检测到的API密钥、状态和最后检查时间
- URLs:存储包含密钥的GitHub URL地址
ChatGPT-API-Leakage数据库截图,显示不同状态的API密钥
密钥状态说明:
- yes:有效的API密钥
- invalid_api_key:无效的API密钥格式
- insufficient_quota:密钥有效但额度不足
8. 实用技巧:提高扫描效率
以下技巧可帮助你获得更好的扫描效果:
-
合理设置关键词:根据实际需求调整关键词列表,避免过于宽泛导致结果过多。
-
分语言扫描:对不同编程语言分开扫描,可以获得更全面的结果,因为GitHub搜索有页数限制。
-
定期更新工具:项目会不断更新API密钥的正则表达式,以应对OpenAI密钥格式的变化。
-
注意速率限制:工具默认已考虑GitHub和OpenAI的速率限制,避免频繁请求导致账号被限制。
-
利用进度保存:工具会自动保存扫描进度,中断后可从上次位置继续。
9. 安全警示:为什么要保护API密钥?
API密钥如同数字身份证,一旦泄露可能导致:
- 未经授权的API调用,产生意外费用
- 敏感数据泄露
- 账户被他人控制
GitHub已推出推送保护功能,当检测到敏感信息时会阻止代码推送:
作为开发者,应始终遵循API密钥保护最佳实践:
- 使用环境变量存储密钥
- 避免将密钥提交到代码仓库
- 定期轮换密钥
- 使用最小权限原则配置API密钥
10. 常见问题:解决使用难题
Q: 为什么工具使用Selenium而不是GitHub Search API?
A: 因为GitHub官方API不支持正则表达式搜索,而网页版搜索支持。使用Selenium可以实现更精准的正则匹配,提高密钥检测率。
Q: 为什么要限制编程语言搜索范围?
A: 由于GitHub搜索结果有页数限制(通常前5页),通过限制编程语言可以拆分搜索结果,获得更多潜在密钥。
Q: 扫描到的API密钥为什么可能无法使用?
A: 截图中的API密钥仅用于演示工具功能,实际密钥可能在几小时或几天内失效。建议使用工具扫描自己的代码库,而不是依赖示例密钥。
Q: 如何避免我的API密钥被此类工具扫描到?
A: 启用GitHub的密钥扫描和推送保护功能,使用环境变量或密钥管理服务,避免在代码中硬编码密钥。
总结
ChatGPT-API-Leakage是一款功能强大的安全工具,不仅能帮助开发者发现GitHub上泄露的OpenAI API密钥,更重要的是提高安全意识,养成良好的密钥管理习惯。通过本指南的10个步骤,你已经掌握了工具的安装、配置、使用和结果分析方法。
记住,安全是一个持续过程,定期扫描和更新保护措施才能有效防范API密钥泄露风险。
更多推荐



所有评论(0)