gl0bal01/discord-amazon-rekognition
GitHub: gl0bal01/discord-amazon-rekognition
一个集成 AWS Rekognition 的 Discord 机器人,可在聊天平台内直接完成图像分析、人脸检测与比对、OCR 文本提取、名人识别和内容审核等可视化情报分析任务。
Stars: 0 | Forks: 0
# 🎯 Discord Amazon Rekognition
## 📝 目录
## ✨ 功能
### 🔍 **综合图像分析**
- **物体与场景检测**:识别数千种物体、场景和概念
- **文本提取 (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
[](https://choosealicense.com/licenses/mit/)
[](https://nodejs.org/)
[](https://discord.js.org/)
[](https://aws.amazon.com/sdk-for-javascript/)
[](https://doi.org/10.5281/zenodo.15722656)
[](https://github.com/gl0bal01)
[](https://aws.amazon.com/rekognition/)
[](https://aws.amazon.com/rekognition/)
[](https://aws.amazon.com/rekognition/)
[](https://aws.amazon.com/rekognition/)
一个集成了 AWS Rekognition 的 Discord 机器人,可直接在 Discord 服务器内提供图像分析、人脸检测、文本提取、名人识别、内容审核和人脸比对功能。
**该机器人可用于涉及图像分析(例如物体识别、文本提取和人脸比对)的 OSINT 工作流中。**
## 📸 预览
人脸比对: ✅
人脸比对: ❌
分析结果: 名人
分析结果: 文本
点击展开
- [✨ 功能](#-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)
**专为图像分析工作流而打造**
[](https://github.com/gl0bal01)
[](https://aws.amazon.com/rekognition/)
## ⭐ 如果你觉得有帮助,请给这个仓库点个 Star!
*想要贡献?我们欢迎 PR、错误报告和功能请求!*
标签:Apex, AWS Rekognition, AWS SDK, Discord.js, Discord机器人, ESC4, GNU通用公共许可证, MITM代理, Node.js, OCR, OSINT, 人工智能, 人脸检测, 人脸比对, 内容审核, 名人识别, 图像分析, 图像处理, 图像识别, 情报收集, 文字识别, 机器学习, 漏洞研究, 用户模式Hook绕过, 自定义脚本, 计算机视觉, 请求拦截