- รวมข้อมูลเรียลไทม์หลากหลายประเภท เช่น เครื่องบิน, เรือ, ดาวเทียม, แผ่นดินไหว, ความขัดแย้ง, CCTV, การรบกวน GPS ไว้ใน อินเทอร์เฟซบนระบบสารสนเทศภูมิศาสตร์ เดียว
- สร้างด้วย Next.js, MapLibre GL, FastAPI, Python ทำให้นักวิเคราะห์และนักวิจัยสามารถ มองเห็นกิจกรรมทั่วโลกบนหน้าจอเดียว
- มีความสามารถติดตามเชิงลึกใน 6 หมวดหลัก ได้แก่ การบิน·ทางทะเล·อวกาศ·ภูมิรัฐศาสตร์·การเฝ้าระวัง·ข่าวกรองสัญญาณ และควบคุมแต่ละเลเยอร์ได้แยกกัน
- ปรับใช้ได้ง่ายด้วย Docker/Podman และตั้งค่าสภาพแวดล้อม self-hosted หรือสำหรับพัฒนาได้สะดวกด้วย การทำงานอัตโนมัติในการเชื่อมต่อ API
- ระบุชัดเจนว่าข้อมูลทั้งหมดรวบรวมจาก แหล่ง OSINT สาธารณะ และสามารถใช้ได้เพื่อ การศึกษาและการวิจัยเท่านั้น
ภาพรวม
- ShadowBroker เป็นแดชบอร์ด ข่าวกรองโอเพนซอร์สแบบเรียลไทม์หลายโดเมน (Real-Time OSINT) ที่รวมฟีดข้อมูลสาธารณะหลายสิบแหล่งมาแสดงบน อินเทอร์เฟซแผนที่ธีมมืดแบบเดียว
- ติดตามแบบเรียลไทม์ได้ทั้งเครื่องบิน เรือ ดาวเทียม แผ่นดินไหว พื้นที่ความขัดแย้ง เครือข่าย CCTV การรบกวน GPS และเหตุการณ์ภูมิรัฐศาสตร์
- พัฒนาด้วย Next.js, MapLibre GL, FastAPI, Python และออกแบบมาเป็นเครื่องมือด้านการแสดงผลข้อมูลสำหรับนักวิเคราะห์ นักวิจัย และผู้สนใจ OSINT
กรณีการใช้งานหลัก
- ติดตาม เครื่องบินเจ็ตส่วนตัวของมหาเศรษฐี
- เฝ้าดู การผ่านวงโคจรของดาวเทียม
- เฝ้าระวัง การจราจรทางทะเลทั่วโลก
- ตรวจจับ พื้นที่ที่มีการรบกวน GPS
- สังเกตการณ์ แผ่นดินไหวและภัยพิบัติ แบบเรียลไทม์
สรุปความสามารถ
🛩️ การติดตามการบิน (Aviation Tracking)
- แสดงตำแหน่งเรียลไทม์ของเครื่องบินพาณิชย์กว่า 5,000 ลำผ่าน OpenSky Network
- แยกประเภท อากาศยานส่วนบุคคล·ทางทหาร และติดตาม เครื่องบินเจ็ตธุรกิจที่มีข้อมูลเจ้าของ
- รองรับความสามารถเชิงลึก เช่น สะสมเส้นทางการบิน, ตรวจจับการบินวน, แสดงสถานะภาคพื้นดิน
- มี ไอคอน SVG ที่แม่นยำตามประเภทอากาศยาน
🚢 การติดตามทางทะเล (Maritime Tracking)
- ข้อมูลเรือแบบเรียลไทม์ของเรือกว่า 25,000 ลำผ่าน aisstream.io WebSocket
- แยกสีตามประเภทเรือ (เรือบรรทุกสินค้า เรือบรรทุกน้ำมัน เรือโดยสาร เรือรบ ฯลฯ)
- ประเมินตำแหน่งของ เรือบรรทุกเครื่องบินกองทัพเรือสหรัฐ 11 ลำ ด้วย OSINT และทำ GDELT news scraping แบบอัตโนมัติ
- รองรับ เลเยอร์เฉพาะสำหรับเรือครูซ·เรือโดยสาร และ การแสดงคลัสเตอร์ตามระดับการซูม
🛰️ อวกาศ·ดาวเทียม (Space & Satellites)
- แสดงวงโคจรแบบเรียลไทม์ของดาวเทียมมากกว่า 2,000 ดวงบนพื้นฐาน CelesTrak TLE + SGP4
- แยกสีตามประเภทภารกิจ: ลาดตระเวนทางทหาร (แดง), SAR (ฟ้าน้ำทะเล), SIGINT (ขาว), นำร่อง (น้ำเงิน), เตือนภัยล่วงหน้า (ม่วงแดง), ภาพถ่ายเชิงพาณิชย์ (เขียว), สถานีอวกาศ (ทอง)
🌍 ภูมิรัฐศาสตร์·ความขัดแย้ง (Geopolitics & Conflict)
- รวบรวมเหตุการณ์ความขัดแย้งราว 1,000 รายการในช่วง 8 ชั่วโมงล่าสุดบนพื้นฐาน GDELT
- ข้อมูลแนวหน้าสงครามยูเครนแบบเรียลไทม์จาก DeepState Map
- มี ฟีดข่าว SIGINT/RISINT และ แผงข้อมูลภูมิภาค
- รวมข้อมูล เช่น ประชากร เมืองหลวง ภาษา สกุลเงิน พื้นที่ รูปแบบการปกครอง และข้อมูลผู้นำประเทศ (Wikidata) พร้อมสรุปจาก Wikipedia
📷 การเฝ้าระวัง (Surveillance)
- รวมสตรีมสดจาก กล้อง CCTV จราจรกว่า 2,000 จุด
- เช่น ลอนดอน (TfL), ออสติน (TxDOT), นิวยอร์ก (NYC DOT), สิงคโปร์ (LTA)
- รองรับ การตรวจจับและเรนเดอร์ฟีดอัตโนมัติ และ การแสดงคลัสเตอร์ตามการซูม
📡 ข่าวกรองสัญญาณ (Signal Intelligence)
- ตรวจจับการรบกวน GPS: แสดงภาพพื้นที่ถูกรบกวนจากการวิเคราะห์ค่า NAC-P ของอากาศยาน
- แผงดักรับวิทยุ: มี UI ในลักษณะการดักฟังวิทยุสื่อสาร
🌐 เลเยอร์เพิ่มเติม
- มี ข้อมูลแผ่นดินไหว USGS (24 ชั่วโมง), เส้นแบ่งกลางวัน·กลางคืน, ดัชนีตลาดการเงินแบบเรียลไทม์, เครื่องมือวัดระยะทาง·ทิศทาง
โครงสร้างระบบ
- Frontend (Next.js): แผนที่ 2D WebGL บนพื้นฐาน MapLibre GL, ฟีดข่าว SIGINT, แผงควบคุม, โมดูลตลาด·วิทยุ
- Backend (FastAPI): ดึงข้อมูลตามรอบเวลาจากหลายแหล่ง (OpenSky, adsb.lol, CelesTrak, USGS, GDELT, CCTV ฯลฯ)
- ส่งข้อมูลไปยังฟรอนต์เอนด์ผ่าน REST API ทุก 60~120 วินาที
แหล่งข้อมูลและ API
| แหล่งที่มา |
ข้อมูล |
รอบการอัปเดต |
API key |
| OpenSky Network |
เครื่องบินพาณิชย์·ส่วนบุคคล |
ประมาณ 60 วินาที |
เลือกได้ |
| adsb.lol |
อากาศยานทางทหาร |
ประมาณ 60 วินาที |
ไม่จำเป็น |
| aisstream.io |
ตำแหน่งเรือ |
เรียลไทม์ |
จำเป็น |
| CelesTrak |
วงโคจรดาวเทียม |
ประมาณ 60 วินาที |
ไม่จำเป็น |
| USGS |
แผ่นดินไหว |
ประมาณ 60 วินาที |
ไม่จำเป็น |
| GDELT |
เหตุการณ์ความขัดแย้ง |
ประมาณ 6 ชั่วโมง |
ไม่จำเป็น |
| DeepState Map |
แนวรบยูเครน |
ประมาณ 30 นาที |
ไม่จำเป็น |
| TfL, TxDOT, NYC DOT, LTA |
CCTV จราจร |
ประมาณ 5 นาที |
บางส่วนจำเป็น |
| RestCountries, Wikidata, Wikipedia |
ข้อมูลประเทศ·แผนที่ |
ตามคำขอ |
ไม่จำเป็น |
การติดตั้งและการรัน
บนพื้นฐาน Docker/Podman
- หลัง
git clone สามารถรันอัตโนมัติได้ด้วยคำสั่ง ./compose.sh up -d
- พอร์ตเริ่มต้น: ฟรอนต์เอนด์
3000, แบ็กเอนด์ 8000
- สามารถเปลี่ยนพอร์ตได้ด้วยตัวแปรสภาพแวดล้อม
NEXT_PUBLIC_API_URL
สภาพแวดล้อมพัฒนาสำหรับแก้ไขโค้ด
- ต้องใช้ Node.js 18+, Python 3.10~3.12
- ต้องมี API key ของ
aisstream.io และสามารถเลือกใช้คีย์ของ OpenSky, LTA ได้
- รันฟรอนต์เอนด์และแบ็กเอนด์พร้อมกันด้วย
npm run dev
การควบคุมเลเยอร์ข้อมูล
- สามารถ เปิด/ปิดทุกเลเยอร์แยกกันได้ เช่น เครื่องบิน ดาวเทียม เรือ แผ่นดินไหว CCTV ความขัดแย้ง การรบกวน GPS
- เปิดใช้งานเริ่มต้น: เครื่องบินพาณิชย์·ทางทหาร, ดาวเทียม, เรือบรรทุกเครื่องบิน, แผ่นดินไหว, ความขัดแย้ง, การรบกวน GPS, เส้นแบ่งกลางวัน·กลางคืน
การปรับแต่งประสิทธิภาพ
- เพิ่มประสิทธิภาพการประมวลผลข้อมูลเรียลไทม์ขนาดใหญ่ด้วย การบีบอัด Gzip (92%), ETag caching, viewport culling, cluster rendering, การลดความละเอียดพิกัด (ทศนิยม 5 ตำแหน่ง)
- ลดภาระการเรนเดอร์ด้วย React.memo และ debounce (300ms)
ตัวแปรสภาพแวดล้อม
- จำเป็น:
AIS_API_KEY
- เลือกได้:
OPENSKY_CLIENT_ID, OPENSKY_CLIENT_SECRET, LTA_ACCOUNT_KEY
ข้อจำกัดความรับผิดชอบและไลเซนส์
- ข้อมูลทั้งหมดอ้างอิงจาก แหล่ง OSINT สาธารณะ และ ไม่มีการใช้ข้อมูลส่วนตัวหรือข้อมูลลับ
- ห้ามใช้เพื่อวัตถุประสงค์ทางทหาร·ข่าวกรอง, จำกัดเฉพาะเพื่อการศึกษา·การวิจัย
- ต้อง ปฏิบัติตามข้อกำหนดการใช้งาน ของผู้ให้บริการ API แต่ละราย
โครงสร้างโปรเจกต์
- backend/: แอป FastAPI, ตัวตั้งเวลารวบรวมข้อมูล, การประมวลผลข้อมูล CCTV·เรือบรรทุกเครื่องบิน·ความขัดแย้ง
- frontend/: องค์ประกอบแผนที่·แผงควบคุม·ตัวกรอง·ข่าว·ตลาด·วิทยุ บนพื้นฐาน Next.js
- มีสคริปต์สำหรับปรับใช้อัตโนมัติ เช่น docker-compose.yml, compose.sh
สรุป
- ShadowBroker คือ แพลตฟอร์มโอเพนซอร์สสำหรับรวมและแสดงผลข้อมูล OSINT แบบเรียลไทม์จากทั่วโลก
- วิเคราะห์หลายโดเมนได้ในแผนที่เดียว ทั้ง การบิน·ทางทะเล·อวกาศ·ภูมิรัฐศาสตร์·การเฝ้าระวัง·สัญญาณ
- มี การปรับใช้ด้วย Docker ที่ง่าย, การเรนเดอร์ประสิทธิภาพสูง, ใช้เฉพาะข้อมูลสาธารณะ
- เป็นเครื่องมือข่าวกรองแบบเรียลไทม์ที่มีประโยชน์สำหรับ นักวิจัยด้านความมั่นคง·การวิเคราะห์ข้อมูลข่าวกรอง และวิศวกรข้อมูลในสตาร์ตอัป
5 ความคิดเห็น
Shadow Broker! ไม่ได้ยินชื่อนี้มานานแล้ว ทำให้นึกถึง Mass Effect 2 ขึ้นมาเลย https://masseffect.fandom.com/wiki/Shadow_Broker_(enemy)
อ่านคอมเมนต์ใน Hacker News แล้วหลุดขำเลย
"ในคอมมิตแรกมีการรั่วไหลของ
./frontend/.env.localและ./backend/.envอยู่ในไฟล์ zip""เพราะงั้นมันถึงชื่อว่า OSINT (Open Source Intelligence) ไง ทุกอย่างเปิดเผยหมดเลย"
ลองดาวน์โหลดดูแล้ว มีอยู่จริงครับ
ฮ่าๆ อันนี้ค่อนข้างขำเลยนะ ฮ่าๆๆ
ความคิดเห็นจาก Hacker News
สงสัยว่าการ รับรู้มากเกินไป กับข้อมูลที่ในความเป็นจริงเราไม่สามารถลงมือทำอะไรได้เลยนั้นเป็นสิ่งที่พึงประสงค์จริงหรือไม่ หรือมันเป็นเพียงเส้นทางไปสู่ ความเครียดและความรู้สึกว่าตัวเองไร้ประสิทธิภาพ เท่านั้น
งานปรับแต่ง geojson บางส่วนให้เป็น ไทล์แบบเรียลไทม์ เป็นโปรเจกต์ที่ทั้งสนุกและชวนจดจ่อมากจริงๆ
อยากรู้ว่าเคยดูโปรเจกต์พวกนี้หรือยัง → PMTiles, Martin
เลยทำให้ได้การเคลื่อนไหวบนแผนที่ที่ลื่นไหลแทบจะระดับ แอนิเมชัน 60fps
ภายหลังถ้าจะเก็บถาวรข้อมูลการบินและ AIS บนพื้นฐานของ PostGIS การย้ายไปใช้ Martin ก็น่าจะเหมาะกว่า แต่ตอนนี้สำหรับเป้าหมายแบบเรียลไทม์มันถือว่ามากเกินไป เพราะจะต้องทำให้ tile cache เป็นโมฆะอยู่ตลอด
เคยตั้งค่านี้ในโปรเจกต์ด้านเกษตรมาก่อนและใช้งานได้ดี
โปรเจกต์นี้ดูคล้ายกับ monitor-the-situation.com
คำอธิบายที่ว่า “ShadowBroker is a real-time, full-spectrum geospatial intelligence dashboard” ดูจะโอ้อวดไปหน่อย
รู้สึกว่าคำอย่าง “Air and Space domain awareness” น่าจะแม่นยำกว่า
ปกติแล้ว Geospatial intelligence มักหมายถึงการรวบรวมข่าวกรองจากภาพถ่ายดาวเทียม และ “spectrum” ก็มักใช้ในความหมายของ สเปกตรัมของแสง
ใน commit แรก มีการ รั่วไหล ของ
./frontend/.env.localและ./backend/.envอยู่ในShadowBroker_v0.1.zipโปรเจกต์นี้เจ๋งมาก ทำให้นึกถึงลิงก์นี้
ต้องทำให้เสร็จ แต่ยังไม่มีเวลา
เป็นการ รวมข้อมูล ที่เจ๋งมาก แต่คิดว่าน่าจะเพิ่ม สัญญาณเรื่องความเก่า เข้าไปใน feed pipeline ด้วย
เพราะบางแหล่งข้อมูล (โดยเฉพาะ threat feeds) ไม่ได้อัปเดตทุกไม่กี่วินาที แต่อาจเป็นทุกหลายชั่วโมง ดังนั้นถ้าแสดง เวลาที่อัปเดตล่าสุด ของแต่ละแหล่ง ก็น่าจะช่วยให้ตัดสินความสดใหม่ของข้อมูลได้ดีขึ้น
เจ๋งมาก ขอบคุณที่แชร์
อยากรู้ว่าถ้ารันวันละหลายชั่วโมงต่อเนื่องประมาณหนึ่งเดือน ค่าใช้จ่าย API จะออกมาประมาณเท่าไร อยากรู้ว่าอยู่ในระดับที่พอรับไหวไหม
เป็นโปรเจกต์ที่ดีมาก แต่ทั้งแนวคิด ฟีด และดีไซน์โดยรวมทำให้นึกถึง worldmonitor.app อย่างมาก
เผื่อไว้เป็นข้อมูล ฝั่งนั้นก็เปิดให้บริการแบบ ไลฟ์เซอร์วิส อยู่แล้ว