
बाल्टिक सागर की छाया बेड़े का ओपन सोर्स ट्रैकर। 1200+ जहाज, लाइव AIS, केबल निकटता अलर्ट। कोई क्लाउड नहीं, कोई सब्सक्रिप्शन नहीं, स्थानीय रूप से चलता है।
बाल्टिक सागर शैडो फ्लीट निगरानी लाइव AIS डेटा के माध्यम से। यूक्रेनी GUR युद्ध और प्रतिबंध सूची के 1200+ जहाजों को AISStream वेबसॉकेट फीड के विरुद्ध देखता है, एक स्व-अपडेटिंग मानचित्र पर स्थिति दर्शाता है, पनडुब्बी केबलों से निकटता को चिह्नित करता है, और रूस↔पश्चिम अंतरण पैटर्न का पता लगाता है।
मुफ़्त, ओपन सोर्स, स्थानीय रूप से चलता है। कोई क्लाउड नहीं, मुफ़्त AISStream API कुंजी के अलावा कोई सब्सक्रिप्शन नहीं।
फॉर्मर लैब संप्रभु खुफिया टूलचेन का हिस्सा।
शैडो फ्लीट ट्रैकर लाइट फॉर्मर लैब टीम द्वारा बनाया और संचालित किया गया है — संप्रभु कंप्यूटिंग, पुराने हार्डवेयर पर बिना VC बैकिंग के खुले, गोपनीयता-प्रथम उपकरण बनाना।
यदि यह उपकरण आपके लिए उपयोगी है, तो कृपया Patreon पर समर्थन करने पर विचार करें। एक मुफ़्त स्तर उपलब्ध है, जिसमें भुगतान स्तरों पर 7-दिन का परीक्षण शामिल है। हमेशा यूक्रेन का समर्थन करें!
git clone https://github.com/FormerLab/shadow-fleet-tracker-light.git
cd shadow-fleet-tracker-light
pip install -r requirements.txt
export AISSTREAM_API_KEY=your_key_here # aisstream.io पर मुफ़्त
python shadow_tracker.py &
uvicorn webserver:app --host 0.0.0.0 --port 8000
http://localhost:8000 खोलें — मानचित्र /map पर है।
विंडोज़ उपयोगकर्ता: पर्यावरण चर सिंटैक्स के लिए सेटअप अनुभाग देखें।
Linux / macOS उपयोगकर्ता start.sh का उपयोग कर सकते हैं। विंडोज़ उपयोगकर्ता start.bat या start.ps1 का उपयोग कर सकते हैं — दोनों ट्रैकर और डैशबोर्ड को अलग-अलग विंडो में खोलते हैं और ब्राउज़र को स्वचालित रूप से लॉन्च करते हैं।
Vessels1.db) से प्राप्त 1200+ जहाज MMSI की वॉचलिस्ट के विरुद्ध स्ट्रीम को फ़िल्टर करता हैfiltered_cables.kml से) के 10 किमी के भीतर आता है तो अलर्ट करता हैडार्क CartoDB बेसमैप जिसमें केबल रूट हरे रंग में ओवरले हैं। जहाज मार्कर हर 3 मिनट में अपडेट होते हैं और अगले रिफ्रेश के लिए लाइव काउंटडाउन होता है — पेज स्वचालित रूप से रीलोड होता है। पॉपअप MMSI, IMO, ध्वज, गति, हेडिंग, गंतव्य, और MarineTraffic, VesselFinder, और War&Sanctions के लिए डीप लिंक दिखाते हैं। यदि API कुंजी कॉन्फ़िगर की गई है तो OpenSanctions प्रतिबंध स्थिति दिखाई जाती है।
Vessels1.db से ज्ञात जहाज के नाम AIS स्थैतिक संदेश की प्रतीक्षा किए बिना पहली उपस्थिति पर तुरंत दिखाए जाते हैं।
स्टार्टअप पर मानचित्र पिछले 24 घंटों के स्थिति लॉग से पूर्व-जनसंख्या होता है। वर्तमान सत्र में अभी तक नहीं देखे गए जहाजों को "पिछली बार X घंटे पहले देखा गया" लेबल के साथ ग्रे मार्कर के रूप में दिखाया जाता है — नए पिंग आने पर वे लाइव रंग में बदल जाते हैं।
shadow_tracker.py मुख्य प्रक्रिया — WS उपभोक्ता, मानचित्र रेंडरर, DB लेखन
loitering_module.py लॉटरिंग का पता लगाना और मानचित्र एनोटेशन
transshipment_module.py पोर्ट कॉल का पता लगाना और रूस↔पश्चिम अंतरण फ़्लैगिंग
webserver.py FastAPI डैशबोर्ड
gur_scrape.py एक-शॉट स्क्रैपर — IMO→GUR-ID मैपिंग + पूर्ण जहाज सूची बनाता है
check.py प्रीफ़्लाइट जाँच — Python संस्करण, निर्भरताएँ, API कुंजी, नेटवर्क
start.sh Linux / macOS के लिए लॉन्चर
start.bat विंडोज़ के लिए लॉन्चर (कमांड प्रॉम्प्ट)
start.ps1 विंडोज़ के लिए लॉन्चर (PowerShell)
requirements.txt निर्भरताएँ
Vessels1.db वॉचलिस्ट — 1200+ जहाज (MMSI + IMO + नाम जहाँ ज्ञात)
vessel_data_log.db स्थिति लॉग — रनटाइम, ऐपेंड-ओनली
vessel_static.db AIS स्थैतिक डेटा कैश (नाम, गंतव्य, ध्वज इतिहास)
transshipment.db पोर्ट कॉल लॉग और अंतरण घटनाएँ
loitering_events.db लॉटरिंग घटनाएँ
filtered_cables.kml बाल्टिक सागर पनडुब्बी केबल ज्यामिति
cables.kml पूर्ण केबल डेटासेट (पूर्व-फ़िल्टर स्रोत)
gur_mapping.json IMO→GUR-ID मैपिंग (gur_scrape.py द्वारा उत्पादित, वैकल्पिक)
gur_vessels_full.json पूर्ण GUR सूची — GUR-ID→{imo, mmsi, name, flag} (gur_scrape.py द्वारा उत्पादित)
Vessels1.db ट्रैक किए गए जहाजों की विहित सूची है। यूक्रेनी GUR युद्ध और प्रतिबंध सूची से 1200+ प्रविष्टियाँ, जिनमें टैंकर और कार्गो जहाज शामिल हैं जिन्हें रूसी शैडो फ्लीट के हिस्से के रूप में पहचाना गया है या बाल्टिक हाइब्रिड गतिविधि में शामिल पाया गया है।
सूची में हाल ही में बाल्टिक अधिकारियों द्वारा जब्त या रोके गए जहाज शामिल हैं:
| जहाज | IMO | घटना |
|---|---|---|
| EAGLE S | 9329760 | फ़िनलैंड द्वारा दिसंबर 2024 में जब्त — Estlink-2 केबल तोड़फोड़, जासूसी उपकरण मिले |
| EVENTIN | 9308065 | जर्मनी द्वारा जनवरी-मार्च 2025 में जब्त — Rügen से बहकर, 100,000t रूसी कच्चा तेल जब्त |
| KIWALA | 9332810 | एस्टोनिया द्वारा अप्रैल 2025 में हिरासत में लिया गया — ध्वजहीन, EU/UK प्रतिबंधित |
| JAGUAR | 9293002 | एस्टोनिया द्वारा मई 2025 में रोका गया — रूस ने इसे एस्कॉर्ट करने के लिए Su-35 भेजा |
| KIRA K | 9346720 | दिसंबर 2025 में वैगनर/GRU चालक दल की पुष्टि |
| QENDIL | 9310525 | सितंबर 2025 में वैगनर/GRU चालक दल — दिसंबर 2025 में यूक्रेनी ड्रोन हमला |
| FITBURG | 9250397 | फ़िनलैंड द्वारा 31 दिसंबर 2025 को जब्त — हेलसिंकी-टालिन केबल तोड़फोड़ |
| CAFFA | 9143611 | स्वीडन द्वारा 6 मार्च 2026 को जब्त — चुराया गया यूक्रेनी अनाज, झूठा ध्वज |
| SEA OWL I | 9321172 | स्वीडन द्वारा 12 मार्च 2026 को जब्त — EU प्रतिबंधित, झूठा कोमोरोस ध्वज |
MMSI को वर्तमान AIS डेटा के विरुद्ध सही किया गया है — शैडो फ्लीट जहाज बार-बार ध्वज बदलते हैं। update_vessels_2026_03.sql फ़ाइल स्रोतों के साथ सभी परिवर्तनों का दस्तावेजीकरण करती है।
वॉचलिस्ट जानबूझकर खुली है। ट्रैकर चलने के दौरान सीधे Vessels1.db में जहाज जोड़ें — वे 5 मिनट के भीतर बिना पुनरारंभ के उठा लिए जाएंगे।
Linux / macOS:
sqlite3 Vessels1.db "INSERT OR IGNORE INTO vessels (mmsi, imo, name) VALUES ('123456789', '9999999', 'VESSEL NAME');"
विंडोज़ (sqlite3 CLI की आवश्यकता नहीं):
import sqlite3
conn = sqlite3.connect("Vessels1.db")
conn.execute("INSERT OR IGNORE INTO vessels (mmsi, imo, name) VALUES ('123456789', '9999999', 'VESSEL NAME')")
conn.commit()
conn.close()
Vessels1.db — वॉचलिस्ट
vessels(mmsi TEXT PK, imo TEXT, name TEXT, destination TEXT)
vessel_data_log.db — स्थिति लॉग
vessel_data_log(timestamp, mmsi, name, imo, destination, speed, heading, latitude, longitude, cable_alert)
केवल-जोड़ें। प्रत्येक मानचित्र रेंडर चक्र पर लिखा जाता है।
vessel_static.db — AIS स्थैतिक डेटा कैश
vessel_static(mmsi TEXT PK, name TEXT, imo TEXT, destination TEXT, flag TEXT)
flag_history(id, mmsi, flag, timestamp)
लाइव ShipStaticData AIS संदेशों से भरा गया। प्राप्त होने के बाद Vessels1.db नामों पर प्राथमिकता लेता है। flag_history प्रत्येक ध्वज परिवर्तन को टाइमस्टैम्प के साथ रिकॉर्ड करता है — प्रति-जहाज पृष्ठ पर पुनः-ध्वजीकरण घटनाएँ लॉग और प्रदर्शित की जाती हैं।
loitering_events.db — लॉटरिंग लॉग (रनटाइम पर बनाया गया)
loitering_events(id, mmsi, timestamp, latitude, longitude, near_cable)