Найкоротший шлях — один запит без ключа
Ключ не потрібен, реєстрація не потрібна. Ліміт без ключа — 60 запитів за хвилину з адреси; з безкоштовним ключем — 120.
curl -s https://map.megainet.art/api/alerts.phpУ відповіді: regions — стан 25 областей, updated — коли знято, stale — чи мовчать джерела (тоді віддано останню відому копію). Поле changed_ts каже, КОЛИ стан змінився: за ним рахують тривалість тривоги.
import json, urllib.request
with urllib.request.urlopen("https://map.megainet.art/api/alerts.php") as r:
data = json.load(r)
for iso, region in data["regions"].items():
if region["alert"]:
print(iso, "— тривога")Як не опитувати щосекунди: вебхук замість опитування
Опитування раз на 15 секунд — це 5 760 запитів на добу заради десятка подій. Підписка присилає подію в момент, коли вона сталася.
$ts = $_SERVER['HTTP_X_MAP_TIMESTAMP'] ?? '';
$sig = $_SERVER['HTTP_X_MAP_SIGNATURE'] ?? '';
$body = file_get_contents('php://input');
// Перевіряємо підпис ДО того, як щось зробимо з подією.
if (!hash_equals(hash_hmac('sha256', $ts . "\n" . $body, $SECRET), $sig)) {
http_response_code(401);
exit;
}
$event = json_decode($body, true); // alert.start | alert.endКожна доставка підписана: заголовки X-Map-Timestamp, X-Map-Signature (HMAC-SHA256 від «мітка \n тіло»), X-Map-Event і X-Map-Delivery. Перевіряйте підпис ДО обробки: адресу приймача рано чи пізно дізнаються, і без перевірки будь-хто надішле вам «тривогу» від нашого імені — а по ній, можливо, вмикається сирена на об`єкті.
Не відповіли 2xx — повторимо через 1, 5, 30 хвилин, 2 і 6 годин. Відповідайте 2xx ОДРАЗУ, а свою роботу робіть після: ми чекаємо 8 секунд.
Де взяти історію по областях
Скільки тривог було за добу й скільки годин область провела під тривогою:
curl -s "https://map.megainet.art/api/history.php?hours=24"
curl -s "https://map.megainet.art/api/analytics.php?hours=168"Період — 24, 48 або 168 годин. Межа, про яку треба знати наперед: цілі зберігаються 24 години, стрічка моніторів — 72. Тижневої аналітики ПО ЦІЛЯХ не існує фізично, і жоден параметр її не поверне.
Скільки це коштує
Ядро безкоштовне назавжди. Платять лише за вищий ліміт і за те, щоб не ставити посилання-кредит; вебхуки — теж платні.
Готовий клієнт
Python-клієнт без залежностей (усі методи, перевірка підпису вебхука, готовий приймач) — попросіть посилання на пошті [email protected]: бібліотеку ще не викладено.