katnino/Senka
GitHub: katnino/Senka
Senka 是一个全球实时地理空间情报聚合控制面板,将航空、海事、卫星、地震、冲突及 CCTV 等数十个开源数据流统一呈现在交互式地图上。
Stars: 1 | Forks: 0
S E N K A [选择性动态监测]
全球动态监控 实时地理空间情报平台
//实验性//早期开发中//
**Senka** 是早期版本 OSINT
(开源情报)工具 ShadowBroker 的塞尔维亚语重构克隆版。与原项目不同,Senka 不会生成或渲染虚假数据。从本质上讲,该工具是一个实时地理空间情报控制面板,从数十个来源收集数据,并在夜间操作风格的界面中展示。它追踪飞机、船舶、卫星、地震、冲突区域、CCTV 网络、GPS 干扰以及当前的地缘政治事件,并且所有内容都是实时更新的。
该平台基于 **Next.js**、**MapLibre GL**、**FastAPI** 和 **Python** 构建,专为希望在一个地方查看全球活动的分析师、研究人员和爱好者设计。
本项目为实验性项目,目前仍在开发阶段。
## 功能
### 航空追踪
- **商业航班** — 通过 OpenSky Network 获取实时位置(约 5,000+ 架航空器)
- **私人飞机** — 单独追踪轻型 GA、涡桨飞机和商务喷气式飞机
- **私人喷气式飞机** — 追踪高净值人士的喷气式飞机并识别所有者身份
- **军用航班** — 通过 adsb.lol 的军用 endpoint 追踪空中加油机、ISR、战斗机和运输机
- **航迹累积** — 为所有被追踪的航空器保留持久航迹
- **盘旋模式检测** — 自动标记正在盘旋的航空器(总转弯角度 >300°)
- **航空器分类** — 精确的 SVG 图标形状:客机、涡桨飞机、商务喷气式飞机、直升机
- **地面检测** — 低于 100ft AGL 的航空器显示为灰色图标
### 海上追踪
- **AIS 船舶流** — 通过 aisstream.io WebSocket 追踪 25,000+ 艘船舶(实时)
- **船舶分类** — 货船、油轮、客船、游艇和军用船舶类型,配有彩色图标
- **航母打击群追踪** — 追踪所有 11 艘活跃的美国海军航母,位置基于 OSINT 估算
- 自动收集 GDELT 新闻,提供有关航母动向的情报
- 50+ 地理区域到坐标的映射
- 位置缓存在磁盘上,并在 UTC 时间 00:00 和 12:00 自动更新
- **邮轮和客船** — 追踪邮轮和渡轮
- **聚合视图** — 在低缩放级别下船舶会聚合并显示数量标签,放大时自动散开
### 太空与卫星
- **轨道追踪** — 通过 N2YO API 获取卫星实时位置
- **按任务类型分类** — 彩色任务标识:军用侦察(红色)、SAR(青色)、SIGINT(白色)、导航(蓝色)、早期预警(洋红色)、商业成像(绿色)、空间站(金色)
### 地缘政治与冲突
- **全球事件** — GDELT 冲突事件展示(过去 8 小时内,约 1,000 起事件)
- **乌克兰前线** — 来自 DeepState Map 的 GeoJSON 战线
- **SIGINT/RISINT 新闻源** — 实时聚合来自多个专注于情报数据的来源的 RSS
- **区域档案** — 在地图上任意位置右键点击即可获取:
- 国家概况(人口、首都、语言、货币、面积)
- 国家元首和政府类型(Wikidata SPARQL)
- 带有缩略图的本地 Wikipedia 摘要
### 监控摄像头
- **CCTV 网络** — 2,000+ 个交通摄像头,来源包括:
- 🇬🇧 Transport for London JamCams
- 🇺🇸 Austin, TX TxDOT
- 🇺🇸 NYC DOT
- 支持自定义 URL 输入
- **源渲染** — 自动检测并显示视频、MJPEG、HLS、embed、卫星切片和图像源
- **地图聚合视图** — 绿色圆点聚合并显示数量标签,缩放时散开
### 信号情报
- **GPS 干扰检测** — 实时分析航空器的 NAC-P(Navigation Accuracy Category)值
- 基于网格的聚合以识别干扰区域
- 红色叠加方块带有“GPS JAM XX%”的严重程度标签
- **无线电拦截面板** — 用于追踪通信的扫描接口
### 附加数据
- **地震 (24h)** — USGS 实时地震数据源,带有与震级成比例的标记
- **昼夜循环** — 太阳终结线叠加层显示全球的白天/黑夜区域
- **全球市场行情** — 实时金融市场指数(可最小化)
- **测量工具** — 在地图上测量点到点的距离和方位角
## 架构
```
┌──────────────────────────────────────────────────────┐
│ FRONTEND (Next.js) │
│ │
│ ┌─────────────┐ ┌──────────┐ ┌─────────────────┐ │
│ │ MapLibre GL │ │ Tok vesti│ │ Kontrolni paneli│ │
│ │ 2D WebGL │ │ SIGINT │ │ Slojevi/Filteri │ │
│ │ Render mape │ │ Intel │ │ Tržišta/Radio │ │
│ └──────┬──────┘ └────┬─────┘ └────────┬────────┘ │
│ └──────────────┼─────────────────┘ │
│ │ REST API (15s brzo / 60s) │
├────────────────────────┼─────────────────────────────┤
│ BACKEND (FastAPI) │
│ │ │
│ ┌─────────────────────┼─────────────────────────┐ │
│ │ Dobavljač podataka (Planer) │ │
│ │ ┌──────────┬──────────┬──────────┬─────────┐ │ │
│ │ │ OpenSky │ adsb.lol │ N2YO │ USGS │ │ │
│ │ │ Letovi │ Vojni │ Sateliti │ Potresi │ │ │
│ │ ├──────────┼──────────┼──────────┼─────────┤ │ │
│ │ │ AIS WS │ Nosači │ GDELT │ CCTV │ │ │
│ │ │ Brodovi │ Praćenje │ Sukobi │ Kamere │ │ │
│ │ ├──────────┼──────────┼──────────┼─────────┤ │ │
│ │ │DeepState │ RSS │ Regija │ GPS │ │ │
│ │ │ Front │ Intel │ Dosije │Ometanje │ │ │
│ │ └──────────┴──────────┴──────────┴─────────┘ │ │
│ └───────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
```
## 数据源与 API
| 来源 | 数据 | 更新频率 | 是否需要 API 密钥 |
|---|---|---|---|
| [OpenSky Network](https://opensky-network.org) | 商业和私人航班 | ~60s | 可选(匿名,受限) |
| [adsb.lol](https://adsb.lol) | 军用飞机 | ~60s | 否 |
| [aisstream.io](https://aisstream.io) | 船舶 AIS 位置 | 实时 WebSocket | **是** |
| [N2YO](https://www.n2yo.com) | 卫星轨道位置 | ~60s | **是** |
| [USGS Earthquake](https://earthquake.usgs.gov) | 全球地震事件 | ~60s | 否 |
| [GDELT Project](https://www.gdeltproject.org) | 全球冲突事件 | ~6h | 否 |
| [DeepState Map](https://deepstatemap.live) | 乌克兰前线 | ~30min | 否 |
| [Transport for London](https://api.tfl.gov.uk) | 伦敦 CCTV JamCams | ~5min | 否 |
| [TxDOT](https://its.txdot.gov) | 德克萨斯州奥斯汀交通摄像头 | ~5min | 否 |
| [NYC DOT](https://webcams.nyctmc.org) | 纽约市交通摄像头 | ~5min | 否 |
| [RestCountries](https://restcountries.com) | 国家概况数据 | 按需(缓存 24h) | 否 |
| [Wikidata SPARQL](https://query.wikidata.org) | 国家元首数据 | 按需(缓存 24h) | 否 |
| [Wikipedia API](https://en.wikipedia.org/api) | 地点摘要和航空器图片 | 按需(已缓存) | 否 |
| [CARTO Basemaps](https://carto.com) | 深色地图切片 | 持续 | 否 |
#### 前置条件
- **Node.js** 18+ 和 **npm**
- **Python** 3.10+ 以及 `pip`
- 以下服务的 API 密钥:`aisstream.io`、`n2yo.com`(以及可选的 `opensky-network.org`、`lta.gov.sg`)
### 安装说明
```
# 克隆 repository
git clone https://github.com/katnino/senka.git
cd senka
# backend 设置
cd backend
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/Linux
pip install -r requirements.txt
# 使用您的 API key 创建 .env
echo "AISSTREAM_API_KEY=your_key_here" >> .env
echo "N2YO_API_KEY=your_key_here" >> .env
echo "OPENSKY_USERNAME=your_user" >> .env
echo "OPENSKY_PASSWORD=your_pass" >> .env
# frontend 设置
cd ../frontend
npm install
```
### 运行
```
# 从 frontend 目录 — 同时运行 frontend 和 backend
npm run dev
```
这将启动:
- **Next.js** 前端,地址为 `http://localhost:3000`
- **FastAPI** 后端,地址为 `http://localhost:8000`
## 数据层
所有图层均可通过左侧面板独立开启/关闭:
| 图层 | 默认状态 | 描述 |
|---|---|---|
| 商业航班 | ✅ 开启 | 航空公司、货机、GA 航空器 |
| 私人飞机 | ✅ 开启 | 非商业性质的私人航空器 |
| 私人喷气式飞机 | ✅ 开启 | 高价值商务喷气式飞机及所有者信息 |
| 军用航班 | ✅ 开启 | 军用和国家航空器 |
| 重点追踪航空器 | ✅ 开启 | 特殊观察列表 |
| 卫星 | ✅ 开启 | 按任务类型分类的轨道设施 |
| 航母 / 军用 / 货船 | ✅ 开启 | 海军航母、货轮、油轮 |
| 民用船舶 | ❌ 关闭 | 游艇、渔业、休闲船只 |
| 邮轮 / 客船 | ✅ 开启 | 邮轮和渡轮 |
| 地震 (24h) | ✅ 开启 | USGS 地震事件 |
| CCTV 网络 | ❌ 关闭 | 监控摄像头网络 |
| 乌克兰前线 | ✅ 开启 | 实时战线位置 |
| 全球事件 | ✅ 开启 | GDELT 冲突事件 |
| GPS 干扰 | ✅ 开启 | NAC-P 降级区域 |
| 昼夜循环 | ✅ 开启 | 太阳终结线叠加层 |
## 性能
该平台针对海量实时数据进行了优化:
- **Gzip 压缩** — API 数据压缩率约 92%(11.6 MB → 915 KB)
- **ETag 缓存** — `304 Not Modified` 响应跳过了冗余的 JSON 解析
- **Viewport 裁剪** — 仅渲染位于可见地图边界内的对象(+20% 缓冲)
- **聚合渲染** — 船舶、CCTV 和地震利用 MapLibre 的集群功能来减少对象数量
- **Viewport 延迟更新** — 300ms 防抖防止在平移/缩放期间进行不必要的 GeoJSON 重建
- **位置插值** — 在数据刷新之间进行 10 秒的动画插值
- **React.memo** — 对性能消耗较大的组件进行包裹,防止不必要的重新渲染
- **坐标精度** — Lat/lng(经纬度)四舍五入至 5 位小数(约 1 米),以减小 JSON 体积
## 项目结构
```
senka/
├── backend/
│ ├── main.py # FastAPI aplikacija, midlver, API rute
│ ├── carrier_cache.json # Trajne OSINT pozicije nosača
│ ├── cctv.db # SQLite baza CCTV kamera
│ └── services/
│ ├── data_fetcher.py # Glavni planer: svi izvori podataka
│ ├── ais_stream.py # AIS WebSocket klijent (25K+ plovila)
│ ├── carrier_tracker.py # OSINT pratioc pozicija nosača
│ ├── cctv_pipeline.py # Unos CCTV kamera sa više izvora
│ ├── geopolitics.py # GDELT + ukrajinske linije fronta
│ ├── region_dossier.py # Intel države/grada na desni klik
│ ├── radio_intercept.py # Integracija skenerskog radio izvora
│ ├── network_utils.py # HTTP klijent sa curl rezervom
│ └── api_settings.py # Upravljanje API ključevima
│
├── frontend/
│ ├── src/
│ │ ├── app/
│ │ │ └── page.tsx # Glavni panel: stanje, upitivanje, raspored
│ │ └── components/
│ │ ├── MaplibreViewer.tsx # Jezgro mape: 2.000+ redova, svi GeoJSON slojevi
│ │ ├── NewsFeed.tsx # SIGINT izvor + paneli detalja entiteta
│ │ ├── WorldviewLeftPanel.tsx # Prekidači podataka
│ │ ├── WorldviewRightPanel.tsx # Panel za pretragu i filtere
│ │ ├── FilterPanel.tsx # Osnovni filteri podataka
│ │ ├── AdvancedFilterModal.tsx # Filteri aerodrom/država/vlasnik
│ │ ├── MapLegend.tsx # Dinamička legenda sa svim ikonama
│ │ ├── MarketsPanel.tsx # Tiker globalnih finansijskih tržišta
│ │ ├── RadioInterceptPanel.tsx # Radio panel u skenerskom stilu
│ │ ├── FindLocateBar.tsx # Traka za pretragu/lokalizaciju
│ │ ├── SettingsPanel.tsx # Podešavanja aplikacije
│ │ ├── ScaleBar.tsx # Indikator razmere mape
│ │ ├── WikiImage.tsx # Wikipedia slike
│ │ └── ErrorBoundary.tsx # Omot za oporavak nakon pada
│ └── package.json
```
## 环境变量
在 `backend/` 目录下创建 `.env` 文件:
```
# 必需
AISSTREAM_API_KEY=your_aisstream_key # Praćenje pomorskih plovila
N2YO_API_KEY=your_n2yo_key # Podaci o pozicijama satelita
# 可选(提升数据质量)
OPENSKY_CLIENT_ID=your_opensky_client_id # Viši limiti za podatke o letovima
OPENSKY_CLIENT_SECRET=your_opensky_secret
```
## ⚠️ 免责声明
这是一个**教育和研究工具**,完全基于公开可用的开源情报 (OSINT) 数据。不使用任何机密、受限或保密的数据源。航母的位置是基于公开报道的估算值。用户界面的军事外观纯属美学设计。
**请勿将此工具用于任何操作、军事或情报目的。**
本项目为实验性项目,目前仍在开发阶段且尚不完整。
## 许可证
MIT
关于数据使用的限制,请参阅各个 API 提供商的具体使用条款。
IN MEMORIAM Miroslav Lazanski 2026
标签:AV绕过, ESC4, FastAPI, MITM代理, OSINT, 地理空间情报, 自动化攻击, 逆向工具