teal33t/poopak
GitHub: teal33t/poopak
一个功能完整的Tor隐藏服务爬虫平台,支持深度爬取、情报提取、截图存档和全文检索。
Stars: 137 | Forks: 34
# POOPAK | TOR Hidden Service Crawler
[](https://www.gnu.org/licenses/gpl-3.0) [ [](https://www.python.org/) [](https://torproject.org/)
一个用于爬取、扫描和收集 TOR hidden services 数据的实验性应用程序。
## 功能特性
- 使用 CURL 进行多层级深度爬取
- 链接提取及邮箱/BTC/ETH/XMR 地址检测
- EXIF 元数据提取
- 屏幕截图(使用 Splash)
- 主题检测(使用 Spacy)
- 端口扫描
- 报告生成(CSV/PDF)
- 基于 Elasticsearch 的全文搜索
- 语言检测
- 基于 Docker 的部署及 Web UI
## 快速开始
### 开发环境
```
make dev-up # Start all services
make dev-logs # View logs
```
访问地址:http://localhost
### 生产环境
```
cp .env.example .env # Configure passwords
make prod-up # Start all services
make health # Check status
```
## 架构
### 核心服务
- **nginx**: Web 服务器 & 反向代理
- **web-app**: Flask 应用程序
- **mongodb**: 数据库
- **redis**: 消息队列
- **elasticsearch**: 搜索引擎
- **torpool**: Tor 代理池
- **splash**: 截图服务
- **spacy**: NLP 服务
- **workers**: 后台处理(crawler, detector, app, panel)
### 关键特性
- 独立的开发/生产 Docker 配置
- 所有服务的健康检查
- 生产环境中的网络隔离
- 自动服务依赖管理
- 开发环境热重载
## 常用命令
```
# 开发
make dev-up # Start
make dev-logs # View logs
make dev-shell # Open shell
make dev-down # Stop
# 生产
make prod-up # Start
make prod-logs # View logs
make health # Check health
make backup # Backup databases
make prod-down # Stop
# 维护
make reindex # Reindex Elasticsearch
make stats # Resource usage
```
## 配置
### 环境变量(生产环境)
创建 `.env` 文件:
```
# 数据库
MONGO_ROOT_USER=admin
MONGO_ROOT_PASSWORD=your-secure-password
# Redis
REDIS_PASSWORD=your-secure-password
# 应用
SECRET_KEY=your-random-secret-key
FLASK_ENV=production
# Elasticsearch
ELASTICSEARCH_ENABLED=true
ELASTICSEARCH_HOSTS=http://elasticsearch:9200
# Error Tracking (可选)
ERROR_TRACKING_ENABLED=true
SENTRY_DSN=your-sentry-dsn
```
## 近期改进
### Docker & 基础设施
- ✅ 独立的开发/生产配置
- ✅ 所有服务的健康检查
- ✅ 多阶段 Dockerfile
- ✅ 网络隔离(生产环境)
- ✅ 非 root 容器
- ✅ 优化的缓存
### 应用程序架构
- ✅ Web 视图的依赖注入
- ✅ 数据访问的 Repository 模式
- ✅ 业务逻辑的 Service 层
- ✅ 全面的错误处理
- ✅ 生产环境错误追踪(Sentry)
- ✅ Elasticsearch 集成
### 代码质量
- ✅ 全面的类型提示(Type hints)
- ✅ 结构化日志
- ✅ 自定义异常层级
- ✅ 统一的错误响应
- ✅ 用户友好的错误页面
## 系统要求
- Docker 20.10+
- Docker Compose 2.0+
- 最低 4GB RAM
- 10GB 磁盘空间
## 安装
```
# 克隆仓库
git clone
cd poopak
# 启动开发环境
make dev-up
# 验证服务
make health
# 访问应用
open http://localhost
```
## 健康监控
检查服务健康状况:
```
make health
```
或访问:http://localhost:8000/health
响应:
```
{
"status": "healthy",
"service": "onion-crawler",
"components": {
"mongodb": "healthy",
"redis": "healthy",
"elasticsearch": "healthy"
}
}
```
## 故障排除
### 服务无法启动
```
make dev-logs # Check logs
make health # Check health
```
### 端口冲突
```
lsof -i :80 # Find what's using port 80
```
### 清理并重启
```
make dev-down
make dev-up
```
### 数据库问题
```
docker exec onion-mongodb-dev mongosh --eval "db.adminCommand('ping')"
```
## 开发
### 项目结构
```
application/
├── config/ # Configuration
├── crawler/ # Crawler components
├── infrastructure/ # Database, queue, logging
├── models/ # Data models
├── repositories/ # Data access layer
├── services/ # Business logic
├── utils/ # Utilities
└── web/ # Flask application
├── auth/ # Authentication
├── dashboard/ # Dashboard views
├── scanner/ # Scanner views
├── search/ # Search views
└── templates/ # HTML templates
```
### 测试
```
# 运行测试
docker exec onion-web-app-dev python -m pytest
# 检查语法
python -m py_compile application/**/*.py
```
## 安全
### 开发环境
- 无需密码
- 所有端口暴露
- 开启 Debug 模式
### 生产环境
- 需要密码(在 `.env` 中设置)
- 最小化端口暴露(仅 nginx)
- 网络隔离
- 非 root 容器
- 结构化日志
## 备份与恢复
```
# 备份
make backup
# 恢复
make restore BACKUP=backups/mongodb-20240101-120000
```
## 性能
### Elasticsearch
```
# 重建索引文档
make reindex
# 检查集群健康状态
curl http://localhost:9200/_cluster/health
```
### 资源使用
```
make stats
```
## 许可证
本软件基于 GPL v.3 许可证发布。如果您在服务器上运行修改后的程序并允许其他用户与其通信,您的服务器必须同时允许他们下载源代码。
## 支持
1. 检查日志:`make dev-logs`
2. 检查健康状况:`make health`
3. 验证设置:`./validate-docker-setup.sh`
**准备好开始了吗?** 运行 `make dev-up` 并访问 http://localhost
标签:Docker, Elasticsearch, ESC4, Flask, MongoDB, NLP, OSINT, Python, SpaCy, Splash, Tor隐藏服务, 云存储安全, 元数据分析, 命令控制, 威胁情报, 安全防御评估, 密码管理, 开发者工具, 截图捕获, 搜索引擎查询, 数字货币追踪, 数据统计, 数据采集, 无后门, 暗网爬虫, 暗网监测, 洋葱路由, 端口扫描, 网络扫描, 请求拦截, 逆向工具, 配置审计, 隐私匿名