Wi-Fi без Интернета на рейсе Southwest

—

от автора

Недавний перелёт я провел, пытаясь выяснить, что можно сделать, подключившись к Wi-Fi на борту самолета, но без доступа к Интернету.

Я возвращался домой со Strange Loop прямым рейсом из Сент-Луиса в Окленд. Это достаточно долгий перелет, и я планировал купить доступ в Интернет за 8 долларов и поработать, но Wi-Fi-портал Southwest не принял никакой формы оплаты. Веб-страница не выдала мне никаких полезных сообщений об ошибках, поэтому я открыл инструменты разработчика в браузере, чтобы посмотреть, смогу ли я выяснить, что же не так.

Я нашел ошибочный запрос, но он не дал никаких полезных подсказок, которые указали бы мне путь к решению. Однако, там же я увидел еще один запрос, который привлек мое внимание: повторяющийся успешный запрос current.json.

Вот пример ответа на один из таких запросов:

{   "sat_commlink_portal": {     "status": "conn_ok",     "time": "Sun Sep 24 22:02:19 2023"   },   "pcent_flt_complete": 33,   "altVal": "35998",   "lon": "-100.755",   "satcomm_status": {     "commlink": "active",     "linkparams": "not-stale"   },   "dtzone": "PDT",   "within_us": true,   "etad": "06:19 PM",   "lat": "40.201",   "gspdVal": "487",   "ttgc": "2h 25m",   "dist_remain": "1167",   "actime24": "15:54" }

Похоже, именно эти данные нужны для страницы статуса рейса бортового Wi-Fi-портала. Поскольку это была одна из немногих вещей, к которым я мог получить доступ в этой сети, я решил извлечь из нее максимум пользы.

Я воспользовался функцией браузера «Copy as cURL», чтобы быстро получить команду для запроса. Между прочим, эта функция присутствует в Firefox и всех браузерах на основе Chromium, и она очень удобна, если вам нужно повторить запросы вашего браузера и вы хотите отправить все те же заголовки.

После некоторых экспериментов я обнаружил, что cookie или заголовки, включенные в запрос, не является обязательными, а это означает, что я могу получить данные с помощью простого curl 'https://getconnected.southwestwifi.com/current.json'. Я настроил цикл для вывода данных в лог-файл:

watch -n 30 "curl https://getconnected.southwestwifi.com/current.json | jq -c >> flight-logs"

Я не знал, что буду делать с данными на этом этапе, но сразу начал их собирать, чтобы потом иметь как можно больше данных.

По ходу дела я решил повнимательнее посмотреть на ответы, чтобы понять, с чем именно мне предстоит работать. Вот пример ответа, снабженный моими предположениями о том, что представляют собой поля:

{   // Похоже на информацию о спутниковом интернет-соединении.   "sat_commlink_portal": {     // С соединением всё хорошо!     "status": "conn_ok",     // Я не уверен что это за время.     // Оно вообще не меняется.     "time": "Sun Sep 24 22:02:19 2023"   },    // Процент прогресса текущего полета.   // Я не знаю, про расстояние это или про время.   "pcent_flt_complete": 33,    // Текущая высота.   "altVal": "35998",    // Текущие координаты.   "lat": "40.201",   "lon": "-100.755",    // Выглядит как (дополнительная?) информация о спутниковом интернет-соединении.   "satcomm_status": {     // Соединение активно!     "commlink": "active",     // Что-то не просрочено!     "linkparams": "not-stale"   },    // Часовой пояс пункта назначения этого рейса — PDT.   "dtzone": "PDT",    // Этот рейс в пределах США.   "within_us": true,    // Наше предполагаемое время прибытия в пункт назначения.   "etad": "06:19 PM",    // Наша текущая скорость относительно земли.   "gspdVal": "487",    // Примерное оставшееся время. Может быть, "время до контакта с землей"?   "ttgc": "2h 25m",    // Оставшееся расстояние полета в милях.   "dist_remain": "1167",    // Текущее время в некотором часовом поясе.   "actime24": "15:54" }

По большей части это просто, но мне интересно несколько частей:

  • В чем разница между sat_commlink_portal.status и satcomm_status.commlink?

  • pcent_flt_complete — это расстояние или расчетное время?

  • Насколько сильно меняются значения altVal, etad и gspdVal в течение полета?

  • Что такое ac в actime24? Я бы подумал «aircraft», но в данном случае это время — это текущее время в пункте назначения, а не текущее время в месте нахождения самолета.

В течение полета я работал над скриптами, которые могли бы визуализировать некоторые данные после того, как я закончу их сбор. Вот что у меня получилось:

Изменение высоты с течением времени

Говоря об этом, мне больше всего было любопытно посмотреть, насколько зашумленными будут данные о высоте.

Трудно увидеть шум на таком большом расстоянии. Вот те же данные, но без учета снижения самолета:

Согласно этим данным, высота самолета колебалась всего лишь примерно на 20-30 футов. Это более стабильно, чем я ожидал! Я предполагал, что увижу здесь гораздо больше изменений, но я не знаю, насколько это нормально, и не знаю, насколько точны эти данные.

Изменение расчетного времени прибытия с течением времени

Я предполагал, что оно будет достаточно стабильным, и так оно и было. Полет прошел довольно гладко, по крайней мере, после начала.

Мне любопытно, что было бы, если бы у нас была задержка приземления из-за погоды. Будет ли заявленное расчетное время прибытия постепенно увеличиваться по мере того, как будет расти уверенность авиакомпании в задержке, или оно резко возрастет ближе к концу?

Изменение скорости с течением времени

Она также была стабильной, как и ожидалось.

дополнение: Первоначально я обозначил эти скорости как мили в час, но некоторые читатели HN услужливо отметили, что это, скорее всего, узлы.

Жаль, что я не начал собирать данные раньше в полете. Мне бы хотелось увидеть форму этой кривой при приближении к крейсерской скорости.

Ничего особенно полезного или удивительного я здесь не нашел, но провести полет было весело!


ссылка на оригинал статьи https://habr.com/ru/articles/765046/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *