A magyar kormánygépek repülési adatai publikusak. Az ADS-B transponder, amit minden kereskedelmi forgalomban lévő gép köteles folyamatosan sugározni, bárhol a világon fogható egy ~30 eurós antennával. Az ADS-B Exchange egy önkéntes-alapú oldal, ahol ezek a jelzések globálisan aggregálódnak. A 604-es, 605-ös, 607-es lajstromjelű Dassault Falconok pályája ugyanúgy ott van, mint az amszterdami KLM 1257-é.

Ami viszont nem létezett: egy magyar-specifikus aggregátor. Olyan, ami kizárólag a kormánygépeket és a velük kapcsolatban lévő, Magyarország szempontjából érdekes gépeket (NER-közeli magángépek, oligarcha-járatok) mutatja. Ezt csináltam meg egy hétvége alatt.

Mi a lista amit figyelünk?

Húsz ICAO hex-kód, kb. három kategóriában:

A lista közhírrel szerezhető. Nem titkosszolgálati munka, nem magánnyomozás — nyilvános lajstromadatbázis + ADS-B publikus jelek.

20
ICAO kód figyelve percenként
16 936
pozíció logolva eddig
591
fel- és leszállás detektálva

Az architektúra szinte egyszerű

Nincs backend-framework, nincs SaaS, nincs cloud. Csak három fájl egy PHP-s szerveren:

  1. adsbx_cron.php — percenként lefut crontab-ból. Végigmegy a 20 ICAO kódon, mindegyikhez letölti az ADS-B Exchange publikus trace-JSON-ját, kiemeli a legutolsó pozíciót (lat, lon, magasság, sebesség, irány, on-ground flag), és beszúr egy rekordot az SQLite-ba.
  2. adsbx_history.php — egy JSON API, amit a frontend hív. Visszaad historikus pozíciókat és eseményeket egy adott gépre vagy mindenre, időszakra szűrve.
  3. govplane_tracker.html — egyetlen statikus HTML Leaflet térképpel, sidebar listával, élő telemetria panellel, idővonallal. A history API-t hívja, és rendereli a track-okat a térképen.

Az SQLite a PHP-ba épített SQLite3 osztályon keresztül kezelhető, semmi komolyabb ORM. Két tábla: positions (minden percenkénti pozíció-snapshot) és events (fel- és leszállások). Egy indexelt séma, semmi bonyolult.

Fel- vagy leszállás detekció

Az ADS-B pozíciós mezőjében van egy on_ground bit: a gép maga mondja, hogy a földön van-e vagy levegőben. A cron minden új pozíciónál megnézi, mi volt az előző logolt állapot. Ha ez átcsapott:

Beszúrunk egy eseményt az events táblába a pontos időponttal és koordinátákkal. Egyszerű, de megbízható. A cron log standard output-ja (/var/log/govplane.log-ra van átirányítva) aktív időben tartalmaz időbélyeges eseménysorokat:

2026-03-20 14:07:23 EVENT: 604 (477ff4) takeoff at 47.43918,19.26145

Adatvédelmi gondolatok — ami nem lopás

Ez egy olyan projekt, amiről érdemes beszélni. Három kérdés érdekel:

Közérdekű vs. magánügy

Egy kormánygép közpénzből üzemel. Mozgása közérdekű információ — mikor hol van a kormány flottája. Ellenben egy magángép a tulajdonosának magánügye — még ha NER-közeli oligarcháé is. A kérdés: hol a határ?

Jogi szempontból Magyarországon nincs külön jogszabály, ami tiltaná az ADS-B aggregálását (az adatokat a gép maga sugározza szabadon). Etikai szempontból viszont a közérdek felülírja a magánügyet, amikor politikai döntéshozók vagy köztisztviselők mozgásáról van szó.

A személyes szabályom: csak olyan gépet trackelek, amelynek köztisztviselői vagy közpénz-kezelői használata publikusan dokumentált. Nem Dobd-rá egy ismeretlen magángépet, mert ez nem oknyomozás. És nem publikálok pontos úticélt real-time — csak „felszállt Budapestről", „leszállt Münchenben", mert az adatok egyórás fagyással érkeznek a public API-ról.

A frontend amire büszke vagyok

Egyetlen HTML-ben van, 40 KB, semmilyen keretrendszer. Mégis csinál pár trükkös dolgot:

Ami a tanulság

Egy jó scraper nem rocket science. Az ADS-B Exchange public URL-jei mindenki számára elérhetőek. A trükk benne az volt, hogy a curl-es Referer header beállítását megtaláltam — anélkül 403-at adnak. Ha van.

Az SQLite néha elég. 17 000 sor + index + query-k csoportonként — ez egy modern SSD-n mikroszekundumok. Nem kell PostgreSQL, nem kell cloud, nem kell index-karbantartás. Amíg nem lesz milliós sor, addig semmit nem kell skálázni.

A publikus adat közérdek. Nem azért építettem ezt, hogy valakit bajba kevertem — azért, mert a közpénzből üzemelt gépek mozgása legitim közéleti információ. Ez a demokratikus közlés része: ki hol van, mikor, és ezt bárki meg tudja nézni.

Ha érdekel

A tracker élőben fut itt: govplane_tracker.html. Kattints rá, és ha van éppen fel- vagy leszálló gép, élőben látod. Az eseményeket percenként frissíti.

A nyilvánosság nem akkor kezdődik, amikor a politikus bemutatkozik — hanem amikor te is látod azt, amit ő rég lát.