BigBodyCobain/Shadowbroker
GitHub: BigBodyCobain/Shadowbroker
一款聚合多源 OSINT 数据的实时地理空间情报仪表板,提供航空、海事、卫星、冲突事件等全球态势的统一视图。
Stars: 791 | Forks: 74
🛰️ S H A D O W B R O K E R
全球威胁拦截 —— 实时地理空间情报平台
 **ShadowBroker** 是一个实时、全方位的地理空间情报仪表板,它聚合了来自数十个开源情报 (OSINT) 源的实时数据,并在统一的暗黑风格地图界面上进行渲染。它追踪飞机、船只、卫星、地震、冲突区域、CCTV 网络、GPS 干扰以及突发的地缘政治事件 —— 所有这些均在实时更新。 该项目使用 **Next.js**、**MapLibre GL**、**FastAPI** 和 **Python** 构建,专为分析师、研究人员和爱好者设计,旨在提供全球活动的单一窗格视图。 ## 有趣的用例 * 追踪亿万富翁的私人飞机 * 监测头顶经过的卫星 * 观察全球海军舰艇交通 * 检测 GPS 干扰区域 * 实时追踪地震和灾害 ## ⚡ 快速开始 ``` git clone https://github.com/BigBodyCobain/Shadowbroker.git cd Shadowbroker docker-compose up -d ``` 打开 `http://localhost:3000` 查看仪表板!*(需要 Docker)* ## ✨ 功能特性 ### 🛩️ 航空追踪 * **商业航班** — 通过 OpenSky Network 获取实时位置(约 5,000+ 架飞机) * **私人飞行器** — 单独追踪轻型通用航空 (GA)、涡轮螺旋桨飞机、商务飞机 * **私人喷气机** — 具有所有者识别的高净值个人飞机 * **军用航班** — 通过 adsb.lol 军用端点获取加油机、ISR(情报监视侦察)、战斗机、运输机信息 * **航迹累积** — 为所有被追踪的飞机保留面包屑轨迹 * **盘旋检测** — 自动标记盘旋的飞机(总转弯角度 >300°) * **飞机分类** — 形状准确的 SVG 图标:客机、涡轮螺旋桨飞机、商务喷气机、直升机 * **停飞检测** — AGL(离地高度)低于 100 英尺的飞机以灰色图标渲染 ### 🚢 海事追踪 * **AIS 船只数据流** — 通过 aisstream.io WebSocket 获取 25,000+ 艘船只数据(实时) * **船只分类** — 货船、油轮、客轮、游艇、军舰类型,配有颜色编码图标 * **航母战斗群追踪器** — 所有 11 艘现役美国海军航母,配有基于 OSINT 估算的位置 * 针对航母动态情报的自动化 GDELT 新闻抓取 * 50+ 个地理区域到坐标的映射 * 磁盘缓存位置,UTC 时间 00:00 和 12:00 自动更新 * **游轮与客轮** — 专用图层显示游轮和渡轮 * **聚类显示** — 船只在低缩放级别聚类并显示计数标签,放大时取消聚类 ### 🛰️ 太空与卫星 * **轨道追踪** — 通过 CelesTrak TLE 数据 + SGP4 推算获取实时卫星位置(2,000+ 颗活跃卫星,无需 API 密钥) * **任务类型分类** — 按任务颜色编码:军事侦察(红)、SAR(青)、SIGINT(白)、导航(蓝)、预警(品红)、商业成像(绿)、空间站(金) ### 🌍 地缘政治与冲突 * **全球事件** — 基于 GDELT 的冲突事件聚合(最近 8 小时,约 1,000 个事件) * **乌克兰前线** — 来自 DeepState Map 的实时战争前线 GeoJSON * **SIGINT/RISINT 新闻源** — 来自多个情报关注源的实时 RSS 聚合 * **区域档案** — 在地图上任意位置右键点击获取: * 国家概况(人口、首都、语言、货币、面积) * 国家元首及政府类型(Wikidata SPARQL) * 带缩略图的本地维基百科摘要 ### 📷 监控 * **CCTV 网络** — 来自以下地区的 2,000+ 个实时交通摄像头: * 🇬🇧 伦敦交通局 JamCams * 🇺🇸 德克萨斯州奥斯汀 TxDOT * 🇺🇸 纽约市交通部 (NYC DOT) * 🇸🇬 新加坡陆路交通管理局 (LTA) * 自定义 URL 接入 * **源渲染** — 自动检测并渲染视频、MJPEG、HLS、嵌入、卫星切片和图像源 * **聚类地图显示** — 绿点聚类并显示计数标签,放大时取消聚类 ### 📡 信号情报 * **GPS 干扰检测** — 对飞机 NAC-P(导航精度类别)值的实时分析 * 基于网格的聚合识别干扰区域 * 带有 "GPS JAM XX%" 严重程度标签的红色覆盖方块 * **无线电拦截面板** — 用于监控通信的扫描仪风格 UI ### 🌐 其他图层 * **地震 (24h)** — USGS 实时地震源,带有按震级缩放的标记 * **昼夜循环** — 显示全球光照/黑暗区域的晨昏线覆盖层 * **全球市场行情** — 实时金融市场指数(可最小化) * **测量工具** — 地图上的点对点距离和方位测量 ## 🏗️ 架构 ``` ┌────────────────────────────────────────────────────────┐ │ FRONTEND (Next.js) │ │ │ │ ┌─────────────┐ ┌──────────┐ ┌───────────────┐ │ │ │ MapLibre GL │ │ NewsFeed │ │ Control Panels│ │ │ │ 2D WebGL │ │ SIGINT │ │ Layers/Filters│ │ │ │ Map Render │ │ Intel │ │ Markets/Radio │ │ │ └──────┬──────┘ └────┬─────┘ └───────┬───────┘ │ │ └────────────────┼──────────────────┘ │ │ │ REST API (60s / 120s) │ ├──────────────────────────┼─────────────────────────────┤ │ BACKEND (FastAPI) │ │ │ │ │ ┌───────────────────────┼──────────────────────────┐ │ │ │ Data Fetcher (Scheduler) │ │ │ │ │ │ │ │ ┌──────────┬──────────┬──────────┬───────────┐ │ │ │ │ │ OpenSky │ adsb.lol │CelesTrak │ USGS │ │ │ │ │ │ Flights │ Military │ Sats │ Quakes │ │ │ │ │ ├──────────┼──────────┼──────────┼───────────┤ │ │ │ │ │ AIS WS │ Carrier │ GDELT │ CCTV │ │ │ │ │ │ Ships │ Tracker │ Conflict │ Cameras │ │ │ │ │ ├──────────┼──────────┼──────────┼───────────┤ │ │ │ │ │ DeepState│ RSS │ Region │ GPS │ │ │ │ │ │ Frontline│ Intel │ Dossier │ Jamming │ │ │ │ │ └──────────┴──────────┴──────────┴───────────┘ │ │ │ └──────────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────────┘ ``` ## 📊 数据源与 API | 来源 | 数据 | 更新频率 | 是否需要 API Key | |---|---|---|---| | [OpenSky Network](https://opensky-network.org) | 商业与私人航班 | ~60s | 可选(匿名受限) | | [adsb.lol](https://adsb.lol) | 军用飞机 | ~60s | 否 | | [aisstream.io](https://aisstream.io) | AIS 船只位置 | 实时 WebSocket | **是** | | [CelesTrak](https://celestrak.org) | 卫星轨道位置 (TLE + SGP4) | ~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 | 否 | | [Singapore LTA](https://datamall.lta.gov.sg) | 新加坡交通摄像头 | ~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) | 暗色地图切片 | 连续 | 否 | ## 🚀 入门指南 ### 🐳 Docker 设置(推荐用于自托管) 该仓库包含一个 `docker-compose.yml`,可在本地构建两个镜像。 ``` git clone https://github.com/BigBodyCobain/Shadowbroker.git cd Shadowbroker # 添加你的 API keys(可选 — 参见下方 Environment Variables) cp backend/.env.example backend/.env # 构建并启动 docker-compose up -d --build ``` 打开 `http://localhost:3000` 查看仪表板。 ### 📦 快速开始(无需代码) 如果你只想运行仪表板而不想处理终端命令: 1. 转到此 GitHub 页面右侧的 **[Releases](../../releases)** 标签页。 2. 从发布版本中下载最新的 `.zip` 文件。 3. 将文件夹解压到你的电脑上。 4. **Windows:** 双击 `start.bat`。 **Mac/Linux:** 打开终端,输入 `chmod +x start.sh`,然后运行 `./start.sh`。 5. 它将自动安装所有内容并启动仪表板! ### 💻 开发者设置 如果你想修改代码或从源码运行: #### 前置条件 * **Node.js** 18+ 和 **npm** * **Python** 3.10+ 及 `pip` * 以下服务的 API 密钥:`aisstream.io`(必需),以及可选的 `opensky-network.org` (OAuth2)、`lta.gov.sg` ### 安装 ``` # Clone the repository git clone https://github.com/your-username/shadowbroker.git cd shadowbroker/live-risk-dashboard # Backend 设置 cd backend python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # macOS/Linux pip install -r requirements.txt # 创建包含你的 API keys 的 .env echo "AIS_API_KEY=your_aisstream_key" >> .env echo "OPENSKY_CLIENT_ID=your_opensky_client_id" >> .env echo "OPENSKY_CLIENT_SECRET=your_opensky_secret" >> .env # Frontend 设置 cd ../frontend npm install ``` ### 运行 ``` # 从 frontend 目录 — 同时启动 frontend 和 backend npm run dev ``` 这将启动: * **Next.js** 前端,位于 `http://localhost:3000` * **FastAPI** 后端,位于 `http://localhost:8000` ## 🎛️ 数据图层 所有图层均可从左侧面板独立切换: | 图层 | 默认 | 描述 | |---|---|---| | Commercial Flights | ✅ 开启 | 航司、货运、通用航空飞机 | | Private Flights | ✅ 开启 | 非商业私人飞机 | | Private Jets | ✅ 开启 | 具有所有者数据的高价值商务喷气机 | | Military Flights | ✅ 开启 | 军用及政府飞机 | | Tracked Aircraft | ✅ 开启 | 特别关注监视列表 | | Satellites | ✅ 开启 | 按任务类型分类的轨道资产 | | Carriers / Mil / Cargo | ✅ 开启 | 海军航母、货船、油轮 | | Civilian Vessels | ❌ 关闭 | 游艇、渔船、休闲船 | | Cruise / Passenger | ✅ 开启 | 游轮和渡轮 | | Earthquakes (24h) | ✅ 开启 | USGS 地震事件 | | CCTV Mesh | ❌ 关闭 | 监控摄像头网络 | | Ukraine Frontline | ✅ 开启 | 实时战线位置 | | Global Incidents | ✅ 开启 | GDELT 冲突事件 | | GPS Jamming | ✅ 开启 | NAC-P 降级区域 | | Day / Night Cycle | ✅ 开启 | 晨昏线覆盖层 | ## 🔧 性能 该平台针对处理海量实时数据集进行了优化: * **Gzip 压缩** — API 负载压缩约 92%(11.6 MB → 915 KB) * **ETag 缓存** — `304 Not Modified` 响应跳过冗余的 JSON 解析 * **视口剔除** — 仅渲染可见地图边界(+20% 缓冲区)内的要素 * **聚类渲染** — 船只、CCTV 和地震使用 MapLibre 聚类以减少要素数量 * **视口更新防抖** — 300ms 防抖可防止平移/缩放期间的 GeoJSON 重建抖动 * **位置插值** — 数据刷新之间的平滑 10s 滴答动画 * **React.memo** — 重型组件被包裹以防止不必要的重新渲染 * **坐标精度** — 经纬度四舍五入到小数点后 5 位(约 1 米)以减小 JSON 大小 ## 📁 项目结构 ``` live-risk-dashboard/ ├── backend/ │ ├── main.py # FastAPI app, middleware, API routes │ ├── carrier_cache.json # Persisted carrier OSINT positions │ ├── cctv.db # SQLite CCTV camera database │ └── services/ │ ├── data_fetcher.py # Core scheduler — fetches all data sources │ ├── ais_stream.py # AIS WebSocket client (25K+ vessels) │ ├── carrier_tracker.py # OSINT carrier position tracker │ ├── cctv_pipeline.py # Multi-source CCTV camera ingestion │ ├── geopolitics.py # GDELT + Ukraine frontline fetcher │ ├── region_dossier.py # Right-click country/city intelligence │ ├── radio_intercept.py # Scanner radio feed integration │ ├── network_utils.py # HTTP client with curl fallback │ └── api_settings.py # API key management │ ├── frontend/ │ ├── src/ │ │ ├── app/ │ │ │ └── page.tsx # Main dashboard — state, polling, layout │ │ └── components/ │ │ ├── MaplibreViewer.tsx # Core map — 2,000+ lines, all GeoJSON layers │ │ ├── NewsFeed.tsx # SIGINT feed + entity detail panels │ │ ├── WorldviewLeftPanel.tsx # Data layer toggles │ │ ├── WorldviewRightPanel.tsx # Search + filter sidebar │ │ ├── FilterPanel.tsx # Basic layer filters │ │ ├── AdvancedFilterModal.tsx # Airport/country/owner filtering │ │ ├── MapLegend.tsx # Dynamic legend with all icons │ │ ├── MarketsPanel.tsx # Global financial markets ticker │ │ ├── RadioInterceptPanel.tsx # Scanner-style radio panel │ │ ├── FindLocateBar.tsx # Search/locate bar │ │ ├── SettingsPanel.tsx # App settings │ │ ├── ScaleBar.tsx # Map scale indicator │ │ ├── WikiImage.tsx # Wikipedia image fetcher │ │ └── ErrorBoundary.tsx # Crash recovery wrapper │ └── package.json ``` ## 🔑 环境变量 在 `backend/` 目录下创建一个 `.env` 文件: ``` # 必填 AIS_API_KEY=your_aisstream_key # Maritime vessel tracking (aisstream.io) # 可选(提升数据质量) OPENSKY_CLIENT_ID=your_opensky_client_id # OAuth2 — higher rate limits for flight data OPENSKY_CLIENT_SECRET=your_opensky_secret # OAuth2 — paired with Client ID above LTA_ACCOUNT_KEY=your_lta_key # Singapore CCTV cameras ``` ## ⚠️ 免责声明 这是一个**教育和研究工具**,完全基于公开可用的开源情报 (OSINT) 数据构建。未使用任何机密、受限或非公开数据源。航母位置是基于公开报道的估算。军事主题的 UI 纯属美学设计。 **请勿将此工具用于任何作战、军事或情报目的。** ## 📜 许可证 本项目用于教育和个人研究目的。有关数据使用限制,请参阅各个 API 提供商的服务条款。
Built with ☕ and too many API calls
标签:ADS-B, AIS, AV绕过, CCTV, Docker, ESC4, FastAPI, GEOINT, GPS欺骗, HTTP/HTTPS抓包, MapLibre GL, OSINT, Python, 信号干扰, 全球威胁监控, 军事追踪, 卫星地图, 地理空间情报, 地震监测, 安全防御评估, 实时地图, 实时处理, 实时追踪, 密码管理, 富豪资产监控, 开源网络情报, 态势感知, 情报仪表盘, 无后门, 私人飞机追踪, 网络摄像头, 自动化攻击, 航空追踪, 船舶监控, 请求拦截, 逆向工具