gl0bal01/discord-amazon-rekognition

GitHub: gl0bal01/discord-amazon-rekognition

一个集成 AWS Rekognition 的 Discord 机器人,可在聊天平台内直接完成图像分析、人脸检测与比对、OCR 文本提取、名人识别和内容审核等可视化情报分析任务。

Stars: 0 | Forks: 0

# 🎯 Discord Amazon Rekognition
[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/) [![Discord.js](https://img.shields.io/badge/discord.js-v14.16.3-blue.svg)](https://discord.js.org/) [![AWS SDK](https://img.shields.io/badge/AWS_SDK-v3.667.0-orange.svg)](https://aws.amazon.com/sdk-for-javascript/) [![DOI](https://zenodo.org/badge/1005680658.svg)](https://doi.org/10.5281/zenodo.15722656) [![GitHub](https://img.shields.io/badge/GitHub-gl0bal01-181717?logo=github&logoColor=white)](https://github.com/gl0bal01) [![AWS Rekognition](https://img.shields.io/badge/AWS-Rekognition-FF9900?style=for-the-badge&logo=amazon-aws&logoColor=white)](https://aws.amazon.com/rekognition/) [![Computer Vision](https://img.shields.io/badge/AI-Computer_Vision-purple?style=for-the-badge)](https://aws.amazon.com/rekognition/) [![Face Detection](https://img.shields.io/badge/Feature-Face_Detection-blue?style=for-the-badge)](https://aws.amazon.com/rekognition/) [![OCR](https://img.shields.io/badge/Feature-Text_Extraction-green?style=for-the-badge)](https://aws.amazon.com/rekognition/)
一个集成了 AWS Rekognition 的 Discord 机器人,可直接在 Discord 服务器内提供图像分析、人脸检测、文本提取、名人识别、内容审核和人脸比对功能。 **该机器人可用于涉及图像分析(例如物体识别、文本提取和人脸比对)的 OSINT 工作流中。** ## 📸 预览
人脸比对: ✅ ![Face Detection](/assets/0.png)
人脸比对: ❌ ![Face Detection](/assets/1.png)
分析结果: 名人 ![Face Detection](/assets/2.png)
分析结果: 文本 ![Face Detection](/assets/3.png)
## 📝 目录
点击展开 - [✨ 功能](#-features) - [🚀 命令](#-commands) - [📋 前置条件](#-prerequisites) - [🛠️ 安装](#️-installation) - [🔑 AWS 配置](#-aws-setup) - [🔧 Discord 设置](#-discord-setup) - [⚡ 运行机器人](#-running-the-bot) - [🔗 机器人邀请](#-bot-invitation) - [📁 项目结构](#-project-structure) - [🎯 使用示例](#-usage-examples) - [📈 性能](#-performance) - [🐛 故障排除](#-troubleshooting) - [🔧 开发](#-development) - [📊 API 限制](#-api-limits) - [🛡️ 安全](#️-security) - [🤝 贡献](#-contributing)
## ✨ 功能 ### 🔍 **综合图像分析** - **物体与场景检测**:识别数千种物体、场景和概念 - **文本提取 (OCR)**:高精度地从图像中提取文本 - **人脸分析**:检测人脸,包含人口统计学特征、情绪和面部属性 - **名人识别**:识别图像中的知名人物 - **内容审核**:自动检测不当内容 - **人脸比对**:通过相似度评分比对两张图像中的人脸 ### 🎯 **高级功能** - **批处理**:同时分析多种特征 - **AWS 驱动**:使用 AWS Rekognition 的机器学习模型 - **详细报告**:导出详尽的 JSON 分析报告 - **图像支持**:支持 URL 链接和上传图像 (JPEG, PNG) - **实时处理**:带有进度指示器的快速分析 - **错误处理**:健全的错误管理与用户友好的提示信息 ### 💡 **用户体验** - **斜杠命令**:带有自动补全功能的现代 Discord 界面 - **可视化结果**:带有缩略图和有序数据的富嵌入消息 - **文件附件**:提供详细的 JSON 报告以供进一步分析 - **进度更新**:处理期间的实时状态更新 - **智能验证**:输入验证和有用的错误提示 ## 🚀 命令 ### `/rekognition analyze` 使用多种 AI 功能执行综合图像分析。 **选项:** - `url`(可选):用于分析的直接图像 URL - `image`(可选):上传一个图像文件进行分析 - `features`(可选):指定要分析的特征 **可用功能:** - **所有功能**(推荐):运行完整分析 - **标签与物体**:检测物体、场景和概念 - **文本检测 (OCR)**:从图像中提取文本 - **人脸分析**:分析人脸、情绪和人口统计学特征 - **内容审核**:检查不当内容 - **名人识别**:识别知名人物 **示例:** ``` /rekognition analyze image:[upload] features:All Features /rekognition analyze url:https://example.com/image.jpg features:Face Analysis ``` ### `/rekognition compare` 通过相似度评分比对两张图像中的人脸。 **选项:** - `source_url` / `source_image`:包含待匹配人脸的参考图像 - `target_url` / `target_image`:用于搜索匹配人脸的目标图像 - `similarity`(可选):最低相似度阈值(0-100,默认:80) **示例:** ``` /rekognition compare source_image:[upload1] target_image:[upload2] similarity:75 /rekognition compare source_url:https://example.com/face1.jpg target_url:https://example.com/face2.jpg ``` ## 📋 前置条件 - **Node.js** v18.0.0 或更高版本(或 **Bun** v1.0+) - **Docker**(可选,推荐用于生产环境) - **Discord Application** 和 bot token - 带有 Rekognition 访问权限的 **AWS Account** - 具有适当权限的 **AWS IAM User** ## 🛠️ 安装说明 ### 1. 克隆仓库 ``` git clone https://github.com/gl0bal01/discord-amazon-rekognition.git cd discord-amazon-rekognition ``` ### 2. 安装依赖 ``` bun install ``` ### 3. 设置环境变量 ``` cp .env.example .env ``` 使用你的配置编辑 `.env` 文件: ``` # Discord 配置 DISCORD_TOKEN=your_discord_bot_token_here CLIENT_ID=your_discord_application_client_id_here GUILD_ID=your_development_server_id_here # AWS 配置 AWS_ACCESS_KEY_ID=your_aws_access_key_id_here AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key_here AWS_REGION=us-east-1 ``` ## 🔑 AWS 设置 ### 1. 创建 AWS 账户 如果你还没有账户,请在 [aws.amazon.com](https://aws.amazon.com/) 注册。 ### 2. 创建 IAM 用户 1. 前往 **IAM Console** → **Users** → **Create User** 2. 选择 "Programmatic access" 3. 创建或附加具有以下权限的策略: ``` { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rekognition:DetectLabels", "rekognition:DetectText", "rekognition:DetectFaces", "rekognition:DetectModerationLabels", "rekognition:RecognizeCelebrities", "rekognition:CompareFaces" ], "Resource": "*" } ] } ``` ### 3. 获取凭证 - 复制 **Access Key ID** 和 **Secret Access Key** - 将它们添加到你的 `.env` 文件中 ### 4. 选择 AWS 区域 选择离你的用户最近的区域: - `us-east-1` (N. Virginia) - 默认 - `us-west-2` (Oregon) - `eu-west-1` (Ireland) - `ap-southeast-1` (Singapore) ## 🔧 Discord 设置 ### 1. 创建 Discord 应用 1. 前往 [Discord Developer Portal](https://discord.com/developers/applications) 2. 点击 **"New Application"** 并为你的机器人命名 3. 转到 **"Bot"** 部分并创建机器人 4. 将 **Bot Token** 复制到你的 `.env` 文件中 ### 2. 获取 Client ID 1. 在 **"General Information"** 部分 2. 复制 **Application ID**(这就是你的 Client ID) ### 3. 机器人权限 你的机器人需要以下权限: - `Send Messages` (2048) - `Use Slash Commands` (2147483648) - `Attach Files` (32768) - `Embed Links` (16384) **权限整数**: `2147516160` ## ⚡ 运行机器人 ### 1. 部署命令 ``` # Development(即时部署到测试服务器) bun run deploy # Production(全局部署 - 最多需要 1 小时) bun run deploy:global ``` ### 2. 启动机器人 ``` # Production bun run start # 带自动重启的 Development bun run dev ``` ### 3. Docker(推荐用于生产环境) ``` # Build docker build -t rekognition-bot . # Run docker run -d \ --name rekognition-bot \ --read-only \ --tmpfs /app/temp:rw,noexec,nosuid,size=100m \ --memory=512m \ --cpus=1.0 \ --pids-limit=50 \ --security-opt=no-new-privileges:true \ --env-file .env \ --restart unless-stopped \ rekognition-bot ``` ### 4. 验证启动 查找以下启动消息: ``` ✅ Loaded command: rekognition 📁 Created temporary files directory 🎯 Discord Amazon Rekognition Bot is ready! 📊 Logged in as: YourBotName#1234 ``` ## 🔗 机器人邀请 使用此 URL 邀请你的机器人(替换 `YOUR_CLIENT_ID`): ``` https://discord.com/api/oauth2/authorize?client_id=YOUR_CLIENT_ID&permissions=2147516160&scope=bot%20applications.commands ``` **所需权限:** - **Send Messages**:响应命令 - **Use Slash Commands**:注册斜杠命令 - **Attach Files**:发送分析报告和图像 - **Embed Links**:显示富文本结果嵌入 ## 📁 项目结构 ``` discord-amazon-rekognition/ ├── commands/ │ └── rekognition.js # Main Rekognition command ├── tests/ │ └── rekognition.test.js # Unit tests (bun test) ├── temp/ # Temporary file storage (auto-created) ├── .dockerignore # Docker build exclusions ├── .env.example # Environment variables template ├── .gitignore # Git ignore rules ├── deploy-commands.js # Command deployment script ├── Dockerfile # Multi-stage production container ├── index.js # Main bot application ├── LICENSE # MIT license ├── package.json # Dependencies and scripts └── README.md # This documentation ``` ## 🎯 使用示例 ### 示例 1:综合图像分析 ``` /rekognition analyze 📎 Upload: family_photo.jpg 🎯 Features: All Features ``` **结果:** - **物体**:Person (99.5%),Clothing (95.2%),Smile (87.1%) - **文本**:从横幅中提取的 "Happy Birthday!" - **人脸**:检测到 3 张人脸,附带年龄范围和情绪 - **JSON 报告**:附加的详细技术分析 ### 示例 2:人脸比对 ``` /rekognition compare 📎 Source: person1.jpg 📎 Target: group_photo.jpg 📊 Similarity: 75% ``` **结果:** - **找到匹配**:检测到 89.2% 的相似度 - **其他人脸**:目标图像中有 4 张不匹配的人脸 - **比对报告**:详细的匹配数据 ### 示例 3:文本提取 (OCR) ``` /rekognition analyze 🔗 URL: https://example.com/document.jpg 🎯 Features: Text Detection (OCR) ``` **结果:** - **提取的文本**:图像中的所有可读文本 - **置信度分数**:每个文本元素的准确度评分 - **边界框**:JSON 报告中的位置数据 ## 📈 性能 | 指标 | 值 | |--------|-------| | **分析速度** | 因图像大小、网络延迟和 AWS 区域而异 | | **支持格式** | JPEG, PNG | | **最大图像大小** | 5MB (JPEG), 8MB (PNG) | | **准确度** | 取决于功能和图像质量;详情请参阅 [AWS Rekognition 文档](https://docs.aws.amazon.com/rekognition/latest/dg/limits.html) | | **并发请求数** | 10(可配置) | ## 🐛 故障排除 ### 常见问题 #### ❌ "未配置 AWS credentials" **解决方案:** - 确认 `.env` 中存在 `AWS_ACCESS_KEY_ID` 和 `AWS_SECRET_ACCESS_KEY` - 检查凭证是否有效 - 确保 IAM 用户拥有 Rekognition 权限 #### ❌ "无效的图片格式" **解决方案:** - 仅使用 JPEG 或 PNG 格式 - 确保图像文件未损坏 - 检查图像大小限制(JPEG 5MB,PNG 8MB) #### ❌ "未检测到人脸" **解决方案:** - 确保面部清晰可见且光线充足 - 使用更高分辨率的图像 - 避免严重遮挡或侧脸 #### ❌ 命令未出现 **解决方案:** - 运行 `bun run deploy` 更新命令 - 检查 `.env` 中的 `CLIENT_ID` 是否正确 - 全局命令部署最多可能需要等待 1 小时 ### 调试模式 启用详细日志记录: ``` NODE_ENV=development ``` ### AWS 定价 在 [AWS Billing Console](https://console.aws.amazon.com/billing/) 监控你的使用情况: - **免费套餐**:前 12 个月每月 5,000 张图像 - **标准定价**:每 1,000 张图像 $1-5(因功能而异) ## 📊 API 限制 ### AWS Rekognition 限制 - **速率限制**:50 TPS(每秒事务数) - **图像大小**:5MB JPEG,8MB PNG - **图像分辨率**:人脸检测最低 80 像素 - **并发请求数**:每个账户 50 个 ### Discord 限制 - **消息大小**:2000 个字符 - **文件上传**:25MB(Discord Nitro:100MB) - **嵌入内容**:每个嵌入最多 25 个字段 ## 🛡️ 安全 ### 数据隐私 - **不存储图像**:图像处理后会立即删除 - **临时文件**:每次请求后 10 秒自动清理 - **AWS 安全**:所有数据在传输和静止时均经过加密 - **无日志记录**:绝不记录个人图像数据 ### 安全加固 - **SSRF 防护**:DNS 解析 + 私有 IP 阻断(IPv4、IPv6、IPv4 映射的 IPv6、6to4、Teredo),并固定 HTTP 代理以防止 DNS 重绑定 - **路径遍历预防**:随机文件名配合扩展名白名单 - **Magic Bytes 验证**:文件签名验证(JPEG、PNG、GIF、BMP、WebP) - **速率限制**:每用户冷却时间 + 全局并发限制 - **错误清理**:绝不向用户暴露内部错误 - **Docker**:以非 root 用户运行,只读文件系统,tini init,固定基础镜像 ### 最佳实践 - 使用 IAM 角色(首选)或具有最低权限的静态凭证 - 使用推荐的 `docker run` 参数通过 Docker 部署 - 如果使用静态凭证,请定期轮换访问密钥 - 监控 AWS CloudTrail 日志 - 保持依赖项更新(`bun update`) ### 内容审核 该机器人包含自动内容审核功能,可检测: - 明显暴露的内容 -暗示性内容 - 暴力内容 - 视觉上令人不适的内容 ## 🔧 开发 ### 添加新功能 1. Fork 该仓库 2. 创建一个功能分支 3. 实现你的更改 4. 添加适当的错误处理 5. 更新文档 6. 提交 Pull Request ### AWS SDK v3 用法 此机器人使用 AWS SDK v3 以获得更好的性能: ``` const { RekognitionClient, DetectLabelsCommand } = require('@aws-sdk/client-rekognition'); const client = new RekognitionClient({ region: 'us-east-1' }); const command = new DetectLabelsCommand(params); const response = await client.send(command); ``` ### 测试 ``` bun test ``` 110 个单元测试,涵盖 SSRF 防护、Magic Bytes 验证、URL 验证、扩展名清理和 IPv6 边缘情况。 ## 🔗 快速链接 | 资源 | 链接 | |----------|------| | 📚 AWS Rekognition 文档 | [AWS 文档](https://docs.aws.amazon.com/rekognition/) | | 🐛 报告 Bug | [GitHub Issues](https://github.com/gl0bal01/discord-amazon-rekognition/issues/new?template=bug_report.md) | | ✨ 请求功能 | [功能请求](https://github.com/gl0bal01/discord-amazon-rekognition/issues/new?template=feature_request.md) | | 💬 Discord 支持 | [加入服务器](https://discord.gg/your-invite) | | 🔧 AWS 控制台 | [AWS Management Console](https://console.aws.amazon.com/rekognition/) | ## 📄 许可证 本项目采用 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。 ## 🤝 贡献 1. Fork 该仓库 2. 创建一个功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交你的更改 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 发起一个 Pull Request ## 🆘 支持 - 创建一个 [issue](https://github.com/gl0bal01/discord-amazon-rekognition/issues) 来报告 bug - 加入我们的 [Discord 服务器](https://discord.gg/your-server) 获取支持 - 查看 [AWS Rekognition 文档](https://docs.aws.amazon.com/rekognition/) 了解 API 相关问题 - 阅读 [Discord.js 指南](https://discordjs.guide/) 获取机器人开发帮助 ## 🙏 致谢 - [AWS Rekognition](https://aws.amazon.com/rekognition/) - 基于云的计算机视觉服务 - [Discord.js](https://discord.js.org/) - 优秀的 Discord API 库 - [Discord Developer Portal](https://discord.com/developers/) - 机器人开发平台 - [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/) - 官方 AWS SDK
**专为图像分析工作流而打造** [![GitHub](https://img.shields.io/badge/GitHub-gl0bal01-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/gl0bal01) [![AWS](https://img.shields.io/badge/Powered_by-AWS_Rekognition-FF9900?style=for-the-badge&logo=amazon-aws&logoColor=white)](https://aws.amazon.com/rekognition/) ## ⭐ 如果你觉得有帮助,请给这个仓库点个 Star! *想要贡献?我们欢迎 PR、错误报告和功能请求!*
标签:Apex, AWS Rekognition, AWS SDK, Discord.js, Discord机器人, ESC4, GNU通用公共许可证, MITM代理, Node.js, OCR, OSINT, 人工智能, 人脸检测, 人脸比对, 内容审核, 名人识别, 图像分析, 图像处理, 图像识别, 情报收集, 文字识别, 机器学习, 漏洞研究, 用户模式Hook绕过, 自定义脚本, 计算机视觉, 请求拦截