Estwarden/collectors
GitHub: Estwarden/collectors
为EstWarden波罗的海安全监控平台提供的多源OSINT数据收集管道,基于Dagu+Python构建,覆盖媒体资讯、航空航海追踪、电子战监测等十多种公开情报来源。
Stars: 0 | Forks: 0
# EstWarden 收集器
用于 [EstWarden](https://estwarden.eu) 的开源数据收集管道 —— 这是一个波罗的海安全监控平台,用于追踪俄罗斯军事态势、虚假信息活动和影响力行动。
## 架构
这些收集器运行在 [Dagu](https://github.com/dagu-org/dagu) 上 —— 一个基于 Go 的 DAG 工作流引擎。它们从公共来源获取数据并提交到 EstWarden Data API。
```
Source (RSS, API, sensor) → Collector Script → Data API → EstWarden Dashboard
```
收集器从不直接接触数据库。所有写入操作都通过经过身份验证的 Data API 进行。
## 收集器
| 来源 | 脚本 | 调度频率 | 收集内容 |
|--------|--------|----------|-----------------|
| **RSS 源** (54) | `rss_collector.py` | 每 2 小时 | 波罗的海/俄罗斯媒体、智库、政府 |
| **ADS-B 航空器** | `adsb_collector.py` | 每 15 分钟 | 波罗的海空域的军事飞行 |
| **AIS 船只** | `ais_collector.py` | 每 5 分钟 | 船舶位置、影子舰队检测 |
| **NASA FIRMS** | `firms_collector.py` | 每 6 小时 | 军事基地的热异常 |
| **GPS 干扰** | `gpsjam_collector.py` | 每 12 小时 | 电子战活动 (H3 hex) |
| **ACLED** | `acled_collector.py` | 每 12 小时 | 欧洲冲突事件 |
| **GDELT** | `gdelt_collector.py` | 每 4 小时 | 基地附近与军事相关的新闻 |
| **Deepstate** | 仅 DAG | 每天 4 次 | 乌克兰前线数据 |
| **太空天气** | 仅 DAG | 每 6 小时 | NOAA Kp 指数 (地磁风暴) |
| **气球** | 仅 DAG | 每 4 小时 | 气象气球位置 (SondeHub) |
| **IODA** | `ioda_collector.py` | 每 4 小时 | 波罗的海互联网中断监控 |
| **NOTAMs** | `notam_collector.py` | 每 6 小时 | EASA 冲突区公告 |
| **OpenSanctions** | `sanctions_collector.py` | 每周 | 制裁实体同步 |
| **Elering** | 仅 DAG | 每小时 | 爱沙尼亚电价 |
## 增强
| 管道 | 脚本 | 功能 |
|----------|--------|-------------|
| **分类** | `classifier.py` | 通过 OpenRouter 进行 LLM 叙事标签 (N1-N5) |
| **翻译 + 提取** | `translate_and_extract.py` | Google Cloud Translation + NER |
| **活动检测** | DAG (baselines) | 叙事量激增检测 |
| **威胁指数** | DAG (computed) | 来自所有来源的综合威胁指数 |
| **异常检测** | DAG (baselines) | 7 天滚动 z-score 异常 |
### 收集器契约
每个收集器:
- 从环境变量获取配置 (API URL, API key, 特定来源的 keys)
- 从**公共**来源获取数据
- 将信号作为 JSON 提交到 Data API
- 优雅地处理错误 (超时、速率限制、格式错误的数据)
- 是幂等的 (通过 source_type + source_id 进行 ON CONFLICT 去重)
### 信号 Schema
```
{
"source_type": "rss",
"source_id": "unique-per-source-id",
"title": "Signal title",
"content": "Signal body text",
"url": "https://source-url",
"published_at": "2026-03-20T08:00:00Z",
"latitude": 59.43,
"longitude": 24.75,
"severity": "HIGH",
"metadata": {"feed_handle": "propastop", "category": "counter_disinfo"}
}
```
## 结构
```
dags/
├── collect/ — Data collection DAGs (cron-scheduled)
├── process/ — Enrichment DAGs (classify, translate, campaigns)
├── maintain/ — Maintenance DAGs (dedup, retention, quality)
└── pipelines/ — Orchestration DAGs (morning pipeline, etc.)
scripts/
├── lib/ — Shared libraries (API client, Google Cloud client)
├── collectors/ — Collector scripts (one per source)
└── processors/ — Enrichment scripts (classifier, NER)
config/
└── feeds.yaml — RSS feed registry (54 feeds)
```
## 许可证
MIT —— 欢迎贡献。
标签:ACLED, ADS-B, AIS船舶追踪, API集成, Dagu, DAG工作流, ESC4, GDELT, GPS干扰, HTTP/HTTPS抓包, NOTAM, OSINT, Python, RSS聚合, Space Weather, 俄罗斯军事态势, 制裁数据, 可观测性, 地缘政治, 实时处理, 密码管理, 影响力行动, 影子舰队, 态势感知, 情报分析, 数据采集管道, 无后门, 日志审计, 气象气球, 波罗的海安全, 热异常检测, 电子战, 网络 outage 监测, 网络安全, 网络诊断, 虚假信息检测, 逆向工具, 隐私保护