Блог Книжки

Як московити карту тривог крали

Як московити карту тривог крали

Приблизно рік тому я створив першу (але не найкращу 😅) карту тривог – тоді ще телеграм-каналів не було, як і офіційних інструментів для розробників, тому вони створювались не так часто.

Я часто спілкуюсь з волонтерами розробником найпопулярнішої alerts.in.ua, і у нас є захисти від DDoS-атак. Хоч alerts час від часу намагаються DDoSити з російських/білоруських та інших IP-адрес, але у мене спокійніше та атак не так багато. Я вирішив не блокувати ці регіони, щоб відвідувачі мали доступ з тимчасово окупованих територій – всі інші карти блокують ці регіони. Через це в якийсь час Маріуполь входив у 20 найвідвідуваніших міст:

Московитська карта

Наприкінці жовтня друзі (Макс, привіт!) скинули посилання на російську карту, у коді була інформація про тривоги абсолютно в такому ж форматі, як і я віддаю – виявилось, що «волонтери» створили свій ресурс з картами тривог України та Росії. Іронічно, що автор розуміє – Росії як такої не існує, тому там і немає ніяких інших регіонів, окрім України.

Через те, що мій файл через деякі причини знаходився на DigitalOcean Spaces, я нічого з цим не зміг зробити (я міг лише редагувати файл), то для того, щоб я міг повертати якийсь інший контент для росіян, мені потрібно було перенести на свій сервер, і тому змінилося посилання, яке повинні були всі оновити. Були сумніви, що той розробник не клюне на це, але я його недооцінив – він швиденько прочитав інструкцію, та замінив.

Технічний відступ

В перші дні життя карти я не розраховував, що буде досить великий попит на це, тому сервер в пікові не витримував величезну кількість відвідувачів. Найбільш швидким та безболісним рішенням була ідея перенести файли (враховуючи файл зі статусами тривог, який постійно оновлюється) в DO Spaces (альтернатива S3). Проблема з недоступністю сайту вирішилась, в DO Spaces я за це платив по $60-70 на місяць (запитів було дійсно багато, але там і не лише цей файл лежав). З часом це все оптимізувалось, і залишалось до останніх місяців. Перенос файла назад був трохи болісним (так як багато ресурсів використовувало його, але я попередив про це за місяць тих, хто писав мені листа та запитував за це).

CloudFlare, окрім кешу та захисту від DDoS, дозволяє також додавати свій роутинг в залежності від заданих правил (називається Transform Rules). Так, наприклад, можна всім користувачам (або окремим IP-адресам) з РФ повертати абсолютно інший файл, і вони про це ніяк не дізнаються, якщо не спробують VPN.

Оскільки у мене тепер був повний доступ до статистики та API, то прекрасно видно відвідувачів з Московії, і дуже швидко знайшовся наш цікавий клієнт, який на кожного свого відвідувача робив по одному запиту на мене:

Це не єдиний спосіб визначення, а лише перший крок. Наступні способи були цікавішими, але технічні деталі я буду поки упускати, щоб цю інформацію не використали в корисливих цілях.

«Карта Поломалась»

Спочатку була ідея просто блокувати запити з тієї карти, але ми вирішили, що найкращий спосіб – заплутувати, тому в першій реалізації я приблизно для 30% запитів повертав випадкові дані про сирени. Вийшла ось така от гірлянда:

Звісно, що було щось неочікуване для Ваньки, а якщо не знаєш, що відповідати – кажи, що це DDOS-атака! Абсолютно неважливо, що це, але звучить страшно!

Щоб заплутати, я вирішив вимикати на деякий час генератор випадкових сирен, тому автор трохи підтер сліди, розібрався, і сказав, що це DDoS!

І майже одночасно (після оновлення) зʼявилась заява:

НАТО-сервер

Оскільки, як виявилось, дані про тривоги було перенесено на НАТО-сервера, то було вирішено замість фейкових даних повертатись помилку, що на болотах Московії немає прав на запити до НАТО-ресурсів, тому в цей момент карта у них перестала працювати.

Були трохи інші варіації:

{
 "error": "Can't connect to https://ua-alerts.nato.org",
 "description": "This request originated from Moscovia, a country that is not a member of NATO."
}

Ця помилка була досить неочевидною (на сайті взагалі не виводиться нічого), тому оцінити її зміг лише автор сайту та якісь розробники. На жаль, за день автор ніяк публічно не відреагував на неї, а реакції хотілось, тому час було змінювати стратегію.

Шість років

Мені подобались треди Анатолія Остапенка, де він у ролі співробітника російського підрозділу ППО ЦНАП спілкувався з росіянами, і це була гарна нагода згадати Роскомнадзор.

НАТО-помилка трошечки змінилась:

{
 "error": "РОСКОМНАДЗОР: Данный ресурс заблокирован",
 "description": "Запрашиваемый адрес является НАТО-ресурсом. Просим перейти на отечественный аналог в ближайшее время. В противном случае вам грозит до 6 лет лишения свободы."
}

Щоб отримати хоч якийсь відгук, хтось запитав автора, що там порушується, якщо є така помилка. Як виявилось, треба було перезавантажити та знову заспокоїтись.

Та зʼявилась публічна відповідь:

Наступні потуги

Звісно, що московити нічого не можуть адекватного придумати, тому він просто орендував проксі в Казахстані (на фоні новин, що Московія хоче обходити санкції через Казахстан) та спробував ввести кешування запитів, який було приблизно через 20 хвилин заблоковано.

Далі він змінює ще раз свій сервер та формат результату (тому він не виглядає тепер 1-в-1, як і мій), але автор досить довго намагається зрозуміти, що в назвах областей додатково замінюються кириличні літери «а»/«о»/«у» на аналогічні їм латиницею (ззовні це абсолютно не видно) та пробіл замінюється на нерозривний пробіл – через це стає дуже складно розуміти, що ззовні все є, але чомусь не працює. Також повертались замість відповіді посилання на те саме історичне відео (dQw4w9WgXcQ) та помилкою, що його країна все ще не має жодних прав.

Зараз автор намагається писати багато коду, щоб використовувати інший ресурс, але звісно, що ніякі VPN та проксі йому більше не допоможуть. Так сказати, ми ещо даже не начінали!

Замість поскриптума

Ділитися – це турбота! 🫶

Сподобався допис? Поділіться ним у твітері, фейсбуці або у своєму пабліку в телеграмі!

І якщо раптом ще ніхто вам цього не казав сьогодні – хочу нагадати, що ви прекрасні! ❤️

А ще можна підписатись на нові пости!

Зазвичай я пишу про свої невеликі проєкти, дослідження, про прочитані книжки та все цікаве, що знаходжу для себе. Без спаму та ChatGPT – лише мій крафтовий контент!

Анонси також можна побачити у мене в твітері, блускаї або підписатись на RSS.

© Клименко Вадим
[email protected]
Підписочка
На e-mail або RSS
Соцмережі
Твітер / Блускай / Фейсбук
Цікавеньке
Блогрол
Створено під час повітряних бледін у  Fill 3 Києві